Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
log4jcheck — Проверить список URLs на уязвимость Log4j CVE-2021-44228 | Kitploit
Инструменты/GitHubGitHub/olafhaalstra/log4jcheck
Сканеры уязвимостейСканеры веб-уязвимостейЭксплуатацияСбор информацииВеб-безопасностьТестирование на Проникновение
GitHubolafhaalstra/log4jcheck

log4jcheck

Проверить список URLs на уязвимость Log4j CVE-2021-44228

Репозиторий
514 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Проверщик Log4j CVE-2021-44228

Многопоточная проверка списка URL-адресов с помощью POST и GET запросов в комбинации с параметрами.

Сильно вдохновлена версией NortwaveSecurity.

Настройка

URL-адреса для проверки

Список URL-адресов для проверки должен быть в следующем формате (csv):

root@kitploit:~
description,URL,method,parameters
production,example.com/login,POST,"username,password"
staging,example.com/search,GET,"q"
development,example.com/,GETNP,""

Затем будет выполнен POST-запрос к example.com/login, где будет отправлено следующее тело запроса: username={jndi:ldap...}&password={jndi:ldap...}

Аналогично будет выполнен следующий GET-запрос: example.com/search?q={jndi:ldap...}.

В качестве альтернативы вы можете указать GETNP (GET без параметров), чтобы выполнить GET запрос по URL с добавленным полезным грузом: example.com/new/{jndi:ldap...}.

Кроме того, полезная нагрузка также вставляется в заголовки User-Agent, Referer, X-Forwarded-For, Authentication, чтобы увеличить шансы на срабатывание.

Если вы хотите проверить URL-адреса как для GET, так и для POST или GETNP, продублируйте запись в CSV.

Canary Token

Для настройки без какой-либо предварительной конфигурации вы можете использовать https://canarytokens.org/generate и создать Log4Shell CanaryToken:

Canary Tokens

В качестве альтернативы вы можете настроить свой собственный DNS-сервер.

Запуск скрипта

Установите зависимости, выполнив команду pip install-r requirements.txt. Отредактируйте скрипт, изменив следующую строку на ваш предпочитаемый canary token:

root@kitploit:~
usage: log4jcheck.py [-h] -f FILE -u URL [-w WAIT] [-t TIMEOUT] [-p PREFIX] [-q THREADS] [-d DONE]

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  The CSV filename containing the URLs
  -u URL, --url URL     DNS subdomain URL on which th callback is performed
  -w WAIT, --wait WAIT  Number of seconds to wait before next request (default: 1)
  -t TIMEOUT, --timeout TIMEOUT
                        HTTP timeout in seconds to use (default: 5)
  -p PREFIX, --prefix PREFIX
                        Type of prefix, see prefixes_injects for options. (default: 0, options 0-3)
  -q THREADS, --threads THREADS
                        Number of threads to distribute the work
  -d DONE, --done DONE  File where we can keep track of items that are done

Создайте папку: /run/logs для вывода логов. Здесь вы можете отслеживать прогресс, ничего не будет отправлено в stdout.

Теперь скрипт можно запустить, указав ему ранее созданный CSV-файл с URL-адресами для проверки.

root@kitploit:~
python3 .\log4jcheck.py --file .\urls-example.csv --threads 2 --url "L4J.ujz5sgvgo7xuvn03ft9qrws5w.canarytokens.com/a" -w 0 -t 1

Проверьте, был ли токен сработан после завершения скрипта. Вы сможете перекрестно коррелировать, какое приложение сработало, на основе сгенерированного UUID4 в комбинации с инжектированным параметром, например: 40852c3b-2d6b-4bd5-a91f-4416aa730619-username.

Тестирование

Протестировано на log4shell-vulnerable-app. Измените MainControll.java следующим образом:

root@kitploit:~
package fr.christophetd.log4shell.vulnerableapp;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@RestController
public class MainController {

    private static final Logger logger = LogManager.getLogger("HelloWorld");

    @GetMapping("/")
    public String index(@RequestHeader("X-Api-Version") String apiVersion) {
        logger.info("Received a request for API version " + apiVersion);
        return "Hello, world!";
    }

    @GetMapping("/test")
    public String testGet(@RequestParam String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

    @PostMapping("/test")
    public String test(@RequestBody String test) {
        logger.info("Received a request for test " + test);
        return "Test world!";
    }

}

Скомпилируйте и запустите:

root@kitploit:~
gradle bootJar --no-daemon
java -jar .\build\libs\log4shell-vulnerable-app-0.0.1-SNAPSHOT.jar

Запустите log4jcheck со следующим файлом urls.csv:

root@kitploit:~
description,URL,method,parameters
test,http://localhost:8080/test,POST,"test"
test,http://localhost:8080/test,GET,"test"

Следующая информация должна появиться в журнале canary token: Лог ввода

Охват:

Следующие HTTP-заголовки охвачены:

  • X-Api-Version
  • User-Agent
  • Referer
  • X-Druid-Comment
  • Origin
  • Location
  • X-Forwarded-For
  • Cookie
  • X-Requested-With
  • X-Forwarded-Host
  • Accept

Для каждой инъекции возможны следующие префиксы JNDI:

  • 0: jndi:dns
  • 1: jndi:${lower:l}${lower:d}ap
  • 2: jndi:rmi
  • 3: jndi:ldap

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Обратите внимание, что скрипт выполняет проверки только: User Agent и любых параметров, которые вы указываете в POST или GET запросах. Это приведет к ложноотрицательным результатам в случаях, когда для срабатывания уязвимости необходимо нацелиться на другие заголовки, пропущенные поля ввода и т.д. Не стесняйтесь добавлять дополнительные проверки в скрипт.

Лицензия

Log4jcheck — это программное обеспечение с открытым исходным кодом, лицензированное по лицензии MIT.

Скачать инструмент