Méthodologie d’un test intrusion d’un serveur web en pratique. Partie 4 – La phase de post-exploitation : Elévation de privilèges

Petit rappel : si vous désirez faire réaliser un audit, vous trouverez toutes les informations sur mon site : https://resistez-aux-hackeurs.com

L’accès obtenu (par metasploit ou le téléversement d’un script sur le serveur) possède des droits limités. Il s’agit du compte <www-data> (si intrusion via le service web, ou tomcat,,ou du compte ssh)  qui permet la gestion du serveur web.

Compte utilisé pour notre shell

Notre prochaine étape est donc d’obtenir les droits du compte administrateur (root) ce qui nous permettra d’effectuer toutes les actions que nous souhaitons : installation d’une backdoor, effacement des fichiers logs, récupération cassage des comptes utilisateurs, etc.

Il y a 2 moyens généralement utilisés pour escalader ses privilèges sur un système :

  • Exploiter une faiblesse de configuration
  • Exploiter une vulnérabilité du noyau

Auant le dire d’emblée, l’escalade de privilèges est souvent une phase pénible et fastidieuse : en l’absence de vulnérabilités liées à une mauvaise configuration du système, il faut alors se rabattre  sur un vulnérabilité du noyau, et cela se traduit par les tester récursivement une à une jusqu’à en trouver une qui fonctionne. Ce qui peut être très long…

1    Préparer l’escalade de privilèges

Avant de chercher à exploiter une vulnérabilité du noyau, nous allons d’abord énumérer les informations disponibles sur le système et chercher s’il n’y a pas une vulnérabilité plus simple à exploiter (mots de passe présents dans l’historique, bit setuid, mauvais droits appliqués sur des montages, etc.).

Il existe 3 outils (souvent similaires) qui permettent d’analyse d’un système à la recherche de vulnérabilités :

Dans le cas présent, nous allons utiliser l’outil Linux_Priv_Checker.

Enumération pour l’escalade de privilèges

Elever ses privilèges par une vulnérabilité du noyau

Si aucune vulnérabilité liée à la configuration n’a été détectée, il va falloir se rabattre sur les vulnérabilités liées au noyau.

Un outil peut s’avérer précieux pour trouver des vulnérabilités adaptées au noyau du serveur audité (système d’exploitation, noyau), il s’agit de l’outil « searchsploit[1] ». Celui-ci est une base d’exploits qui permet de chercher des exploits locaux/distance selon le logiciel, la distribution, etc.

L’outil Linux Exploit Suggester suggère des exploits en fonction de la version du noyau Linux.

Dans le cas présent, nous allons utiliser la vulnérabilité CVE-2016-5195 (baptisée Dirty Cow) pour escalader nos privilèges. Cette vulnérabilité permet à un attaquant de gagner les privilèges de niveau root sur le système affecté en obtenant l’accès en écriture à des zones de mémoire normalement accessibles en lecture seule.

Plus d’informations sur cette vulnérabilité sont disponibles ici : https://www.cyberisk.biz/linux-privilege-escalation-vulnerablilty-cve-2016-5195-aka-dirty-cow/

(il est intéressant den noter que cette vulnérabilité n’a pas été trouvé lors de la recherche avec l’outil searchploit)

Après avoir téléchargé l’exploit sur le serveur vulnérable, il faut modifier celui-ci et dé-commenter le bon shellcode (selon l’architecture en 32 ou 64 bits) :

Après avoir modifié l’exploit (commenter/décommenter la bonne architecture) et compilé celui-ci., son exécution permet d’obtenir les droits root :

Enfin root 🙂

Recommandation :

  • Tenir son système et les composants à jour
  • durcir l’accès aux outils de développement tels que gcc, python, perl

Maintenant que nous sommes devenus root, nous allons pouvoir nous pencher sur la phase de post-exploitation.


[1] https://github.com/offensive-security/exploit-database/blob/master/searchsploit

Visits: 520