Sqlmap sur applis cassées et WAF
Tamper, injection blind et moment où l'automatisation n'est plus le bon outil.
Le paramètre renvoyait 500 sur une quote. Sqlmap a tourné vingt minutes, s'est fait bloquer par ModSecurity, et on a déclaré "pas de SQLi."
Pendant ce temps la requête empilée dans l'export admin attendait dans un POST que personne n'a fuzzé parce que le WAF ne regardait que le GET.
La cheat sheet sqlmap couvre les flags. Le comportement WAF et l'appli décident si ça aide ou si vous prenez du rate-limit.
Confirmer à la main avant d'automatiser
Une quote. Une paire booléenne. Un SLEEP si vous suspectez du blind :
' OR '1'='1
' AND '1'='2
'; SELECT SLEEP(5)--
Pointez sqlmap sur une requête précise :
sqlmap -r request.txt -p id --batch --level 3 --risk 2
Capturez request.txt depuis Burp avec cookies et headers. Session manquante = faux négatif classique.
Tamper en boucle
sqlmap -r request.txt --tamper=space2comment,between --random-agent --delay=1
--delay et --threads=1 sur applis fragiles. Même page de blocage à chaque payload : arrêtez sqlmap et changez de point d'injection.
Injection second ordre
Payload stocké, exécuté dans un rapport ou un mail plus tard. Sqlmap ne découvre pas ce scénario tout seul.
Cartographiez : entrée, stockage, requête déclencheuse. Pénible. C'est pour ça que c'est raté.
Quand arrêter sqlmap
Paramètre clairement paramétré, bloc WAF à 100%, ou vous avez déjà un shell par un autre vecteur.
Documentez tamper, level/risk, temps passé. Les clients demandent. Si le paramètre est clairement paramétré avec des types liés et sans cast bizarre, passez à la logique métier ou à l'IDOR.
Le WAF qui renvoie la même page de blocage pour chaque payload après trois tamper différents n'est pas un défi de persévérance. C'est un signal pour changer de surface d'attaque.
FAQ
Sqlmap doit-il être la première étape sur chaque paramètre ?
Souvent non. Une quote manuelle ou un test timing confirme la piste avant de générer du volume. Sqlmap est bruyant et facile à logger.
Quel tamper essayer derrière un WAF ?
Pas de réponse universelle. space2comment et between sont des départs courants. Itérez quand la forme des erreurs change.
Quand chasser une injection SQL second ordre ?
Quand l'entrée est stockée puis exécutée plus tard : inscription, profil, tables de logs. Sqlmap ne devine pas le délai sans que vous mappiez le flux.
FAQ
- Sqlmap doit-il être la première étape sur chaque paramètre ?
- Souvent non. Une quote manuelle ou un test timing confirme la piste avant de générer du volume. Sqlmap est bruyant et facile à logger.
- Quel tamper essayer derrière un WAF ?
- Pas de réponse universelle. space2comment et between sont des départs courants. Itérez quand la forme des erreurs change.
- Quand chasser une injection SQL second ordre ?
- Quand l'entrée est stockée puis exécutée plus tard : inscription, profil, tables de logs. Sqlmap ne devine pas le délai sans que vous mappiez le flux.