**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.