
Log4Shell Proof-of-Concept на основе https://github.com/kozmer/log4j-shell-poc
Этот репозиторий содержит доказательство концепции (PoC) для уязвимости CVE-2021-44228.
Он основан на этом репозитории.
В этом репозитории представлен пример уязвимого приложения и демонстрация того, как его эксплуатировать.
Я модифицировал вышестоящий Python-скрипт для автоматизации генерации этой уязвимости.
В этом репозитории есть два Dockerfile для удобного использования:
В этом Docker-образе мы загружаем Java jdk-8u20 из моего Google Drive, так как для загрузки этого требуется учётная запись Oracle.
Если вы не доверяете этому, вы можете изменить загрузку в Dockerfile и скачать JDK отсюда (убедитесь, что загрузили Java SE Development Kit 8u20 для Linux).
Этот Docker-образ запускает модифицированную версию скрипта, предоставленного kozmer, и делает следующее:
Порты по умолчанию: 1389 для JNDI LDAP, 8000 для SimpleHttpServer и 9001 для обратной оболочки!
Чтобы скомпилировать и запустить, выполните:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Используйте docker logs <containerID>, чтобы увидеть логи приложения и получить правильный ввод, который нужно передать уязвимому приложению.
Для этого PoC я использовал IP-адреса по умолчанию Docker (172.17.0.1/24); вы можете изменить их в скрипте ./Docker-Ldap/run.sh под свой сценарий.
В этом Docker-образе запускается уязвимое веб-приложение, использующее неисправленную версию Log4J 2 и открывающее его на порту 8080.
Исходный код приложения также доступен в ./Docker-Vuln, авторство kozmer.
Чтобы скомпилировать и запустить, выполните:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
Имя пользователя — это инъекционное поле!
Чтобы принять обратную оболочку, необходимо создать прослушиватель netcat на порту 9001
nc -lvnp 9001
После загрузки репозитория убедитесь, что у вас установлен Docker Engine и на компьютере не запущены другие Docker-образы.
config.sh для сборки образов и их запуска. (Этот скрипт требует привилегий root; вы можете изменить их соответственно).9001.localhost:8080.docker logs <containerID>).