Primer - VM
Reconnaissance
nmap -sS -A 192.168.43.139 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) 80/tcp open http Apache httpd 2.4.10 ((Debian)) | http-robots.txt: 1 disallowed entry |_/4_8f14e45fceea167a5a36dedd4bea2543 |_http-title: PRIMER 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100024 1 58903/udp status |_ 100024 1 59440/tcp status OS details: Linux 3.11 - 3.14
Exploitation Web
Sur la première page nous avons une demande d'authentification sous forme login , mot de passe.
On tente une injection sql :
username : admin' || 1 # mp : azefrf
On est authentifié :
http://192.168.43.139/1_c81e728d9d4c2f636f067f89cc14862c/
Dans le code source en commentaire on peut lire :
<!-- This bot was looking for a Sosū User Agent Identifier she had cracked weeks ago, easy sauce, just a simple md5 hash of the first 7 digits of pi. It was basically common knowledge to the entities moving in these areas but obscurity does create a, albeit virtual, layer of security. -->
On calcule le md5 de 3.141592 ⇒ d483d00d07fcc80319d170ccf07fb5be
Et dans l'User Agent on met :
d483d00d07fcc80319d170ccf07fb5be
On accède alors à : http://192.168.43.139/2_eccbc87e4b5ce2fe28308fd9f2a7baf3/
Après plusieurs recherches on trouve que la piste est bouché, on repart donc depuis la phase reconnaissance.
Dans le robots.txt
/4_8f14e45fceea167a5a36dedd4bea2543
On clique sur EOF on arrive sur la page 5 :
On récupère le lien de la page 6 et on essaye d'y accéder.
Un contrôle d'accès fait en JS nous redirige vers une page d'erreur si nous ne rentrons pas le mot attendu.
En regardant le code source de la page on remarque :
On accède à la page : 7_70efdf2ec9b086079795c442636b55fb
Un nouveau contrôle d'accès fait en JS pour accéder à la page.
On regarde le JS de façon propre avec http://jsbeautifier.org/
/*"Someone didn't bother reading my carefully prepared memo on commonly-used passwords. Now, then, as I so meticulously pointed out, the four most-used passwords are: love, sex, secret, and..." - The Plague*/
Un premier commentaire dans le code , après quelques recherche sur internet on trouve que le password est “god”. Pourtant il ne semble pas valider.
On cherche un peut plus loin dans le JS :
var L = '0d28cba0bd4f26e16d766000d27e49fa';
Le contenu de la variable L est le md5 de “GOD”
On test avec notre passe : GOD
Si on trouve la correspondance des path (md5) on obtient :
2_eccbc87e4b5ce2fe28308fd9f2a7baf3 => 3 4_8f14e45fceea167a5a36dedd4bea2543 => 7 5_6512bd43d9caa6e02c990b0a82652dca => 11 6_c51ce410c124a10e0db5e4b97fc2af39 => 13 7_70efdf2ec9b086079795c442636b55fb => 17
On remarque les chemins sont incrémentés de +2.
Grâce à cela on trouve les urls suivantes :
http://192.168.43.139/3_e4da3b7fbbce2345d7772b0674a318d5/ => 5 http://192.168.43.139/8_1f0e3dad99908345f7439f8ffabdffc4/ => 19 http://192.168.43.139/9_37693cfc748049e45d87b8c7d8b9aacd/ => 21
Les chemins 3 et 8 raconte des morceaux de l'histoire mais n'apporte rien de plus.
Le chemin 9 est plus intéressant :
Après quelques tentatives d'exploitations nous remarquons que nous n'avons pas accès à un système de fichier mais uniquement à un pseudo interpréteur.
On va voir dans le main.js :
On accède à : 10_23693cff748o49r45d77b6c7d1b9afcd
Fin de la VM , l'auteur ne proposait pas d'exploiter plus loin.