
Инструмент, который запускает тест для проверки, подвержено ли одно из ваших приложений недавним уязвимостям в log4j: CVE-2021-44228 и CVE-2021-45046
log4shell.tools — это инструмент, который позволяет запустить тест для проверки, затронуто ли одно из ваших приложений недавними уязвимостями в log4j: CVE-2021-44228 и CVE-2021-45046.
Это код, который работает на сайте https://log4shell.alexbakker.me. Если вы хотите изучить код или запустить экземпляр в своей среде, вы попали по адресу.
Инструмент генерирует уникальный идентификатор для тестирования. После нажатия кнопки «Старт» будет создан фрагмент текста, похожий на этот: ${jndi:ldap://*.dns.log4shell.tools:12345/*}. Скопируйте его и вставьте туда, где, по вашему мнению, он может быть обработан log4j. Например: в строки поиска, поля форм или HTTP-заголовки.
Когда устаревшая версия log4j видит эту строку, она выполняет DNS-запрос для получения IP-адреса *.dns.log4shell.tools. Если это происходит, это считается первым признаком уязвимости к утечке информации. Затем она выполняет LDAP-запрос к log4shell.tools:12345. Инструмент отвечает описанием Java-класса и URL для его получения. Log4j может даже попытаться загрузить файл класса. Инструмент вернёт 404 и завершит тест.
Инструмент тестировался с Go 1.16. Убедитесь, что он (или более новая версия Go) установлен, и выполните следующую команду:
go install github.com/alexbakker/log4shell-tools/cmd/log4shell-tools-server
Бинарный файл будет доступен в $GOPATH/bin
Поскольку этот инструмент компилируется в один бинарный файл, всё, что нужно сделать — запустить его, чтобы начать самостоятельное размещение экземпляра log4shell.tools. Чтобы сделать его доступным для других машин в вашей сети, передайте несколько флагов, чтобы инструмент не слушал только интерфейс loopback. Если вы выставляете это в интернет, вероятно, также стоит поставить обратный прокси перед HTTP-сервером. Пока игнорируйте параметры DNS, они не нужны для простых внутренних развертываний.
Полный список доступных флагов можно получить, запустив log4shell-tools-server -h:
Usage of ./log4shell-tools-server:
This tool only listens on 127.0.0.1 by default. Pass the flags below to customize for your environment.
-dns-a string
the IPv4 address to respond with to any A record queries for 'dns-zone' (default "127.0.0.1")
-dns-aaaa string
the IPv6 address to respond with to any AAAA record queries for 'dns-zone' (default "::1")
-dns-addr string
listening address for the DNS server (default "127.0.0.1:12346")
-dns-enable
enable the DNS server
-dns-zone string
DNS zone that is forwarded to the tool's DNS server (example: "dns.log4shell.tools")
-http-addr string
listening address for the HTTP server (default "127.0.0.1:8001")
-http-addr-external string
address where the HTTP server can be reached externally (default "127.0.0.1:8001")
-ldap-addr string
listening address for the LDAP server (default "127.0.0.1:12345")
-ldap-addr-external string
address where the LDAP server can be reached externally (default "127.0.0.1:12345")
-ldap-http-proto string
the HTTP protocol to use in the payload URL that the LDAP server responds with (default "http")
-storage string
storage connection URI (either memory:// or a postgres:// URI (default "memory://")
-test-timeout int
test timeout in minutes (default 30)
По умолчанию инструмент использует встроенное хранилище в памяти. Если вам нужно сохранять результаты тестов между перезапусками, вы можете использовать хранилище на основе Postgres.
DNS-сервер по умолчанию отключён, поскольку его параметры конфигурации в настоящее время очень специфичны для настройки на https://log4shell.alexbakker.me. Дайте мне знать, если вы захотите помочь сделать их более универсальными.