**SecOs - Write Up**
__Reconnaissance__
nmap -sS -A 192.168.43.38
ports ouverts :
22 ssh
8081/tcp open http Node.js (Express middleware)
__Exploitation Web__
Pour le port 8081 :
{{ :vm:web.png?nolink |}}
Avec l'outil [[https://sourceforge.net/projects/dirb/files/ | dirb]] on va chercher les fichiers existants :
./dirb http://192.168.43.38:8081/ wordlists/common.txt
+ http://192.168.43.38:8081/about (CODE:200|SIZE:2330)
+ http://192.168.43.38:8081/About (CODE:200|SIZE:2330)
+ http://192.168.43.38:8081/css (CODE:303|SIZE:20)
+ http://192.168.43.38:8081/hint (CODE:200|SIZE:2287)
+ http://192.168.43.38:8081/js (CODE:303|SIZE:19)
+ http://192.168.43.38:8081/login (CODE:200|SIZE:2337)
+ http://192.168.43.38:8081/Login (CODE:200|SIZE:2337)
+ http://192.168.43.38:8081/logout (CODE:301|SIZE:0)
+ http://192.168.43.38:8081/messages (CODE:301|SIZE:0)
+ http://192.168.43.38:8081/sign-up (CODE:200|SIZE:2280)
+ http://192.168.43.38:8081/users (CODE:301|SIZE:0)
Dirb nous ressort une page intéressante : hint
{{ :vm:secos_hint.png?nolink |}}
On regarde le code source :
{{ :vm:secos_hint2.png?nolink |}}
Vu les informations récoltées il y a de forte chance que l'ont est besoin de faire une CSRF dans la suite du challenge.
Pour accéder à la plateforme il faut se créer un compte.
Dans la liste des comptes utilisateurs on remarque que seul le compte **spiderman** est administrateur.
{{ :vm:secos_users.png?nolink |}}
Une page de réinitialisation de mot de passe et une page de contact sont présentes sur le site.
{{ :vm:secos_message.png?nolink |}}
Après avoir envoyé une bonne quantité de messages , j'ai compris :
- Faire venir le bot sur notre machine
- Lui faire exécuter du JS pour réinitialiser son mot de passe
En local j'ai créé un fichier csrf.html :
Puis j'ai ouvert un socket python en écoute sur le port 80 :
python -m SimpleHTTPServer 80
Il faut ensuite envoyer un jolie petit message à spiderman depuis votre compte :
{{ :vm:secos_message2.png?nolink |}}
Quelques minutes plus tard on obtient cela :
192.168.43.38 - - [07/Aug/2017 14:22:29] "GET /csrf.html HTTP/1.1" 200 -
Le bot est bien passé et a exécuter notre CSRF.
On peut dès à présent se connecter avec les identifiants : **spiderman/test**
Dans les messages de spiderman on remarque que quelqu'un a déjà piraté le compte :
{{ :vm:secos_pirate.png?nolink |}}
On utilise le mot de passe **CrazyPassword!** pour se connecter en ssh.
__Exploitation système & Élévation de privilège__
Récupération de la version du noyau :
uname -a
Linux SecOS-1 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014 i686 i686 i686 GNU/Linux
On va chercher la version de la distribution :
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
L'élévation se fait à l'aide de l'exploit : [[https://www.exploit-db.com/exploits/37292/ | overlayfs]]
{{ :vm:secos_root.png?nolink |}}
cat /root/flag.txt
{{ :vm:flag.png?nolink |}}
Merci à l'auteur de la machine.