Retour
Failles de sécurité web

Failles de sécurité web

TP BTS SIO 2ème année — série de 3 TPs d'analyse de failles de sécurité web courantes (injection SQL, XSS, CSRF, upload de fichiers), avec mise en évidence, exploitation et contre-mesures.

Description

Trois TPs de 2e année de BTS SIO consacrés aux principales failles de sécurité web. Pour chacune, démarche identique : on identifie la faille sur une application volontairement vulnérable, on l'exploite pour comprendre les conséquences, puis on met en place les contre-mesures côté code.

1. Injection SQL (TP Banque V1)

À partir d'une URL légitime (?action=profilClient&client=1), interception et modification de la requête via les DevTools pour injecter un UNION SELECT permettant de récupérer les identifiants/mots de passe de la table conseiller. Contre-mesures : requêtes préparées avec bindValue (typage PDO::PARAM_INT), filtrage avec htmlspecialchars(), jamais de SELECT *.

2. XSS — Cross-Site Scripting (TP Banque V1)

Deux variantes mises en évidence :

  • DOM-based XSS : injection de <script>document.body.innerHTML = 'Page défigurée';</script> dans le champ prénom → la page se réécrit côté client.
  • Reflected XSS : injection de <script>alert('XSS reflected');</script> → exécution du script à l'affichage.

Contre-mesures : échappement systématique des entrées (htmlspecialchars()), encoding contextuel, CSP headers.

3. CSRF — Cross-Site Request Forgery (TP Gestion_CCF / ConsulterCCF)

Mise en évidence : un utilisateur authentifié sur Gestion_CCF visite une autre application piégée (ConsulterCCF) qui effectue des actions en son nom (modification de données) en exploitant le cookie de session toujours actif.

Contre-mesures : implémentation d'un système de jetons CSRF — token généré à l'authentification, intégré comme champ caché dans chaque formulaire de modification, vérifié côté contrôleur avant traitement. Habitudes utilisateur : se déconnecter explicitement entre sessions.

4. Upload de fichiers (TP Gestion_CCF)

Mise en évidence : téléversement d'un fichier A_telecharger.php dans un dossier d'upload mal protégé → exécution arbitraire de code PHP côté serveur. Variante avec double extension A_telecharger.jpg.php qui contourne les filtres naïfs.

Contre-mesures :

  • Whitelister les extensions autorisées (jpg, png, mp4…)
  • Limiter la taille des fichiers
  • Renommer les fichiers téléversés (UUID)
  • Désactiver l'exécution PHP dans le dossier d'upload (config Apache/Nginx)
  • Vérifier le type MIME en plus de l'extension
  • Restreindre les caractères du nom de fichier (alphanumériques + tirets)
  • Préférer JSON à XML (failles XXE)
  • Restreindre les droits système sur le dossier d'upload

Technologies utilisées

PHP MySQL PDO Sécurité OWASP SQL Injection XSS CSRF Upload

Compétences BTS SIO

B1 Gérer le patrimoine informatique
B1.4 Vérifier les conditions de la continuité d'un service informatique

La sécurité d'une application est une condition directe de sa continuité : une faille exploitée peut entraîner défiguration de pages (XSS), vol de données (injection SQL), exécution arbitraire de code (upload), ou actions non consenties sur un compte utilisateur (CSRF) — autant d'incidents qui interrompent ou compromettent le service. Le TP a consisté à identifier ces failles sur des applications volontairement vulnérables, comprendre leurs impacts, puis mettre en place les contre-mesures côté code (requêtes préparées avec bindValue, htmlspecialchars, jetons CSRF, whitelist d'extensions à l'upload, désactivation de l'exécution PHP dans les dossiers de dépôt) pour garantir la disponibilité et l'intégrité du service.

Informations

Type Propriétaire