
استغلال إثبات المفهوم لـ CVE-2022-22536، يوضح تهريب طلبات HTTP وتسميم ذاكرة التخزين المؤقت ضد خوادم SAP NetWeaver للمساس بالسرية والنزاهة والتوافر.
خوادم SAP NetWeaver Application Server ABAP وSAP NetWeaver Application Server Java وABAP Platform وSAP Content Server 7.53 وSAP Web Dispatcher عرضة لتهريب الطلبات (request smuggling) وتسلسل الطلبات (request concatenation). يمكن لمهاجم غير مصادق أن يسبق طلب الضحية ببيانات عشوائية. بهذه الطريقة، يمكن للمهاجم تنفيذ وظائف بانتحال شخصية الضحية أو تسميم مخابئ الويب الوسيطة. قد يؤدي الهجوم الناجح إلى اختراق كامل لسرية النظام وسلامته وتوافره.
ما يفعله المهاجم هنا لاستغلال هذه الثغرة هو إساءة استخدام عدم التزامن (Desynchronization) في الطريقة التي يعالج بها خادم تطبيقات SAP الطلبات ويخزنها، وتُعرف هذه الطريقة بـ memory pipes.
بشكل أساسي، يمكن للمهاجم إرسال مجموعة من طلبات HTTP دون مصادقة عبر البروكسي إلى خادم SAP.
ويؤدي ذلك إلى إحداث عدم تزامن في الاستجابات بطريقة تسمح للمهاجم بتسميم ذاكرة التخزين المؤقت للبروكسي الوسيط.
في المرة التالية التي يطلب فيها مستخدم نهائي صالح عنوان URL هذا من النظام، سيقوم البروكسي فعليًا بتسليم الحمولة الخبيثة التي عدّلها المهاجم أو نفّذها.
طريقة سهلة لفهم ذلك: يمكن للمهاجم تعديل شاشة تسجيل الدخول في SAP، وفي المرة التالية التي يحاول فيها مستخدم SAP صالح تسجيل الدخول إلى النظام، سيقوم بإدخال بيانات اعتماده في موقع ويب يتحكم فيه المهاجم، وبذلك يتمكن المهاجم من سرقة هذه البيانات.
إذا تمكن مهاجم غير مصادق من استغلال ثغرات ICMAD بنجاح، فقد يكون التأثير على الأعمال بالغ الخطورة.
شخصيًا، أعتقد أن الخيار الأفضل للتحقق من الثغرة هو Burpsuite > فحص تهريب الطلبات يدويًا. تتوفر نصوص Python محدودة في الخارج، لكن يبدو أنها تخزّن المشكلة مؤقتًا، ولست متأكدًا من السبب.
هذه النصوص جيدة حقًا، لكن شخصيًا أنصح باستخدام Burpsuite > التحقق اليدوي من تهريب الطلبات.
https://github.com/Onapsis/onapsis_icmad_scanner/blob/master/src/ICMAD_scanner.py @Onapsis
https://github.com/antx-code/CVE-2022-22536/blob/main/CVE-2022-22536.py @antx-code
نص Python يقوم أساسًا باستغلال الثغرة، وهو ليس شيئًا يفحص النظام ويخبرك فقط ما إذا كان عرضة للثغرة أم لا.
يرسل النص طلبات متعددة تحتوي على الحمولة (payload) التي تسبب “عدم التزامن” على خادم البروكسي، وعند تقديم الطلب التالي، يتحقق النص من استجابة الطلب الخاطئ، مما يثبت وجود الثغرة.
sap_path الذي يمكنك اختباره:
/sap/admin/public/default.html &
`/sap/public/bc/ur/Login/assets/corbu/sap_logo.png````
GET /sap/admin/public/default.html HTTP/1.1
Host: {{target}}
Content-Length: 82700
Connection: close