./nkardas
Retour aux projets
Web & MobileProjets Scolairesavril 2025

Sécurité Web

Pentesting sur DVWA et développement de PyFlaSQL. Exploitation de vulnérabilités (SQL Injection, XSS, File Inclusion) et apprentissage de la sécurité applicative.

Sécurité Web

Sécurité Web - Pentesting et Applications Vulnérables

Vue d'ensemble

Projet pratique de cybersécurité offensive et défensive explorant les vulnérabilités web courantes (OWASP Top 10) à travers le pentesting d'applications volontairement vulnérables (DVWA) et le développement d'une application intentionnellement faillible (PyFlaSQL).

Contexte et Objectifs

Dans le cadre du cours "Sécurité des réseaux informatiques pour le Web et l'IoT", le projet vise à acquérir des compétences pratiques en tests de pénétration éthiques, identification et exploitation de vulnérabilités, et développement sécurisé d'applications web. L'approche pédagogique combine apprentissage théorique et exploitation pratique contrôlée.

Structure du Projet

1. PortSwigger Academy

Plateforme d'apprentissage avec laboratoires pratiques couvrant diverses vulnérabilités web (SQL Injection, XSS, CSRF, etc.).

2. Pentesting sur DVWA

Tests de pénétration sur Damn Vulnerable Web Application (PHP/MySQL) avec 3 niveaux de difficulté (Low, Medium, High) pour explorer les vulnérabilités et leurs contre-mesures progressives.

3. Développement de PyFlaSQL

Création d'une application Flask (Python) intentionnellement vulnérable pour démonstration éducative des failles OWASP Top 10 2021.

Vulnérabilités Exploitées

File Inclusion (LFI/RFI)

Principe : Inclusion de fichiers non autorisés (locaux ou distants) par manipulation des paramètres d'entrée.

Exploitation :

  • Low : Aucune validation → ../../../../../../etc/passwd
  • Medium : Protection str_replace() → Contournement ..././..././ (double encodage)
  • High : Fichier doit commencer par filefile:///etc/passwd

Contre-mesure : Whitelist stricte de fichiers autorisés, validation des chemins, désactivation de allow_url_include.

SQL Injection

Principe : Injection de code SQL malveillant via les paramètres non sanitizés.

Exploitation :

  • Low : 1' OR '1'='1 → Affichage de tous les utilisateurs
  • Medium : Formulaire POST avec mysqli_real_escape_string() contournable
  • High : Session avec protection améliorée

Techniques : Union-based, Blind, Time-based, SQLMap pour automatisation

Contre-mesure : Requêtes préparées (prepared statements), validation stricte, principe du moindre privilège pour DB.

Cross-Site Scripting (XSS)

Principe : Injection de scripts JavaScript malveillants dans les pages web.

Types :

  • Stored XSS : Script stocké en base de données (ex: commentaires)
  • Reflected XSS : Script dans l'URL reflété par l'application
  • DOM-based XSS : Manipulation du DOM côté client

Exploitation : <script>alert(document.cookie)</script>, vol de cookies, redirection malveillante

Contre-mesure : Échappement HTML, Content Security Policy (CSP), HttpOnly cookies.

Command Injection

Principe : Exécution de commandes shell arbitraires via les paramètres d'entrée.

Exploitation : 127.0.0.1; cat /etc/passwd, 127.0.0.1 && whoami

Contre-mesure : Éviter exec(), system(), validation stricte, sandboxing.

CSRF (Cross-Site Request Forgery)

Principe : Forcer un utilisateur authentifié à exécuter une action non désirée.

Exploitation : Formulaire HTML auto-submit vers l'application cible avec actions administratives

Contre-mesure : Tokens CSRF uniques par session, validation de l'origine (Referer/Origin headers), SameSite cookies.

Développement de PyFlaSQL

Objectif : Créer une application Flask intentionnellement vulnérable pour démonstration éducative.

Vulnérabilités implémentées :

  • SQL Injection (requêtes brutes)
  • XSS (pas d'échappement HTML)
  • CSRF (pas de tokens)
  • Injection de commandes
  • Gestion insécurisée des sessions

Apprentissages : Comprendre comment les vulnérabilités sont introduites dans le code et comment les corriger (versioning sécurisé vs vulnérable).

Défis et Apprentissages

Contournement de protections : Apprendre à identifier et contourner les protections faibles (filtres mal implémentés, validation insuffisante).

Exploitation éthique : Maîtriser les techniques offensives dans un cadre contrôlé et légal pour mieux défendre.

Pensée attaquant : Développer une mentalité de recherche de failles pour sécuriser ses propres applications.

Bonnes pratiques : Comprendre l'importance de la validation côté serveur, des requêtes préparées, de l'échappement HTML et des tokens CSRF.

Technologies Utilisées

Pentesting : DVWA (PHP/MySQL), Burp Suite, SQLMap, PortSwigger Academy

Développement : Python, Flask, SQLite

Outils : Kali Linux, netcat, reverse shells, serveurs HTTP Python

Compétences Développées

  • Tests de pénétration éthiques (pentesting)
  • Exploitation de vulnérabilités web (SQL Injection, XSS, CSRF, LFI/RFI, Command Injection)
  • Utilisation d'outils offensifs (Burp Suite, SQLMap)
  • Développement d'applications web (Flask, Python)
  • Analyse de code et identification de failles de sécurité
  • Mise en œuvre de contre-mesures et bonnes pratiques OWASP