
أحدث إصدار من الماسحات الضوئية لثغرة كشف أسماء الملفات القصيرة (8.3) في IIS
أحدث عرض تقديمي:
أحدث منشور مدونة:
أوصي الجميع بتجربة أداة @bitquark الجديدة بلغة Go قبل تجربة هذه الأداة القديمة: https://github.com/bitquark/shortscan
أحدث إصدار من الماسح لثغرة كشف أسماء الملفات القصيرة لـ IIS (8.3) باستخدام حرف التلدة (~). تم اكتشاف هذه المشكلة في عام 2010 لكنها تطورت عدة مرات منذ ذلك الحين.
هذه أداة قديمة والكود معقد (spaghetti)، لكنها قادرة على معالجة حتى أحدث إصدارات IIS (IIS 10 على Windows Server 2022 وقت كتابة هذا)! تم تحديثها مؤخرًا، لذلك يمكنها دعم إرسال طرق HTTP مخصصة دون اختراقات انعكاس في Java. ومع ذلك، حاول بعض الباحثين الرائعين إعادة تنفيذ هذه الأداة باستخدام تقنيات أخرى مثل Go، وعندما تصبح ناضجة، ربما تعمل بشكل أفضل من هذه.
يحتوي Microsoft IIS على خلل قد يؤدي إلى كشف معلومات غير مصرح به. يتم تشغيل المشكلة أثناء تحليل طلب يحتوي على حرف التلدة (~). قد يسمح هذا لمهاجم عن بعد بالحصول على معلومات أسماء الملفات والمجلدات.
تم نقل هذا الماسح من https://code.google.com/p/iis-shortname-scanner-poc/ إلى GitHub للحصول على دعم أفضل.
ملف البحث الأصلي: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
من الممكن كشف الأسماء القصيرة للملفات والدلائل التي لها مرادف 8.3 في Windows باستخدام بعض المتجهات في عدة إصدارات من Microsoft IIS. على سبيل المثال، من الممكن كشف جميع الأسماء القصيرة لملفات ".aspx" حيث أن امتداداتها تحتوي على 4 أحرف.
ملاحظة: تم إدخال تقنيات جديدة في أحدث إصدارات هذا الماسح، ويمكنه الآن مسح IIS10 عندما يكون ضعيفًا.
ليس من السهل العثور على أسماء الملفات أو المجلدات الأصلية بناءً على الأسماء القصيرة. ومع ذلك، يوصى بالطرق التالية كأمثلة:
تم تجميع الإصدار الأخير باستخدام Open JDK 18 (تمت إزالة ملفات jar القديمة لإصدارات JDK الأخرى ولكن يمكن العثور عليها في تاريخ Git).
ستحتاج إلى تنزيل الملفات في دليل /release لاستخدام هذا التطبيق القديم!
يمكنك أيضًا تجميع هذا التطبيق بنفسك. يرجى إرسال أي مشكلات في GitHub لمزيد من التحقيق.
الاستخدام 1 (للتحقق مما إذا كان الهدف ضعيفًا باستخدام ملف التكوين الافتراضي):
java -jar iis_shortname_scanner.jar [URL]
الاستخدام 2 (للعثور على أسماء ملفات 8.3 باستخدام ملف التكوين الافتراضي):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
الاستخدام 3 (للتحقق مما إذا كان الهدف ضعيفًا باستخدام ملف تكوين جديد):
java -jar iis_shortname_scanner.jar [URL] [configFile]
الاستخدام 4 (للعثور على أسماء ملفات 8.3 باستخدام ملف تكوين جديد):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
الاستخدام 5 (لمسح أهداف متعددة باستخدام نظام Linux):
./multi_targets.sh <scope file> <is_default_https (1=https)>
التفاصيل:
[ShowProgress]: 0= إظهار النتائج النهائية فقط - 1= إظهار النتائج النهائية خطوة بخطوة - 2= إظهار التقدم
[ThreadNumbers]: 0= لا يوجد خيط - رقم صحيح = عدد الخيوط المتزامنة [كن حذرًا بشأن رفض الخدمة لـ IIS]
[URL]: عنوان URL كامل - يبدأ ببروتوكول http/https
[configFile]: مسار إلى ملف تكوين جديد يعتمد على config.xml
أمثلة:
- مثال 0 (لمعرفة ما إذا كان الهدف ضعيفًا):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- مثال 1 (بدون خيوط - بطيء جدًا):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- مثال 2 (استخدام 20 خيطًا - موصى به):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- مثال 3 (حفظ المخرجات في ملف نصي):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- مثال 4 (تجاوز المصادقة الأساسية لـ IIS):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- مثال 5 (استخدام ملف تكوين جديد):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- مثال 6 (مسح أهداف متعددة باستخدام نظام Linux):
./multi_targets.sh scope.txt 1
ملاحظة 1: قم بتحرير ملف config.xml لتغيير إعدادات الماسح وإضافة رؤوس إضافية. ملاحظة 2: أحيانًا لا يعمل من المرة الأولى، وتحتاج إلى المحاولة مرة أخرى.
في الأمثلة التالية، يستجيب IIS برسالة مختلفة عند وجود ملف:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
ومع ذلك، قد تستجيب خوادم IIS المختلفة بشكل مختلف، وعلى سبيل المثال قد يعمل بعضها مع الأنماط التالية أو غيرها المشابهة:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
طريقة إرسال الطلب مثل GET، POST، OPTIONS، DEBUG، ... مهمة أيضًا.
أعتقد أن مراقبة الطلبات باستخدام وكيل هي أفضل طريقة لفهم هذه المشكلة وهذا الماسح.
لن يقوم Microsoft بتصحيح هذه المشكلة الأمنية. كان ردهم الأخير كالتالي:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
لذلك، يوصى بنشر IIS مع تعطيل أسماء 8.3 عن طريق إنشاء مفتاح التسجيل التالي على نظام تشغيل Windows:
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
ملاحظة: يجب إعادة إنشاء مجلد الويب، لأن التغيير في إدخال التسجيل NtfsDisable8dot3NameCreation يؤثر فقط على الملفات والدلائل التي يتم إنشاؤها بعد التغيير، لذا فإن الملفات الموجودة بالفعل لا تتأثر.
بناء الصورة:
docker build . -t shortname
وضع الملف:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
وضع فردي:
docker run shortname 2 20 http://example.com
استبدال ملف التكوين:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
روابط بحثية:
مرجع موقع:
روابط فيديو:
روابط أخرى: