
Scanner CLI baseado em Go para envenenamento e decepção de cache web. Suporta 10 técnicas de envenenamento, múltiplos métodos de decepção, rastreador integrado, relatório em JSON e integração com proxy para testes de penetração.
O Web Cache Vulnerability Scanner (WCVS) é um scanner CLI rápido e versátil para envenenamento de cache web e decepção de cache web, desenvolvido pela Hackmanit e Maximilian Hildebrand.
O scanner suporta muitas técnicas diferentes de envenenamento de cache web e decepção de cache web, inclui um crawler para identificar mais URLs a testar, e pode se adaptar a um cache web específico para testes mais eficientes. É altamente personalizável e pode ser facilmente integrado em pipelines CI/CD existentes.
Binários pré-compilados do WCVS estão disponíveis na página de releases.
apt install web-cache-vulnerability-scannerpacman -S wcvsO repositório pode ser instalado usando Go.
go1.21 ou 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
O WCVS é altamente personalizável através de suas flags. Muitas das flags podem conter um valor diretamente ou o caminho para um arquivo.
A única flag obrigatória é -u/--url para fornecer a URL alvo que deve ser testada para envenenamento/decepção de cache web. A URL alvo pode ser fornecida em diferentes formatos.
O WCVS precisa de duas wordlists para testar as primeiras 5 técnicas — uma wordlist com nomes de cabeçalhos e outra com nomes de parâmetros. As wordlists podem estar presentes no mesmo diretório onde o WCVS é executado ou especificadas usando as flags --headerwordlist/-hw e --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 um cabeçalho de cache personalizado que será verificado para hits e misses de cache--setcookies/-sc especifica cookies que serão adicionados à requisição--setheaders/-sh especifica cabeçalhos que serão adicionados à requisição--setparameters/-sp especifica parâmetros que serão adicionados à requisição. Embora também seja possível adicioná-los diretamente à URL, em alguns casos pode ser mais útil adicioná-los através desta flag.--post/-post altera o método HTTP de GET para POST--setbody/-sb especifica o corpo que será adicionado à requisição--contenttype/-ct especifica o valor do cabeçalho Content-Type--useragentchrome/-uac altera o User-Agent de WebCacheVulnerabilityScanner v{Version-Number} para Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36. Embora o mesmo resultado possa ser obtido com e.g. , esta flag oferece uma maneira mais rápida.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"
Um relatório JSON é gerado e atualizado após cada URL escaneada se a flag --generatereport/-gr estiver definida.
O relatório é escrito, assim como um arquivo de log, no mesmo diretório onde o WCVS é executado. Para alterar o diretório de todos os arquivos de saída, use --generatepath/-gp.
Se caracteres especiais HTML devem ser codificados no relatório, 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 crawlear por URLs, é necessário definir --recursivity/-r. Ele especifica quão profundo o crawler irá em termos de recursão.
Por padrão, o WCVS apenas crawleia URLs do mesmo domínio. Para também crawlear outros domínios, use --recdomains/red.
Para crawlear apenas URLs que herdam uma string específica, use --recinclude/-rin.
--reclimit/-rl limita quantas URLs são crawleadas para cada profundidade de recursão.
Além disso, uma lista com URLs que não devem ser crawleadas pode ser especificada com --recexclude/-rex. --generatecompleted/-gc pode, por exemplo, ser usado para gerar uma lista com todas as URLs já testadas. Se o scan for repetido, mas o WCVS não deve crawlear e testar novamente as mesmas URLs, esta lista pode ser usada 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 um proxy, especifique --useproxy/-up. Se você estiver usando o Burp, certifique-se de desmarcar "Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it". Caso contrário, algumas técnicas que dependem de cabeçalhos não conformes com RFC não funcionarão.
A URL padrão para o proxy é http://127.0.0.1:8080. Para alterá-la, use --proxyurl/-purl.
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
O número máximo de requisições permitidas por segundo pode ser definido com --reqrate/-rr. Por padrão, este número é ilimitado.
Por outro lado, o número de requisições por segundo pode potencialmente ser aumentado se --threads/-t for usado para aumentar o número de threads simultâneas que o WCVS utiliza. O valor padrão é 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
O WCVS oferece ainda mais flags e opções além das mencionadas anteriormente. --help/-h fornece uma lista de cada flag, seu significado e como usá-la.
wcvs -h
Uma curta série de posts de blog fornecendo mais informações sobre envenenamento de cache web e WCVS pode ser encontrada aqui:
A primeira versão do Web Cache Vulnerability Scanner (WCVS) foi desenvolvida como parte de uma tese de bacharelado por Maximilian Hildebrand.
WCVS é desenvolvido pela Hackmanit e Maximilian Hildebrand e licenciado sob a Apache License, Version 2.0.
-sh "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...--cacheheader/-ch especifica um cabeçalho de cache personalizado (case-insensitive)