UPJV - IUT Amiens
LP RGI
Système

TD - Sécurité des applications Web

C. Drocourt
cyril.drocourt AT
u-picardie DOT fr

Points de cours abordés  :

- Authentification,
- Cookies,
- Les sessions,
- Injection SQL,
- XSS,

Exercice 1 : Authentification

1 - Exécuter Wireshark,
2 - Se rendre sur http://www.u13.org/tempor/ch3/access/basic/,
3 - Authentification rezo – thebest,
4 - Récupérer le mot de passe avec Wireshark,

Exercice 2 : Cookies

1 - Consulter les cookies sur firefox (Outils/Options/Vie privée),
2 - Consulter    les   cookies    sur   IE   (Outils/Option   Internet/Fichiers Internet  Temporaires/Paramètres/Afficher les fichiers),
3 - Exécuter Wireshark,
4 - Consulter le site www.u13.org/tempor/ch3, répertoire cookies,
5 - Consulter le script cookie_read.php,
6 - Consulter le script cookie_set.php,
7 - Consulter à nouveau le script cookie_read.php,
8 - Constater avec Wireshark,

Exercice 3 : Les sessions

1 - Installer le plugin webdeveloper firefox,
2 - Capturer les trames avec Wireshark,
3 - Se connecter a partir de la 1ere machine sur www.u13.org/tempor/ répertoire ch4/phpsession,
4 - Donner comme login « leroidumonde »,
5 - Se connecter a partir de la 2eme machine (avec firefox) SANS authentification -> Impossible,
6 - Modifier la valeur du cookie en mettant la valeur du premier,
7 - Se reconnecter ...

Exercice 4 : Injection SQL

1 – Connectez vous sur le site http://www.u13.org/tempor, répertoire ch4/sqlinjection,
2 – Tentez de vous identifier,
3 – Tentez d'exploiter une injection SQL pour vous identifier,

Exercice 5 : XSS

1 – Connectez vous sur http://www.u13.org/tempor, répertoire ch4/xss.
2 – Appelez la page suivante index.php?toto=d;
3 – Appelez la page suivante index.php?toto=d;<script>alert('Danger !');</script>

Remarque : Si cela ne fonctionne pas vous utiliserez l'URL suivante : http://titan.prive.iut-amiens.fr/u13/

Exercice 6 : Apache et Réécriture

1 – Vous allez créer un script nommé "index.php" que vous metterez dans votre VirtualHost tp2-sslXX.
<?php
if(!empty($_GET['page'])&&(file_exists($_GET['page']))) $pagedefaut=($_GET['page']);
echo "<html><body>";
echo "Le fichier demande est : $pagedefaut<br />";
include($pagedefaut);
echo "</html></body>";
?>
Quel est le problème de ce script ?
Que fait la requête : index.php?page=/etc/passwd ?
Modifiez la configuration de votre VirtualHost et ajoutez :

php_admin_value open_basedir '/var/www/vhosts/tp2-sslxx...'

2 – Vous réalisererez un fichier "construction" et un fichier "accueil", testez avec index.php?page=accueil et idem pour la page construction.

3 – Vous allez modifier votre VirtualHost et utiliser la réécriture d'adresses pour protéger ce site Web. Vous aurez les deux réécritures suivantes :
– https://tp2-sslxx.prive.iut-amiens.fr/index.html qui sera en fait https://tp2-sslxx.prive.iut-amiens.fr/index.php?page=accueil
– https://tp2-sslxx.prive.iut-amiens.fr/XXX.html qui sera en fait https://tp2-sslxx.prive.iut-amiens.fr/index.php?page=XXX, vous testerez avec construction.html,
– Les autres adresses seront inaccessibles (Forbidden).

Exercice 7 : Firewall Applicatif


1 – Installez le module Apache "mod_security",
2 – Consultez le fichier principal de configuration /etc/httpd/conf.d/mod_security.conf,
3 – A l'aide de la commande "nc" vérifiez que dans vos en-têtes de réponses HTTP, la balise "server" possède toujours la valeur "Apache",
HTTP/1.1 200 OK
Date: Thu, 01 May 20XX 06:34:14 GMT
Server: Apache
Accept-Ranges: bytes
Content-Length: 1340
Connection: close
Content-Type: text/html; charset=ISO-8859-1
4 – Rechercher la bonne option du fichier "mod_security.conf" (qui n'est pas positionnée par défaut), permettant de changer cette valeur par "Mon serveur 1.0",
HTTP/1.1 200 OK
Date: Thu, 01 May 20XX 06:34:14 GMT
Server: Mon serveur 1.0
Accept-Ranges: bytes
Content-Length: 1340
Connection: close
Content-Type: text/html; charset=ISO-8859-1
5 – Tentez une connexion sur l'une de vos pages utilisant l'indexation automatique, alors ?
6 – Installez maintenant le paquet "mod_security_crs" qui contient les règles de base, quels sont les fichiers installés par ce paquet ?
7 – Dans le fichier de configuration "mod_security.conf", modifiez la valeur de la variable "SecResponseBodyAccess" à "On", rechercher sur Internet la conséquence de cette modification,
8 – Redémarrez "Apache" et tentez à nouveau une connexion sur l'une de vos pages utilisant l'indexation automatique, alors ?
9 – Rechercher le fichier de règles responsable ainsi que la règle précise au dessus de laquelle vous ajouterez un commentaire d'explication en français,
10 – Créez un reverse proxy sur www.u13.org, qui sera utilisé par tp2-fwXX.prive.iut-amiens.fr/u13/ via les règles de réécritures,
11 – Créez un reverse proxy sur titan/u13/, qui sera utilisé par tp2-fwXX.prive.iut-amiens.fr/titan-u13/ via les règles de réécritures,
12 – Tentez les attaques précédentes en passant par votre VirtualHost, et en regardant de près le fichier error_log d'Apache et les logs spécifiques à "ModSecurity",
13 – Assurez vous que les attaques précédentes soient bloquées, dans le cas contraire modifiez la configuration de "mod_security" pour les interdire,