XXE (XML External Entities)
كيف يتيح محلل XML الذي يحل الكيانات الخارجية للمهاجم قراءة ملفات الخادم والوصول لخدمات داخلية ولماذا تعطيل الكيانات هو الحل الوحيد
- المسار
- أمن الويب
- الوقت المتوقع
- 25 د
- المستوى
- متوسط
قبل هذا الدرس
XML يقدر يعرف كيانات أسماء تنوب عن نص مثل &
ويسمح أيضا بكيانات خارجية قيمتها تحمل من رابط يحدده المستند
لو حلل الخادم XML من المهاجم والكيانات الخارجية مفعلة فالمهاجم يعرف كيانا يشير لملف في الخادم أو رابط داخلي فيجلبه المحلل ويضع محتواه في المستند
ما هي الثغرة؟
<!DOCTYPE r [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<r>&xxe;</r>التعريف <!ENTITY ... SYSTEM "url"> يعرف كيانا خارجيا و &xxe; يشير إليه
المحلل المعطوب يحل file:///etc/passwd فيصبح المستند <r>root:x:0:0:...</r>
ميزة الاستيراد قرأت لك ملف خادم
ليش تصير؟
الكيانات الخارجية ميزة XML قديمة مفعلة افتراضيا في محللات كثيرة ولا يحتاجها أي تطبيق تقريبا لما يثق المحلل بالمستند ليخبره بما يحمل فإن XML المهاجم يخبره بتحميل الأسرار
أبعد من قراءة الملفات
- منع كلمة امنع
SYSTEMوتبقىPUBLICتعرف كيانا خارجيا برابط القائمة السوداء للكلمات ناقصة وتتجاوزها في اللاب المتوسط - XXE يصبح SSRF امنع
file://ويبقى كيانhttp://يصل للشبكة فيتحول XXE إلى تزوير طلب من جهة الخادم الخادم يجلب رابطا تختاره فيصل لخدمات داخلية يراها ولا تراها أنت فيجلب الخادم روابط داخلية ومنها خدمة بيانات السحابة وتفعل هذا بالضبط في اللاب الصعب
كيف تنحمى منها
// Disable DTDs and external entities entirely (option names vary by library).
const parser = new XMLParser({ resolveExternalEntities: false, processEntities: false });
parser.parse(xml);
// Or simply accept JSON, which has no entities at all.عطل معالجة DTD وحل الكيانات الخارجية في المحلل ولا تحاول فلترة الكلمات أو البروتوكولات فدائما يوجد غيرها وإذا لم تحتج XML فاستخدم JSON واعزل الخدمة شبكيا حتى لو حدث SSRF عبر XXE لا يصل شيئا حساسا
اللابات
كيان خارجي يقرأ ملفا
محلولسهللاب في المتصفح
عرف كيانا خارجيا يقرأ /etc/passwd واجعل المستند يعرض محتواه
ادخل اللابمقفليمنع كلمة واحدة
محلولمتوسطلاب في المتصفح
اقرأ /etc/passwd مرة أخرى متجاوزا منع SYSTEM
ادخل اللابمقفلكيان يصل للشبكة
محلولصعبلاب في المتصفح
استخدم كيان XML خارجيا عبر http للوصول لخدمة بيانات السحابة وسرقة مفاتيح الوصول
ادخل اللابمقفل
