Shocker
======================
أداة للعثور على الخوادم المعرضة لثغرة Shellshock واستغلالها
المرجع: https://en.wikipedia.org/wiki/Shellshock_(software_bug)
صدر كمصدر مفتوح بواسطة NCC Group Plc - https://www.nccgroup.trust/
طور بواسطة:
- Tom Watson, tom [dot] watson [at] nccgroup [dot] trust
https://github.com/nccgroup/shocker
صدر تحت رخصة AGPL، راجع LICENSE لمزيد من المعلومات
نص المساعدة
الاستخدام:
shocker.py
-h, --help يعرض رسالة المساعدة هذه ويخرج
--Host HOST, -H HOST
اسم مضيف أو عنوان IP مستهدف
--file FILE, -f FILE ملف يحتوي على قائمة بالأهداف
--port PORT, -p PORT رقم المنفذ المستهدف (الافتراضي=80)
--command COMMAND الأمر المراد تنفيذه (الافتراضي=/bin/uname -a)
--cgi CGI, -c CGI CGI واحد للفحص (مثل /cgi-bin/test.cgi)
--proxy PROXY معطل قليلاً حالياً وسيط بالشكل 'ip:port'
--ssl, -s استخدام SSL (الافتراضي=False)
--threads THREADS, -t THREADS
الحد الأقصى لعدد الخيوط (الافتراضي=10، الحد الأقصى=100)
--verbose, -v إخراج تفصيلي
أمثلة الاستخدام
./shocker.py -H 127.0.0.1 --command "/bin/cat /etc/passwd" -c /cgi-bin/test.cgi
يفحص http://127.0.0.1/cgi-bin/test.cgi، وإذا وجد يحاول عرض /etc/passwd
./shocker.py -H www.example.com -p 8001 -s
يفحص www.example.com على المنفذ 8001 باستخدام SSL لجميع السكريبتات في cgi_list ويحاول استغلال أي منها بالطريقة الافتراضية
./shocker.py -f ./hostlist
يفحص جميع المضيفين المدرجين في الملف ./hostlist بالإعدادات الافتراضية
التبعيات
Python 2.7+
سجل التغييرات
التغييرات في الإصدار 1.1 (يونيو 2018)
- أضاف بعض وظائف التصحيح الإضافية وصحح نص المساعدة
التغييرات في الإصدار 1.0 (مارس 2016)
- بعض السكريبتات الإضافية المقدمة وتحديثات لبعض التعليقات، روابط URL ومعلومات الاتصال
التغييرات في الإصدار 0.72 (ديسمبر 2014)
- تصحيحات طفيفة في المنطق والأخطاء الإملائية
التغييرات في الإصدار 0.71 (ديسمبر 2014)
- أضاف مهلة (timeout) لطلبات urllib2.urlopen باستخدام 'TIMEOUT' عام
التغييرات في الإصدار 0.7 (نوفمبر 2014)
- أضاف 'consol افتراضي' تفاعلي لمزيد من استغلال خادم ضعيف مختار
- حاول تنظيف مشاكل تخزين الإخراج المؤقت بتغليف sys.stdout في كلاس يفرغ عند كل استدعاء write
- أضاف مؤشر تقدم للاستخدام في المهام التي تستغرق وقتاً لطمأنة المستخدمين غير المفصلين
التغييرات في الإصدار 0.6 (أكتوبر 2014)
- منع اعتبار رموز الإرجاع غير 200 نجاحات
- أضاف إمكانية تحديد أهداف متعددة في ملف
- نقل قائمة 'cgi_list' من السكريبتات المراد محاولة استغلالها إلى ملف
- إصلاح بعض مشكلات تنسيق الإخراج
- إصلاح التعبير المنتظم للاسم المضيف/عنوان IP الصحيح للسماح بأسماء مضيف من كلمة واحدة
التغييرات في الإصدار 0.5 (أكتوبر 2014)
- أضاف إمكانية تحديد سكريبت واحد للاستهداف بدلاً من استخدام cgi_list
- إدخال مهلة على عمليات المقبس للتحقق من المضيف
- أضاف بعض أمثلة الاستخدام في رأس السكريبت
- أضاف خاتمة لنص المساعدة تشير إلى وجود أمثلة
التغييرات في الإصدار 0.4 (أكتوبر 2014)
- إدخال حد لعدد الخيوط بقيمة افتراضية 10
- إزالة دعم الألوان حتى أعرف كيفية جعله يعمل في Windows و *nix بنفس الجودة
- تصحيحات إملائية
- قائمة cgi_list أكثر شمولاً
- إزالة success_flag من الإخراج
قبل الإصدار 0.4 (أكتوبر 2014)
المهام المستقبلية
- تحديد والاستجابة الصحيحة لاستجابة HTTP/200 - إيجابيات كاذبة - أولوية منخفضة/مزعج
- تنفيذ curses لأنظمة *nix - للتطبيق بأكمله أم فقط المحطة الافتراضية؟ - أولوية منخفضة/جمالية
- تنفيذ خيوط للفحص الأولي للمضيف الآن بعد دعم الأهداف المتعددة (وقد يجعل هذا الجزء مستهلكاً للوقت)
- تغيير verbose إلى قيمة عددية - هادئ، عادي، مفصّل، تصحيح؟
- إضافة خيار تخطي الفحوصات الأولية للمضيف من أجل السرعة؟
- إضافة ملخص للنتائج قبل الخروج
- حفظ النتائج في ملف؟ تنسيق؟
- في النهاية الفكرة تضمين متجهات متعددة ممكنة لكن حالياً يتم فحص واحد فقط.
- إضافة دعم الألوان في Windows و *nix - أولوية منخفضة/جمالية
- إضافة مهلة في الوضع التفاعلي للأوامر التي لا تعود، مثل /bin/cat /dev/zero
- تجميل - أولوية منخفضة/جمالية (بوضوح)
- إضافة دعم فحص واستغلال SSH و SMTP؟ https://isc.sans.edu/diary/Shellshock+via+SMTP/18879
- إضافة دعم وكيل SOCKS، ربما باستخدام https://github.com/rpicard/socksonsocks/ من Rober Picard
- أشياء أخرى. غالباً.
شكر خاص لـ...