Ci-dessous, les différences entre deux révisions de la page.
— |
vm:primer [2017/05/19 09:02] (Version actuelle) arkinar créée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | **Primer - VM ** | ||
+ | |||
+ | __Reconnaissance__ | ||
+ | |||
+ | <code bash> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | __Exploitation Web__ | ||
+ | |||
+ | {{ :vm:0.png?nolink |}} | ||
+ | |||
+ | Sur la première page nous avons une demande d'authentification sous forme login , mot de passe. | ||
+ | |||
+ | On tente une injection sql : | ||
+ | <code> | ||
+ | username : admin' || 1 # | ||
+ | mp : azefrf | ||
+ | </code> | ||
+ | |||
+ | On est authentifié : | ||
+ | |||
+ | {{ :vm:1.png?nolink |}} | ||
+ | |||
+ | http://192.168.43.139/1_c81e728d9d4c2f636f067f89cc14862c/ | ||
+ | |||
+ | Dans le code source en commentaire on peut lire : | ||
+ | <code HTML> | ||
+ | <!-- | ||
+ | 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. | ||
+ | --> | ||
+ | </code> | ||
+ | On calcule le md5 de 3.141592 => d483d00d07fcc80319d170ccf07fb5be | ||
+ | |||
+ | Et dans l'User Agent on met : | ||
+ | <code> | ||
+ | d483d00d07fcc80319d170ccf07fb5be | ||
+ | </code> | ||
+ | |||
+ | On accède alors à : [[http://192.168.43.139/2_eccbc87e4b5ce2fe28308fd9f2a7baf3/]] | ||
+ | |||
+ | {{ :vm:2.png?nolink |}} | ||
+ | |||
+ | Après plusieurs recherches on trouve que la piste est bouché, on repart donc depuis la phase reconnaissance. | ||
+ | |||
+ | Dans le robots.txt | ||
+ | <code> | ||
+ | /4_8f14e45fceea167a5a36dedd4bea2543 | ||
+ | </code> | ||
+ | {{ :vm:4.png?nolink |}} | ||
+ | |||
+ | On clique sur EOF on arrive sur la page 5 : | ||
+ | |||
+ | {{ :vm:5.png?nolink |}} | ||
+ | |||
+ | 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 : | ||
+ | {{ :vm:6.png?nolink |}} | ||
+ | |||
+ | |||
+ | 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/]] | ||
+ | |||
+ | <code JavaScript> | ||
+ | /*"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*/ | ||
+ | </code> | ||
+ | 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 : | ||
+ | <code JavaScript> | ||
+ | var L = '0d28cba0bd4f26e16d766000d27e49fa'; | ||
+ | </code> | ||
+ | |||
+ | Le contenu de la variable L est le md5 de "GOD" | ||
+ | |||
+ | On test avec notre passe : **GOD** | ||
+ | |||
+ | |||
+ | {{ :vm:7.png?nolink |}} | ||
+ | |||
+ | |||
+ | Si on trouve la correspondance des path (md5) on obtient : | ||
+ | <code> | ||
+ | 2_eccbc87e4b5ce2fe28308fd9f2a7baf3 => 3 | ||
+ | 4_8f14e45fceea167a5a36dedd4bea2543 => 7 | ||
+ | 5_6512bd43d9caa6e02c990b0a82652dca => 11 | ||
+ | 6_c51ce410c124a10e0db5e4b97fc2af39 => 13 | ||
+ | 7_70efdf2ec9b086079795c442636b55fb => 17 | ||
+ | </code> | ||
+ | |||
+ | On remarque les chemins sont incrémentés de +2. | ||
+ | |||
+ | Grâce à cela on trouve les urls suivantes : | ||
+ | <code> | ||
+ | http://192.168.43.139/3_e4da3b7fbbce2345d7772b0674a318d5/ => 5 | ||
+ | |||
+ | http://192.168.43.139/8_1f0e3dad99908345f7439f8ffabdffc4/ => 19 | ||
+ | |||
+ | http://192.168.43.139/9_37693cfc748049e45d87b8c7d8b9aacd/ => 21 | ||
+ | </code> | ||
+ | |||
+ | Les chemins 3 et 8 raconte des morceaux de l'histoire mais n'apporte rien de plus. | ||
+ | |||
+ | Le chemin 9 est plus intéressant : | ||
+ | {{ :vm:9.png?nolink |}} | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | {{ :vm:9b.png?nolink |}} | ||
+ | |||
+ | On accède à : 10_23693cff748o49r45d77b6c7d1b9afcd | ||
+ | |||
+ | {{ :vm:10.png?nolink |}} | ||
+ | |||
+ | Fin de la VM , l'auteur ne proposait pas d'exploiter plus loin. | ||