
Analise sua rede IP e determine hosts com possível vulnerabilidade CVE-2021-44228 na biblioteca log4j.
Digitalize sua rede IP e determine hosts com possível vulnerabilidade CVE-2021-44228 na biblioteca log4j.
Existem ferramentas muito melhores e avançadas para auditoria de segurança, mas muitas delas exigem software comercial de penetração ou serviço ou software externo de terceiros.
Este script foi escrito para ser uma ferramenta rápida e independente. Ele não confirmará que seus servidores e dispositivos estão 100% seguros. Considere-o como uma das muitas ferramentas que você deve usar para auditar seu ambiente de TI. Pode ser usado em endereços IP privados e públicos.
O script não é uma demonstração de exploit log4shell. Ele não causará danos nem tentará executar código remoto.
O script cria uma requisição HTTPS (portas terminadas em 443) ou HTTP (todas as outras portas), com uma string especial nos campos: User-Agent, X-Api-Version e X-Forwarded-For. Essa string especial tem o formato ${jndi:ldap://some_listen_host:port} .
Se a biblioteca log4j vulnerável for usada para registrar a atividade do usuário (nossa requisição http) em algum lugar no caminho “usuário -> serviço | balanceadores de carga -> segurança -> servidores -> registro”, ela analisará a string JNDI e tentará estabelecer uma sessão LDAP para o nosso some_listen_host:port.
Se monitorarmos o tráfego em some_listen_host:port e detectarmos tais pacotes, a origem deles deve ser examinada mais a fundo.
As portas padrão para onde as requisições http(s) são enviadas são 80, 8080, 443 e 8443.
Esses dois hosts podem ser a mesma máquina.
No host de escuta, inicie o tcpdump para capturar pacotes recebidos em alguma porta TCP livre. Exemplo:
tcpdump -nn -i ens160 tcp port 12345
No host Linux, execute o script com os parâmetros necessários. Exemplo:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
Isso testará a rede 192.168.0.0/24 tentando acionar uma conexão TCP para o host de escuta 192.158.0.3 na porta 12345.
Monitore a saída do tcpdump no host de escuta. Alvos suspeitos de vulnerabilidade log4j analisarão a string JNDI e tentarão estabelecer conexão LDAP.
É ineficaz e extremamente lento escanear todas as portas. Como a biblioteca log4j é usada em muitos produtos, determine primeiro quais portas web são usadas no seu ambiente. Execute o script com sua lista personalizada de portas.
Há muitos elementos que podem impedir o script e outras ferramentas de descobrir externamente a vulnerabilidade log4j. Alguns deles são: firewalls de rede e de servidor, firewalls de aplicação web, portas TCP personalizadas, software/serviços que não registram eventos de baixa severidade (como nossa requisição http comum), o script acessa o endereço IP em vez do hostname necessário, etc…
Sempre verifique o projeto de código aberto ou os avisos do fornecedor do software para obter detalhes sobre o problema do log4j.
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.