Authentification, Sessions, Droits d'accès

Jean-Marc Lecarpentier

 

Authentification, Sessions, Droits d'accès

Voir les cas classiques où les données fournies par le client peuvent être utilisées à des fins négatives

Travail personnel

Sites publics

Trouver un blog Wordpress sur le web. Trouver l'URL de connexion à l'interface d'administration. Essayer de vous connecter avec un nom d'utilisateur. Que peut-on déduire du message d'erreur ? Essayer avec divers noms d'utilisateur en essayant d'en trouver un correct sur le site.

Avec un site local

Installation

Un site basique vous est fourni. Il permet de rédiger des articles avec une image d'illustration. Un article est en mode brouillon par défaut, et doit être validé afin d'être visible sur le site. Le site fourni permet simplement de lister les articles publiés et de faire une recherche d'article.

Installer sur votre serveur de développement le site fourni par cette archive. Il faut pour cela simplement modifier le fichier config.php pour y préciser les accès à votre serveur mySQL. Un fichier SQL est fourni pour avoir une base de démarrage. (UPDATE : fichier dump SQL

Ne pas analyser le code source pour l'instant !

Utilisation du site et trous de sécurité

Parcourir le site et analyser la navigation dans le site.

Sans regarder la base de données, trouver un moyen de déterminer si un nom d'utilisateur existe ou non. Essayer de se connecter avec ce nom d'utilisateur (sans regarder le mot de passe). Comment contourner la limite de 3 tentatives de connexion ?

Utiliser une injection SQL pour se connecter en admin (sans utiliser son login). Analyser le code de la classe Auth (fichier Auth.php) pour comprendre pourquoi l'injection SQL vous a connecté en admin.

Connectez-vous en tant que rédacteur. Essayez de modifier ou de mettre en brouillon un article ne vous appartenant pas. Analysez le code PHP pour identifier le problème.

Fonctionnement des sessions

Voler une session, méthode 1

Trouver le nom du cookie qui sert à stocker votre identifiant de session.

Utiliser un autre navigateur (Chrome par exemple), aller sur le site (SANS se connecter) et modifier le cookie de session (voir comment faire) pour "voler" la session qui était ouverte sur Firefox.

Quelle(s) solution(s) pour prévenir ce risque ?

Voler une session, méthode 2

Désactiver les cookies dans votre navigateur puis connectez-vous sur le site. Observez alors les liens créés.

Écrire et publier un article avec un lien vers un autre article du site (créer le lien avec un copier/coller de l'URL). Faites alors consulter votre article par votre voisin (NON connecté au site). Que se passe-t-il lorsqu'il clique sur le lien que vous avez créé dans l'article ?

Quelle(s) solution(s) pour prévenir ce risque ?

Voler une session, méthode 3

Utiliser la faille du file upload de la séance précédente pour créer une image qui contient un code PHP qui vous communiquera l'identifiant de session de l'utilisateur qui a chargé l'image.

Quelle(s) solution(s) pour prévenir ce risque ?

Ataque Brute Force sur le site

Les utilisateurs du site ont un mot de passe qui est dans le dictionnaire des mots français de 4 lettres (fourni ici). On va donc utiliser les indices obtenus auparavant pour

  1. trouver un nom d'utilisateur valide
  2. essayer de trouver son mot de passe

Pour lancer cette attaque, écrire un programme dans le langage de votre choix.

Utilisation de ZAP

Installer le logiciel OWASP ZAP pour tester ses fonctionnalités d'outil de veille sécurité.

Analyse du code source

En s'aidant du code source du site, réaliser les diverses "attaques" ci-dessus.

Correction de code

Corriger le code source du site pour ne plus être une cible potentielle.

Synthèse

Synthèse en groupe des problèmes relevés et de leurs solutions

 
Tim Berners Lee, créateur de HTTP et HTML. A l'origine du Web, il dirige maintenant le W3C C'est avec Mosaic, premier navigateur graphique que le web pris réellement son essor en 1993
 
Fermer