
سكريبت استغلال تمت إعادة صياغته بالكامل ومتوافق مع بايثون 3 لثغرة Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) AJP لإدراج الملفات المحلية
يوفر هذا المشروع نصاً برمجياً بلغة Python للتحقق من ثغرة تضمين الملفات المحلية في بروتوكول AJP لخادم Apache Tomcat (المعروفة باسم Ghostcat، CVE-2020-1938 / CNVD-2020-10487).
تمت إعادة بناء وإصلاح شامل لهذا النص البرمجي استناداً إلى إصدار Python 2 الأصلي المنتشر، وهو متوافق تماماً مع بيئة Python 3. تم إصلاح مشاكل التوافق مع StringIO، وترميز base64، وربط البيانات الثنائية مع السلاسل النصية، مما عزز الاستقرار على أنظمة التشغيل الحديثة.
عند معالجة Apache Tomcat لبروتوكول AJP (Apache JServ Protocol)، يكون المنفذ 8009 مفتوحاً افتراضياً، ولا يتم إجراء تدقيق أمني صارم على سمات الطلب الواردة.
يمكن للمهاجم إنشاء طلب AJP خبيث يحقن سمات مثل javax.servlet.include.request_uri و javax.servlet.include.path_info و javax.servlet.include.servlet_path:
DefaultServlet في Tomcat لقراءة أي ملف داخل دليل تطبيق الويب (مثل WEB-INF/web.xml، ملفات التهيئة، إلخ).JspServlet على تحليل وتجميع هذا الملف كملف JSP، مما يؤدي إلى تنفيذ أوامر عن بعد.ملاحظة: تدعم هذه الثغرة فقط تضمين الملفات المحلية (LFI)، ولا تدعم تضمين الملفات البعيدة المباشر (RFI).
صيغة سطر الأوامر:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <IP_الهدف> [-p المنفذ_الهدف] [-f مسار_الملف_الهدف]
target (إجباري): عنوان IP أو اسم نطاق المضيف الهدف.-p, --port (اختياري): منفذ AJP، الافتراضي هو 8009.-f, --file (اختياري): المسار النسبي للملف الهدف المراد قراءته، الافتراضي هو WEB-INF/web.xml.الكشف الأساسي (قراءة web.xml الافتراضي):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
تحديد المنفذ والملف (قراءة ملف تهيئة مخصص):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
إذا كان نظامك متأثراً بهذه الثغرة، يُوصى باتخاذ إجراءات الحماية التالية فوراً:
<Connector port="8009" protocol="AJP/1.3" ... /> في ملف conf/server.xml.requiredSecret (في Tomcat 8.5.51/9.0.31 والإصدارات الأحدث secret) إلى موصل AJP لفرض المصادقة.هذا النص البرمجي مخصص فقط لـ أبحاث أمن الشبكات والتعليم والتدقيق الأمني الداخلي الممتثل للوائح الشركات. يُمنع استخدام هذا النص البرمجي لاستكشاف أو مهاجمة أهداف غير مصرح بها بشكل غير قانوني. يجب على المستخدم الالتزام بالقوانين واللوائح المحلية عند استخدام هذا النص البرمجي. أي عواقب ناتجة عن الاستخدام غير السليم أو غير القانوني يتحملها المستخدم وحده.