web-cache-vulnerability-scanner
Scanner automatisé d'empoisonnement de cache web et de déception. Teste les caches web pour les vulnérabilités d'empoisonnement, les attaques de déception de cache et la manipulation de clé de cache pouvant servir du contenu malveillant à d'autres utilisateurs. Automated web cache poisoning and deception scanner. Tests web caches for poisoning vulnerabilities, cache deception attacks, and cache key manipulation that could serve malicious content to other users.
↗ https://github.com/Hackmanit/Web-Cache-Vulnerability-ScannerOverview
Web Cache Vulnerability Scanner (WCVS) tests web applications for cache poisoning vulnerabilities. Cache poisoning allows an attacker to inject malicious content into a cache, which is then served to other users — a high-impact vulnerability often found in CDN and reverse proxy configurations.
Installation
go install github.com/Hackmanit/Web-Cache-Vulnerability-Scanner@latest
→ or download binary from GitHub releases
Basic Usage
Basic scan
wcvs -u https://target.com
Scan with all tests
wcvs -u https://target.com -all
Verbose output
wcvs -u https://target.com -v
Save results
wcvs -u https://target.com -l results.log
What WCVS Tests
Unkeyed header injection → Headers not in cache key can poison cached responses
wcvs -u https://target.com -head
Unkeyed parameter injection → URL parameters ignored by cache but processed by server
wcvs -u https://target.com -param
Cache deception (path normalization) → Tricks cache into storing sensitive responses
wcvs -u https://target.com -cdcp
Fat GET abuse → GET requests with body that affects response
wcvs -u https://target.com -fat
Cache Key Analysis
Test if specific headers affect cache keys
wcvs -u https://target.com -header "X-Forwarded-Host" -header "X-Forwarded-Port"
Test parameter exclusion
wcvs -u https://target.com -param "utm_source" -param "fbclid"
Check vary headers
curl -v https://target.com | grep "Vary:"
Manual Testing Approach
Step 1: Identify cached responses
curl -v https://target.com | grep "Cache\|Age\|X-Cache"
Step 2: Find unkeyed headers Try adding headers and checking if response changes but cache key doesn’t:
curl https://target.com -H "X-Forwarded-Host: evil.com"
→ If response includes evil.com but page is cached → cache poisoning
# Step 3: Verify cache poisoning
# Request 1: Poison the cache
curl https://target.com -H "X-Forwarded-Host: evil.com"
# Request 2: Different client fetches poisoned cache
curl https://target.com # Gets response with evil.com?
Tips
- Cache poisoning is most impactful on high-traffic pages (home page, login page)
- X-Forwarded-Host is the most commonly unkeyed and exploitable header
- Cache deception requires finding a URL that caches sensitive responses
- Combine with Host header injection for additional attack vectors
- Many bug bounty programs have high payouts for cache poisoning — worth the effort
- Check Vary: header — included headers ARE part of the cache key
Help / Man page
wcvs [options]
-u URL Target URL (required)
-all Enable all tests
-head Test header injection
-param Test parameter injection
-cdcp Test cache deception (path traversal)
-fat Test fat GET
-v Verbose
-l FILE Log file
-t N Threads (default: 1)
-header H Additional header to test
Vue d’ensemble
Web Cache Vulnerability Scanner (WCVS) teste les applications web pour les vulnérabilités d’empoisonnement de cache. L’empoisonnement de cache permet à un attaquant d’injecter du contenu malveillant dans un cache, qui est ensuite servi à d’autres utilisateurs : une vulnérabilité à fort impact, souvent trouvée dans les configurations de CDN et de reverse proxy.
Installation
go install github.com/Hackmanit/Web-Cache-Vulnerability-Scanner@latest
Ou télécharger le binaire depuis les releases GitHub
Utilisation de base
# Scan basique
wcvs -u https://target.com
# Scan avec tous les tests
wcvs -u https://target.com -all
# Sortie verbeuse
wcvs -u https://target.com -v
# Sauvegarder les résultats
wcvs -u https://target.com -l results.log
Ce que teste WCVS
# Injection d'en-tête non compris dans la clé de cache : les en-têtes absents
# de la clé de cache peuvent empoisonner les réponses mises en cache
wcvs -u https://target.com -head
# Injection de paramètre non compris dans la clé de cache : paramètres d'URL
# ignorés par le cache mais traités par le serveur
wcvs -u https://target.com -param
# Déception de cache (normalisation de chemin) : piège le cache pour qu'il
# stocke des réponses sensibles
wcvs -u https://target.com -cdcp
# Abus de fat GET : requêtes GET avec un corps qui affecte la réponse
wcvs -u https://target.com -fat
Analyse de la clé de cache
# Tester si des en-têtes spécifiques affectent les clés de cache
wcvs -u https://target.com -header "X-Forwarded-Host" -header "X-Forwarded-Port"
# Tester l'exclusion de paramètre
wcvs -u https://target.com -param "utm_source" -param "fbclid"
# Vérifier les en-têtes Vary
curl -v https://target.com | grep "Vary:"
Approche de test manuel
# Étape 1 : identifier les réponses mises en cache
curl -v https://target.com | grep "Cache\|Age\|X-Cache"
# Étape 2 : trouver les en-têtes non compris dans la clé de cache. Essayer
# d'ajouter des en-têtes et vérifier si la réponse change mais pas la clé de cache :
curl https://target.com -H "X-Forwarded-Host: evil.com"
# Si la réponse inclut evil.com mais que la page est mise en cache : empoisonnement de cache
# Étape 3 : vérifier l'empoisonnement de cache
# Requête 1 : empoisonner le cache
curl https://target.com -H "X-Forwarded-Host: evil.com"
# Requête 2 : un client différent récupère le cache empoisonné
curl https://target.com # Obtient-il la réponse avec evil.com ?
Conseils
- L’empoisonnement de cache a le plus d’impact sur les pages à fort trafic (page d’accueil, page de connexion)
- X-Forwarded-Host est l’en-tête le plus couramment absent de la clé de cache et exploitable
- La déception de cache nécessite de trouver une URL qui met en cache des réponses sensibles
- Combiner avec l’injection d’en-tête Host pour des vecteurs d’attaque supplémentaires
- De nombreux programmes de bug bounty offrent des récompenses élevées pour l’empoisonnement de cache : cela vaut l’effort
- Vérifier l’en-tête Vary : les en-têtes qui y figurent FONT partie de la clé de cache
Aide / Page de manuel
wcvs [options]
-u URL Target URL (required)
-all Enable all tests
-head Test header injection
-param Test parameter injection
-cdcp Test cache deception (path traversal)
-fat Test fat GET
-v Verbose
-l FILE Log file
-t N Threads (default: 1)
-header H Additional header to test