Failles web: TD

Installation

Pour lancer l'application, téléchargez l'archive suivante:

boulangerie.zip

Code source de l'application (Docker)

Vous pouvez alors exécutez docker-compose up pour lancer l'application. Plusieurs containers s'éxécutent:

  • Un container web pour l'application
  • Un container phpmyadmin pour l'administration de la base de données
  • Un container mysql pour la base de données

L'application est déployée sur un serveur distant, que nous utiliserons pour tester nos attaques. Vous pouvez tester qu'elle fonctionne:

Boulangerie

Application en "production"

Pour des raisons évidentes, l'application ne sera lancée que pendant la durée du TD.

N'utilisez pas de mot de passe sensible sur cette application.

XSS

L'application proposée est vulnérable à une faille reflected XSS. Trouvez la.

En vous aidant de l'exemple vu en cours, vous forgerez un lien qui vise à attaquer un utilisateur de l'application, et à lui voler son cookie de session. Pour cela, vous utiliserez le service suivant afin de récolter le cookie de session:

Logger

Outil permettant de logger des requêtes

Vous testerez ce sur l'application distante, à l'aide d'un autre étudiant.

CSRF

Le site est également vulnérable à une faille CSRF. Trouvez la.

En vous aidant de l'exemple vu en cours, vous créerez une page HTML qui permettra d'exploiter la faille trouvée. Afin de tester avec un autre étudiant, vous pourrez utiliser le service en ligne suivant, qui vous permettra d'écrire une page qui exploite la faille:

Hoster

Outil permettant d'héberger des pages HTML

Reproduisez l'attaque sur votre propre instance de l'application.

Implémentez une protection contre cette faille dans votre version de l'application.

Injections SQL

Injection par UNION

L'application est vulnérable à une injection SQL par UNION. Trouvez la.

Exploiterez cette faille pour récupérer les mots de passes des utilisateurs.

Injection à l'aveugle

L'application est vulnérable à une injection à l'aveugle. Trouvez la.

Exploitez cette faille afin de récupérer le mot de passe d'un utilisateur ciblé.

Indication: vous aurez besoin pour cela de forger des requêtes HTTP manuellemet. Vous pourrez par exemple vous aider de Python et de l'API requests.