CTF/Kioptrix Level 3

Nom du CTF : **Kioptrix Level 3**

Difficulté : **2****/5**

Thème : **Serveur HTTP**

# Détection

On commence par trouver l'IP de notre cible. Pour ceci on passe par *netdiscover*.

````
   netdiscover -r 192.168.1.0/24

````

Continuons en scannant notre cible via *Nmap*.

````
   nmap -A -O -T4 192.168.1.30

````

Nous remarquons qu'il y a peu de services en écoute, un serveur SSH et un serveur HTTP. Pas grand chose à dire sur ce scan, il ne reste plus qu'à aller voir ce que contient Apache.

Nous voyons déjà que l'article "*New Lead Programmer*" parle d'un certain "*loneferret*", cela pourra toujours nous être utile si nous venons à devoir utiliser *Hydra*.

Nous voyons aussi qu'une galerie est disponible. Nous savons donc qu'il existe un dossier "*gallery*", il nous faudra regarder ce qu'il contient.

Après avoir fouiller un peu, on voit que LotusCMS est mentionné sur la page de *login*.

Regardons un peu du côté de *Metasploit* s'il n'y a pas une entrée concernant LotusCMS.

````
   search LotusCMS

````

# Exploitation

## Première méthode

Il existe en effet un exploit, permettant l’exécution de code à distance. Nous allons donc l'utiliser.

````
   use exploit/multi/http/lcms_php_exec
   set RHOST 192.168.1.30
   set URI /
   set payload php/bind_php
   exploit

````

Nous avons maintenant un shell sur la cible. Après avoir cherché un peu sur la cible, nous trouvons un fichier *gallery/gconfig.php* qui dispose du mot de passe pour accéder à *phpMyAdmin*.

````
   cat gallery/gconfig.php

````

Allons maintenant sur *phpMyAdmin*, et connectons-nous pour accéder aux bases de données.

Après avoir fouillé un peu, nous finissons par trouver 2 comptes intéressants, présent dans la database nommée "*gallery*", et la table "*dev\_accounts*".

Après avoir crack le md5 du mot de passe de *loneferret*, nous allons maintenant essayer de nous connecter directement sur son compte via SSH.

````
   ssh loneferret@192.168.1.30

````

En lisant le fichier *CompanyPolicy.README*, on nous dit que nous pouvons utiliser *sudo ht*, il s'avère que *ht* est un éditeur de texte, nous allons l'utiliser pour modifier */etc/sudoers*.

Modifions maintenant la ligne de *loneferret* pour récupérer le droit de lancer *su*, et donc devenir *root*.

````
   loneferret ALL=NOPASSWD: /bin/su, /usr/local/bin/ht

````

Finissons-en ! Augmentons nos privilèges.

````
   sudo su

````

La machine est **rootée**. *Partie Terminée*. :)

## Deuxième méthode

Nous avions vu qu'un des membres utilise comme pseudo "*loneferret*", nous allons pouvoir essayer de récupérer son mot de passe SSH, via *Hydra*.

Pour ceci nous allons utiliser une liste de mot de passe standard (john.txt.bz2), disponible ici : https://wiki.skullsecurity.org/Passwords

Il est bon de savoir que cette liste est disponible de base sous Kali. Pour la trouver, il suffira d'utiliser *locate*.

````
   locate john.txt

````

Maintenant que nous avons cette liste de mot de passe, nous allons pouvoir passer au brute-force.

````
   hydra -l loneferret -P /usr/share/wfuzz/wordlist/fuzzdb/wordlists-user-passwd/passwds/john.txt -t 8 ssh://192.168.1.30

````

Bien que cela soit particulièrement long et peu furtif, nous finissons par récupérer le mot de passe. Nous pouvons nous connecter sur le compte de *loneferret*, pour la suite, l'exploitation reste la même. Nous utiliserons donc *sudo ht*, et nous modifierons */etc/sudoers*.

# Sécurisation

Reprenons, dans un premier temps, nous avons fait face à un CMS faillible, n'ayant visiblement pas de nouvelles mises à jour disponibles, il serait donc nécessaire d'en changer complètement.

Ce faisant nous n'aurions pas eu accès à *phpMyAdmin*, puisque nous n'aurions pas eu le mot de passe contenu dans *gallery/gconfig.php*.

Cependant, il faut aussi prendre en compte que le *sudo ht* est un gros problème de sécurité, permettant la modification des droits. Et même si nous n'avions pas eu accès à la base de donnée, nous avons trouvé le mot de passe de *loneferret* en utilisant *Hydra*. De ce fait, même sans serveur HTTP, il est possible de rentrer sur la cible. Et même de devenir *root*.

Il faudrait donc retirer le droit de lancer *ht* en tant que root aux utilisateurs.

Il est bon de noter que le système n'est pas à jour, et même s'il semble que l'exploit (EDB-ID 9479) n'est pas d'impact, il faudrait mettre à jour ce système !

Il semblerait qu'avec ces modifications, la machine soit sécurisée.

# A voir aussi

* Kioptrix Level 4
* Hydra
* Linux