
Escáner CLI basado en Go para envenenamiento de caché web y engaño. Soporta 10 técnicas de envenenamiento, múltiples métodos de engaño, rastreador integrado, informes JSON e integración de proxy para pruebas de penetración.
Web Cache Vulnerability Scanner (WCVS) es un escáner CLI rápido y versátil para envenenamiento de caché web y decepción de caché web, desarrollado por Hackmanit y Maximilian Hildebrand.
El escáner admite muchas técnicas diferentes de envenenamiento de caché web y decepción de caché web, incluye un rastreador para identificar más URLs a probar, y puede adaptarse a una caché web específica para pruebas más eficientes. Es altamente personalizable y se puede integrar fácilmente en pipelines CI/CD existentes.
Los binarios precompilados de WCVS se proporcionan en la página de lanzamientos.
apt install web-cache-vulnerability-scannerpacman -S wcvsEl repositorio se puede instalar usando Go.
go1.21 y superior
go install -v github.com/Hackmanit/Web-Cache-Vulnerability-Scanner@latest
$ docker build .
Sending build context to Docker daemon 29.54MB
Step 1/10 : FROM golang:latest AS builder
---> 05c8f6d2538a
Step 2/10 : WORKDIR /go/src/app
---> Using cache
---> f591f24be8cf
Step 3/10 : COPY . .
---> 38b358dd3472
Step 4/10 : RUN go get -d -v ./...
---> Running in 41f53de436c5
....
Removing intermediate container 9e2e84d14ff3
---> 1668edcf6ee3
Successfully built 1668edcf6ee3
$ docker run -it 1668edcf6ee3 /wcvs --help
https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner
version 1.0.0
WCVS es altamente personalizable mediante sus banderas. Muchas de las banderas pueden contener un valor directamente o la ruta a un archivo.
La única bandera obligatoria es -u/--url para proporcionar la URL objetivo que se probará para envenenamiento/decepción de caché web. La URL objetivo se puede proporcionar en diferentes formatos.
WCVS necesita dos listas de palabras para probar las primeras 5 técnicas: una lista de palabras con nombres de encabezados y otra con nombres de parámetros. Las listas de palabras pueden estar presentes en el mismo directorio desde donde se ejecuta WCVS o especificarse mediante las banderas --headerwordlist/-hw y --parameterwordlist/-pw.
wcvs -u 127.0.0.1
wcvs -u http://127.0.0.1
wcvs -u https://example.com
wcvs -u file:path/to/url_list
wcvs -u https://example.com -hw "file:/home/user/Documents/wordlist-header.txt"
wcvs -u https://example.com -pw "file:/home/user/Documents/wordlist-parameter.txt"
wcvs -u https://example.com -hw "file:/home/user/Documents/wordlist-header.txt" -pw "file:/home/user/Documents/wordlist-parameter.txt"
--cacheheader/-ch especifica un encabezado de caché personalizado que se comprobará para aciertos y fallos de caché--setcookies/-sc especifica cookies que se agregarán a la solicitud--setheaders/-sh especifica encabezados que se agregarán a la solicitud--setparameters/-sp especifica parámetros que se agregarán a la solicitud. Si bien también es posible agregarlos simplemente a la URL, en algunos casos puede ser más útil agregarlos mediante esta bandera.--post/-post cambia el método HTTP de GET a POST--setbody/-sb especifica el cuerpo que se agregará a la solicitud--contenttype/-ct especifica el valor del encabezado Content-Type--useragentchrome/-uac cambia el User-Agent de WebCacheVulnerabilityScanner v{Version-Number} a Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36. Aunque se puede lograr lo mismo con, por ejemplo, -sh "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..., esta bandera proporciona una forma más rápida.--cacheheader/-ch especifica un encabezado de caché personalizado (no distingue entre mayúsculas y minúsculas)wcvs -u https://example.com -ch "X-Custom-Header-ABC"
wcvs -u https://example.com -sc "PHPSESSID=123"
wcvs -u https://example.com -sc "file:/home/user/Documents/cookies.txt"
wcvs -u https://example.com -sh "Referer: localhost"
wcvs -u https://example.com -sh "file:/home/user/Documents/headers.txt"
wcvs -u https://example.com -sp "admin=true"
wcvs -u https://example.com -sp "file:/home/user/Documents/parameters.txt"
wcvs -u https://example.com -post -sb "admin=true"
wcvs -u https://example.com -post -sb "file:/home/user/Documents/body.txt"
wcvs -u https://example.com -post -sb "{}" -ct "application/json"
wcvs -u https://example.com -uac
wcvs -u https://example.com -ch "X-Custom-Cache-Header"
Se genera un informe JSON y se actualiza después de cada URL escaneada si se establece la bandera --generatereport/-gr.
El informe se escribe, al igual que un archivo de registro, en el mismo directorio desde donde se ejecuta WCVS. Para cambiar el directorio de todos los archivos de salida, use --generatepath/-gp.
Si los caracteres especiales HTML deben codificarse en el informe, use --escapejson/-ej.
wcvs -u https://example.com -gr
wcvs -u https://example.com -gr -ej
wcvs -u https://example.com -gr -gp /home/user/Documents
wcvs -u https://example.com -gr -gp /home/user/Documents -ej
Para rastrear URLs, es necesario establecer --recursivity/-r. Especifica qué tan profundo llegará el rastreador en términos de recursividad.
Por defecto, WCVS solo rastrea URLs del mismo dominio. Para rastrear también otros dominios, se puede usar --recdomains/red.
Para rastrear solo URLs que hereden una cadena específica, se puede usar --recinclude/-rin.
--reclimit/-rl limita cuántas URLs se rastrean para cada profundidad de recursividad.
Además, se puede especificar una lista de URLs que no se deben rastrear con --recexclude/-rex. --generatecompleted/-gc se puede usar, por ejemplo, para generar una lista con todas las URLs ya probadas. Si se repite un escaneo, pero WCVS no debe rastrear y probar nuevamente las mismas URLs, esta lista se puede usar para --recexclude/-rex.
wcvs -u https://example.com -r 5
wcvs -u https://example.com -r 5 -red /home/user/Documents/mydomains.txt
wcvs -u https://example.com -r 5 -rl 2
wcvs -u https://example.com -r 5 -rex /home/user/Documents/donttest.txt
Para usar un proxy, especifique --useproxy/-up. Si está usando Burp, asegúrese de desmarcar "Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it". De lo contrario, algunas técnicas que dependen de encabezados no conformes con RFC no funcionarán.
La URL predeterminada para el proxy es http://127.0.0.1:8080. Para cambiarla, use --proxyurl/-purl.
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
El número máximo de solicitudes permitidas por segundo se puede establecer con --reqrate/-rr. Por defecto, este número es ilimitado.
Por el contrario, la cantidad de solicitudes por segundo se puede aumentar potencialmente si se usa --threads/-t para aumentar el número de hilos concurrentes que utiliza WCVS. El valor predeterminado es 20.
wcvs -u https://example.com -rr 10
wcvs -u https://example.com -rr 1
wcvs -u https://example.com -rr 0.5
wcvs -u https://example.com -t 50
WCVS proporciona incluso más banderas y opciones de las mencionadas anteriormente. --help/-h proporciona una lista de cada bandera, su significado y cómo usarla.
wcvs -h
Una breve serie de publicaciones de blog que brindan más información sobre el envenenamiento de caché web y WCVS se puede encontrar aquí:
La primera versión de Web Cache Vulnerability Scanner (WCVS) se desarrolló como parte de una tesis de licenciatura de Maximilian Hildebrand.
WCVS es desarrollado por Hackmanit y Maximilian Hildebrand y está licenciado bajo la Apache License, Version 2.0.