XXE: كيان XML خارجي

صورة
سنشرح في هذه المقالة ماهية حقن كيانات XML الخارجية ، ووصف بعض الأمثلة الشائعة ، وشرح كيفية العثور على أنواع مختلفة من حقن XXE واستخدامها ، وكذلك تعميم كيفية منع الهجمات بمساعدتهم.

ما هو حقن كيانات XML الخارجية؟


يعد حقن كيانات XML الخارجية (يُعرف أيضًا باسم XXE) ثغرة أمنية على الويب والتي قد تسمح للمهاجم بالتدخل في معالجة بيانات XML بواسطة تطبيق ما. غالبًا ما يسمح للمهاجم بعرض الملفات في نظام ملفات خادم التطبيق والتفاعل مع أي خادم أو أنظمة خارجية يمكن للتطبيق نفسه الوصول إليها.

في بعض الحالات ، يمكن للمهاجم الاستفادة من هجوم XXE لخرق خادم أساسي أو أي بنية أساسية داخلية أخرى عن طريق استغلال ثغرة XXE لتنفيذ هجمات تزوير طلب جانب الخادم (SSRFs).

كيف تنشأ نقاط الضعف XXE؟


تستخدم بعض التطبيقات تنسيق XML لنقل البيانات بين المستعرض والخادم. تستخدم التطبيقات التي تفعل ذلك دائمًا واجهة برمجة تطبيقات المكتبة أو النظام الأساسي القياسية لمعالجة بيانات XML على الخادم. تنشأ ثغرات XXE لأن مواصفات XML تحتوي على وظائف متعددة يحتمل أن تكون خطرة ، والمحللات المعيارية تدعم هذه الوظائف ، حتى لو لم يتم استخدامها عادةً من قبل التطبيق.

كيانات XML الخارجية هي نوع من كيانات XML المخصصة التي يتم تحميل قيمها المحددة من ملفات DTD التي تمت كتابتها بها. تعد الكيانات الخارجية مثيرة للاهتمام بشكل خاص من وجهة نظر الأمان ، لأنها تتيح لك تحديد كيان بناءً على محتويات مسار الملف أو عنوان URL.

ما هي أنواع هجمات XXE الموجودة؟


  • استخدام XXE لاستخراج الملفات ، حيث يتم تحديد كيان خارجي بما في ذلك محتويات الملف وإعادته في استجابة التطبيق.
  • استخدام XXE لتنفيذ هجمات SSRF ، حيث يتم تحديد كيان خارجي بناءً على عنوان URL للنظام الداخلي.
  • باستخدام الاستخراج الأعمى لمعلومات XXE على قناة التحكم ، حيث يتم نقل البيانات الحساسة من خادم التطبيق إلى النظام الذي يتحكم فيه المهاجم.
  • استخدام أداة XXE الأعمى لإرجاع البيانات من رسائل الخطأ عندما يمكن للمهاجم تشغيل رسالة خطأ تحتوي على المعلومات الضرورية.
  • باستخدام XXE لاستخراج الملفات

لتنفيذ هجوم على حقن النموذج XXE ، الذي يستخرج ملفًا اعتباطيًا من نظام ملفات الخادم ، يجب تعديل XML المقدم بإحدى طريقتين:

  • أدخل (أو قم بتعديل) عنصر DOCTYPE الذي يحدد الكيان الخارجي الذي يحتوي على مسار الملف.
  • تغيير قيمة البيانات في XML التي تم إرجاعها في استجابة التطبيق لاستخدام كيان خارجي معين.

على سبيل المثال ، افترض أن تطبيق التسوق يتحقق من كمية مخزون المنتجات عن طريق إرسال XML التالي إلى الخادم:

<?xml version="1.0" encoding="UTF-8"?> <stockCheck><productId>381</productId></stockCheck>      XXE,     XXE    /etc/passwd,    XXE: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <stockCheck><productId>&xxe;</productId></stockCheck> 

تحدد بنية XXE هذه كيانًا خارجيًا & xxe ، تكون قيمته هي محتويات الملف / etc / passwd ، ويستخدم كيانًا ذي قيمة productId. هذا يؤدي استجابة التطبيق لتضمين محتويات الملف:

 Invalid product ID: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin ... 

في حالة وجود ثغرات حقيقية في XXE ، غالبًا ما يكون هناك عدد كبير من قيم البيانات في XML المقدم ، والتي يمكن استخدام أي منها في استجابة التطبيق. للاختبار المنهجي لثغرات XXE ، كقاعدة عامة ، سيكون من الضروري التحقق من كل عقدة بيانات في XML بشكل فردي ، باستخدام كيان محدد ومعرفة حالة الاستجابة.

بالإضافة إلى استخراج البيانات الحساسة ، هناك طريقة أخرى لاستخدام هجمات XXE وهي استخدامها لتزييف الطلبات من جانب الخادم (SSRF).

هذه ثغرة أمنية محتملة ؛ مع مساعدتها ، يمكن استخدام تطبيق الخادم لتنفيذ طلبات HTTP إلى أي عنوان URL يمكن للخادم الوصول إليه.

لاستخدام مشكلة عدم حصانة XXE لتنفيذ هجوم SSRF ، يجب عليك تحديد كيان XML خارجي باستخدام عنوان URL الذي تريد الوصول إليه واستخدام كيان محدد بقيمة بيانات. إذا كنت تستطيع استخدام كيان معين بقيمة البيانات التي يتم إرجاعها في استجابة التطبيق ، يمكنك عرض الاستجابة من URL في استجابة التطبيق وبالتالي الحصول على تفاعل ثنائي الاتجاه مع نظام الخادم. إذا لم يكن الأمر كذلك ، يمكنك فقط تنفيذ هجمات SSRF العمياء (والتي يمكن أن يكون لها أيضًا عواقب وخيمة).

في المثال التالي باستخدام XXE ، يفرض كيان خارجي على الخادم تنفيذ طلب HTTP داخلي على النظام الداخلي داخل بنية النظام الأساسية:

 <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal.vulnerable-website.com/"> ]> 

باستخدام XXE لتنفيذ هجمات SSRF:


العديد من أنواع الثغرات XXE عمياء. هذا يعني أن التطبيق لا يُرجع قيمة أي كيانات خارجية محددة في استجاباته ، وبالتالي فإن البحث المباشر عن الملفات على جانب الخادم أمر مستحيل.

لا يزال من الممكن اكتشاف الثغرات الأمنية العمياء في XXE واستغلالها ، ولكن هناك حاجة إلى مزيد من الأساليب المتقدمة. في بعض الأحيان ، يمكنك استخدام الطرق الخارجية للبحث عن الثغرات الأمنية واستخدامها لاستكشاف البيانات. يمكن أن يتسبب أيضًا في بعض الأحيان في أخطاء تحليل XML التي تؤدي إلى الكشف عن البيانات الحساسة في رسائل الخطأ.

بحث واستخدام نقاط الضعف العمياء XXE:


القدرة على الهجوم باستخدام حقن XXE واضحة في كثير من الحالات ، حيث أن حركة مرور HTTP العادية للتطبيق تتضمن طلبات تحتوي على بيانات XML. في حالات أخرى ، تكون القدرة على الهجوم أقل وضوحًا. ومع ذلك ، إذا نظرت إلى الأماكن الصحيحة ، فستجد فرصة لهجوم XXE في الاستعلامات التي لا تحتوي على XML.

XInclude الهجمات


بعض التطبيقات تتلقى البيانات المرسلة من قبل العميل ، وإدخالها على جانب الخادم في مستند XML ، ثم تحليلها. مثال على ذلك هو عندما يتم وضع بيانات العميل في طلب الواجهة الخلفية لـ SOAP ، والتي تتم معالجتها بعد ذلك بواسطة خدمة الواجهة الخلفية لـ SOAP.

في هذه الحالة ، لا يمكنك تشغيل هجوم XXE الكلاسيكي لأنك لا تتحكم في مستند XML بأكمله ، وبالتالي لا يمكنك تحديد أو تعديل عنصر DOCTYPE. ومع ذلك ، يمكنك استخدام XInclude بدلاً من ذلك. XInclude جزء من مواصفات XML ، والذي يسمح لك بإنشاء مستند XML من المستندات المتداخلة. يمكنك وضع هجوم XInclude على أي قيمة بيانات في مستند XML ، بحيث يمكن تنفيذ الهجوم في المواقف التي تدير فيها عنصر بيانات واحد فقط في مستند XML على جانب الخادم.

لتنفيذ هجوم XInclude ، يجب عليك الرجوع إلى مساحة اسم XInclude وتحديد المسار إلى الملف الذي تريد تضمينه. على سبيل المثال:

 <foo xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include parse="text" href="file:///etc/passwd"/></foo> 

تتيح بعض التطبيقات للمستخدمين تحميل الملفات ، والتي تتم معالجتها بعد ذلك على جانب الخادم. تستخدم بعض تنسيقات الملفات الشائعة XML أو تحتوي على مكونات فرعية XML. أمثلة تنسيقات XML هي تنسيقات مستندات Office مثل DOCX وتنسيقات الصور مثل SVG.

على سبيل المثال ، قد يسمح التطبيق للمستخدمين بتحميل الصور ومعالجتها أو التحقق منها على الخادم بعد التنزيل. حتى إذا كان التطبيق يتوقع استلام تنسيق PNG أو JPEG ، فقد تدعم مكتبة معالجة الصور المستخدمة صور SVG. نظرًا لأن تنسيق SVG يستخدم XML ، يمكن للمهاجم إرسال صورة SVG ضارة وبالتالي يكون قادرًا على مهاجمة الثغرات XXE.

باستخدام XXE عن طريق تحميل ملفات الصور:


تستخدم معظم طلبات POST نوع المحتوى الافتراضي الذي تم إنشاؤه بواسطة نماذج HTML ، مثل application / x-www-form-urlencoded. تتوقع بعض المواقع تلقي طلبات بهذا التنسيق ، لكن تسمح لأنواع أخرى من المحتوى ، بما في ذلك XML.

على سبيل المثال ، إذا كان الطلب العادي يحتوي على ما يلي:

 POST /action HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 7 foo=bar         : POST /action HTTP/1.0 Content-Type: text/xml Content-Length: 52 <?xml version="1.0" encoding="UTF-8"?><foo>bar</foo> 

إذا قبل أحد التطبيقات الطلبات التي تحتوي على XML في نص الرسالة وقام بتوزيع المحتوى كـ XML ، يمكنك الحصول على فرصة لمهاجمة XXE ببساطة عن طريق إعادة تنسيق الطلبات لاستخدام تنسيق XML.

كيفية البحث والتحقق من الثغرات XXE


يمكن العثور على الغالبية العظمى من ثغرات XXE بسرعة وبشكل موثوق باستخدام Burp Suite Web Scanner.

  • يشتمل الاختبار اليدوي لنقاط الضعف في XXE على:
  • اختبار استخراج الملف عن طريق تحديد كيان خارجي بناءً على ملف نظام تشغيل معروف واستخدام هذا الكائن في البيانات التي يتم إرجاعها في استجابة التطبيق.
  • اختبار نقاط الضعف العمياء في XXE عن طريق تحديد كيان خارجي بناءً على عنوان URL للنظام الذي تديره ومراقب التفاعل مع هذا النظام. عميل Burp Collaborator مثالي لهذا الغرض.
  • اختبار للتضمين الضعيف لبيانات مستخدم غير XML في مستند خادم XML باستخدام هجوم XInclude لمحاولة الحصول على ملف نظام تشغيل معروف.

كيفية منع الثغرات XXE


تنشأ جميع ثغرات XXE تقريبًا لأن مكتبة تحليل تطبيق XML تدعم وظائف XML التي يحتمل أن تكون خطرة والتي لا يحتاجها التطبيق أو لا يقصد به استخدامها. الطريقة الأسهل والأكثر فعالية لمنع هجمات XXE هي تعطيل هذه الميزات.

كقاعدة عامة ، يكفي تعطيل دقة الكيانات الخارجية وتعطيل دعم XInclude. يمكن القيام بذلك عادة باستخدام خيارات التكوين أو تجاوز السلوك الافتراضي برمجياً. لمزيد من المعلومات حول تعطيل الميزات غير الضرورية ، راجع وثائق مكتبة XML أو API التي تحلل اللغة.



يمكنك استخدام المختبرات المتخصصة كأرض تدريب لاختبار مهارات استغلال هذه الثغرات الأمنية.



تتوفر أحدث تكوينات المعالج المزدوج للخوادم المخصصة مع معالجات Intel Scalable 2019 على DEDIC.SH :
  • 2x زيون سيلفر 4214 - ما مجموعه 24 النوى
  • 2x زيون الذهب 5218 - ما مجموعه 32 النوى
  • 2x زيون الذهب 6240 - التكوين مع 36 النوى.

تكلفة الخادم مع اثنين من زيون سيلفر 4214 - من 15210 روبل / شهر
نحن مستعدون أيضًا لجمع أي تكوين من أجلك - اكتب لنا !

إذا لم تكن هناك حاجة لقوى كبيرة من خادم مخصص - VDS من 150 روبل / شهر هو ما تحتاجه!

Source: https://habr.com/ru/post/ar454614/


All Articles