
مُختبر اختراق سطر الأوامر لبروتوكول Apache JServ (ajp13)
AJPFuzzer هي أداة اختبار أولية لـ بروتوكول Apache JServ (ajp13).
مبنية على libajp13، تتيح لك الأداة إنشاء وإرسال رسائل AJP باستخدام واجهة سطر أوامر سهلة الاستخدام. يمكن لـ AJPFuzzer صياغة رسائل AJP13 منسقة بشكل صحيح (جميع أنواع الرسائل) بالإضافة إلى الطفرات (مثل قلب البتات، الرسائل ذات النوع غير المتطابق، إلخ)، مما يسهل جهود اختبار الأمان التي تستهدف الخدمات القائمة على AJP مثل وحدات AJP لخوادم الويب، حاويات J2EE، وغيرها الكثير.
قم بتنزيل أحدث ملف jar لـ AJPFuzzer من صفحة الإصدارات
قم بتشغيل ملف jar الذي تم تنزيله باستخدام:
$ java -jar ajpfuzzer_v0.7.jar
ستظهر الأداة شل. بكتابة ?list، يمكنك عرض جميع الأوامر المتاحة. في هذه المرحلة، يمكنك الاتصال بالهدف باستخدام:
AJPFuzzer> connect 127.0.0.1 8009
ثم يمكنك إرسال رسالة CPing (النوع 10) ببساطة عن طريق كتابة '10' (لا حاجة لوسائط لهذه الرسالة)
AJPFuzzer/127.0.0.1:8009> 10
توضح لقطة الشاشة التالية التنفيذ بأكمله:
من الواضح أنه من الممكن إرسال رسائل أكثر تعقيدًا عن طريق تحديد حالة الاختبار والوسائط المناسبة. يرجى الرجوع إلى ?list للحصول على كافة التفاصيل حول أمر معين.
على سبيل المثال، يمكننا إرسال رسالة من نوع ForwardRequest مخصصة بالكامل باستخدام:
> forwardrequest 2 "HTTP/1.1" "/api/" 127.0.0.1 localhost porto 8009 false "Cookie:AAAA=BBBB" ""
من الممكن أيضًا إرسال رسالة ForwardRequest مع اختبار عناصر عشوائية:
> genericfuzz 2 "HTTP/1.1" "/test.html" "127.0.0.1" "127.0.0.1" "server.name.test" 8009 false "Cookie:AAAA=BBBB" "secret:FUZZ" /tmp/list.txt
حتى الآن، توفر AJPFuzzer حالات الاختبار التالية:
يمكن إضافة حالات اختبار جديدة عن طريق توسيع فئة AJPTestCases.java. باستخدام التعليق التوضيحي @Command، ستتعرف الأداة على الأمر الإضافي وتجعله متاحًا من CLI.
| المعرف | الاسم | الوصف |
|---|
| 1 | body | إرسال رسالة جسم من خادم الويب إلى حاوية J2EE |
| 2 | forwardrequest | بدء دورة معالجة الطلب من خادم الويب إلى حاوية J2EE |
| 3 | sendbodychunk | إرسال جزء من الجسم من حاوية J2EE إلى خادم الويب |
| 4 | sendheaders | إرسال رؤوس الاستجابة من حاوية J2EE إلى خادم الويب |
| 5 | endresponse | وضع علامة على نهاية الاستجابة، من حاوية J2EE إلى خادم الويب |
| 6 | getbodychunk | الحصول على بيانات إضافية من الطالب. رسالة من حاوية J2EE إلى خادم الويب |
| 7 | shutdown | إرسال حزمة إيقاف تشغيل قياسية لـ AJP13 |
| 8 | ping | إرسال حزمة ping (ping != CPing) لـ AJP13 |
| 9 | cpong | إرسال حزمة CPong لـ AJP13 |
| 10 | cping | إرسال حزمة CPing لـ AJP13 |
| 11 | forwardreqalltypes | إرسال حزمة ForwardRequest لـ AJP13، مع جميع أنواع الحزم الممكنة |
| 12 | verbtampering | إرسال طلبات متعددة عبر AJP13 وإجراء العبث بالفعل (HTTP Verb Tampering)، لاكتشاف عيوب تجاوز المصادقة المحتملة |
| 13 | jettyleak | إرسال حزمة AJP13 من نمط JettyLeak |
| 14 | hugelengthsmallbody | إرسال رسائل ForwardRequest+Body، مع Content-Length كبير وجسم صغير |
| 15 | hugeheader | إرسال حزمتي ForwardRequest لـ AJP13 مع طول رأس أكبر من 0x9999 (مثل A010) |
| 16 | fuzzbit | إنشاء ForwardRequest معقد لـ AJP13 وبدء قلب البتات |
| 17 | fuzzslice | إنشاء ForwardRequest لـ AJP13، SendHeaders، ShutDown، 0xFF، 0x00. تقطيع وإرسال. |
| 18 | servletpath | إنشاء ForwardRequest لـ AJP13 مع خاصية 'servlet_path' عشوائية |
| 19 | bypassauthnull | إنشاء حزمتي ForwardRequest لـ AJP13 مع تعيين auth_type إلى 'null' |
| 20 | envars | إنشاء ForwardRequest لـ AJP13 مع req_attribute_code (10) من أجل تعيين متغيرات بيئية عشوائية |
| 21 | hugepacketsize | إنشاء طلبين AJP13 بحجم أكبر من 8192 بايت |
| 22 | genericfuzz | إنشاء ForwardRequest لـ AJP13 (GET) يسمح باختبار عناصر الرسالة العشوائية باستخدام الكلمة المفتاحية FUZZ |