
Лаборатория на основе Docker для проверки CVE-2021-44228 (Log4Shell) в Java-приложениях, тестирования мер смягчения и моделирования RCE через LDAP и HTTP-полезные нагрузки.
Этот инструмент позволяет проверить, уязвимо ли простое Java веб-приложение к CVE-2021-44228 для указанных пользователем версий Java и Log4J.
Вы также можете [опционально] применить одну из нескольких предопределенных мер защиты.
Лаборатория симуляции, запускаемая log4shell_validator.py, использует docker-compose для имитации эксплуатации уязвимости log4j и получения RCE на уязвимой машине.
Прежде всего, необходимо собрать несколько Docker-образов. Скрипт ./build_images.sh должен позаботиться об этом.
Симуляция атаки выполняется следующим образом:
/2021-44228-via-message./poc_template./exploit.sh, отправляющий нагрузку на уязвимое приложение.cd marshalsec/ ;mvn clean package -DskipTests ;cd -./build-images.shpython log4shell_validator.py --java-version 8 --log4j-version 2.12.1~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
[--exploit-via-thread-context]
log4j-vulnerability-tester
optional arguments:
-h, --help show this help message and exit
--java-version JAVA_VERSION
version of java to be used
--log4j-version LOG4J_VERSION
version of log4j to be used
--no-cleanup Don't delete used containers.
--disable-trust-url Disable the LDAP trustURLCodebase setting on the victim app
--remove-jndi-lookup-class
Remove the JNDI Lookup class from the log4j jar file
--disable-message-lookup
Disable the JNDI message lookup in the victim app's JVM
--debug Display all container's logs
--exploit-via-thread-context
By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation
Этот валидатор был протестирован с несколькими комбинациями Java7/8 и различными версиями Log4J2. Дополнительные примеры можно найти в конвейере расширенных тестов на вкладке GitHub Actions.
На данный момент реализованы следующие меры защиты:
com.sun.jndi.ldap.object.trustURLCodebase в False.-Dlog4j2.formatMsgNoLookups=TrueКроме того, был добавлен новый флаг для тестирования вектора эксплуатации, который может обойти отключение поиска сообщений: --exploit-via-thread-context
Это программное обеспечение создано исключительно для исследовательских целей и для разработки эффективных методов защиты. Оно не предназначено для атак на системы, за исключением случаев явного разрешения. Сопровождающие проекта не несут ответственности за неправомерное использование программного обеспечения. Используйте ответственно.