
Script Python3 para escanear máquinas vulneráveis ao CVE-2021-44228 (Log4shell).

Este script Python3 tenta procurar por servidores vulneráveis ao CVE-2021-44228, também conhecido como Log4Shell, uma vulnerabilidade muito crítica encontrada na biblioteca de log Log4j2 do Java.
Ele não depende de servidores DNS de log externos para verificar e validar os alvos vulneráveis: quando iniciado, uma nova thread escutando em todas as interfaces e na porta 55555 (podendo ser alterada usando o arquivo .env ou variáveis de ambiente) é criada: ela aguardará conexões de callback das máquinas vulneráveis e notificará a thread principal através de uma Python Queue. Tenha em mente que você pode precisar adicionar regras de firewall (e/ou regras de encaminhamento de porta) para permitir conexões de entrada no par IP:porta em escuta.
Para aumentar as chances de acionar a vulnerabilidade, a ferramenta recebe uma URL como argumento (ou uma lista de URLs) e procura por qualquer formulário incluído nas URLs fornecidas. Em seguida, ela tenta explorar a vulnerabilidade usando cada parâmetro de cada formulário encontrado (requisições GET e POST). Este é o comportamento padrão, mas pode ser desabilitado usando a opção --skip-forms (neste caso, apenas 1 requisição será realizada e o payload será colocado dentro de poucos campos de cabeçalho).
Além disso, os seguintes cabeçalhos predefinidos são usados para testar se os alvos estão vulneráveis:
Cabeçalhos personalizados podem ser adicionados via opção de linha de comando.
Para uma descrição completa de uso, veja a seção abaixo.
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
Esta ferramenta deve ser usada para testar seus próprios sistemas.
NOTA IMPORTANTE: Esta ferramenta não garante que o seu servidor NÃO está vulnerável mesmo se o resultado for negativo. Isso porque sua aplicação pode registrar o payload malicioso em outro lugar e não é possível cobrir todos os casos. Portanto, a melhor forma de verificar se você está vulnerável é procurar pelos pacotes vulneráveis (ou seja, log4j-core*.jar e log4j-api*.jar ) em todo o sistema de arquivos.