← retour aux outils back to tools

# 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-Scanner

## Overview

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