
Scanner CLI basato su Go per il cache poisoning e deception web. Supporta 10 tecniche di poisoning, molteplici metodi di deception, crawler integrato, report in JSON e integrazione proxy per penetration testing.
Web Cache Vulnerability Scanner (WCVS) è uno scanner CLI veloce e versatile per il web cache poisoning e il web cache deception, sviluppato da Hackmanit e Maximilian Hildebrand.
Lo scanner supporta molte diverse tecniche di web cache poisoning e web cache deception, include un crawler per identificare ulteriori URL da testare, e può adattarsi a una specifica cache web per test più efficienti. È altamente personalizzabile e può essere facilmente integrato in pipeline CI/CD esistenti.
I binari precompilati di WCVS sono disponibili nella pagina delle release.
apt install web-cache-vulnerability-scannerpacman -S wcvsIl repository può essere installato utilizzando Go.
go1.21 e superiori
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 è altamente personalizzabile tramite i suoi flag. Molti dei flag possono contenere direttamente un valore o il percorso di un file.
L'unico flag obbligatorio è -u/--url per fornire l'URL di destinazione da testare per web cache poisoning/deception. L'URL di destinazione può essere fornito in diversi formati.
WCVS necessita di due wordlist per testare le prime 5 tecniche: una wordlist con nomi di header e una con nomi di parametri. Le wordlist possono essere presenti nella stessa directory in cui viene eseguito WCVS o specificate tramite i flag --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 specifica un header di cache personalizzato da verificare per cache hit e miss--setcookies/-sc specifica i cookie da aggiungere alla richiesta--setheaders/-sh specifica gli header da aggiungere alla richiesta--setparameters/-sp specifica i parametri da aggiungere alla richiesta. Sebbene sia anche possibile aggiungerli direttamente all'URL, in alcuni casi potrebbe essere più utile aggiungerli tramite questo flag.--post/-post cambia il metodo HTTP da GET a POST--setbody/-sb specifica il corpo da aggiungere alla richiesta--contenttype/-ct specifica il valore dell'header Content-Type--useragentchrome/-uac cambia lo User-Agent da 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. Sebbene lo stesso risultato possa essere ottenuto con ad es. , questo flag fornisce un modo più rapido.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"
Un report JSON viene generato e aggiornato dopo ogni URL scansionato se il flag --generatereport/-gr è impostato.
Il report viene scritto, come un file di log, nella stessa directory in cui viene eseguito WCVS. Per cambiare la directory per tutti i file di output, utilizza --generatepath/-gp.
Se i caratteri HTML speciali devono essere codificati nel report, utilizza --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
Per eseguire il crawling degli URL, è necessario impostare --recursivity/-r. Specifica la profondità del crawler in termini di ricorsione.
Per impostazione predefinita, WCVS esegue il crawling solo degli URL dello stesso dominio. Per eseguire il crawling anche di altri domini, è possibile utilizzare --recdomains/red.
Per eseguire il crawling solo degli URL che contengono una stringa specifica, è possibile utilizzare --recinclude/-rin.
--reclimit/-rl limita il numero di URL crawlt per ogni profondità di ricorsione.
Inoltre, è possibile specificare un elenco di URL da non crawltare con --recexclude/-rex. --generatecompleted/-gc può, ad esempio, essere utilizzato per generare un elenco di tutti gli URL già testati. Se una scansione viene ripetuta, ma WCVS non deve crawltare e testare nuovamente gli stessi URL, questo elenco può essere utilizzato per --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
Per utilizzare un proxy, specifica --useproxy/-up. Se stai usando Burp, assicurati di deselezionare "Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it". Altrimenti alcune tecniche, che si basano su header non conformi alle RFC, non funzioneranno.
L'URL predefinito per il proxy è http://127.0.0.1:8080. Per modificarlo, utilizza --proxyurl/-purl.
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
Il numero massimo di richieste consentite al secondo può essere impostato con --reqrate/-rr. Per impostazione predefinita, questo numero è illimitato.
Al contrario, il numero di richieste al secondo può essere potenzialmente aumentato se si utilizza --threads/-t per aumentare il numero di thread simultanei che WCVS utilizza. Il valore predefinito è 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 fornisce ancora più flag e opzioni di quelli menzionati in precedenza. --help/-h fornisce un elenco di ogni flag, il suo significato e come utilizzarlo.
wcvs -h
Una breve serie di post sul blog che forniscono maggiori informazioni sul web cache poisoning e su WCVS può essere trovata qui:
La prima versione del Web Cache Vulnerability Scanner (WCVS) è stata sviluppata come parte di una tesi di laurea triennale di Maximilian Hildebrand.
WCVS è sviluppato da Hackmanit e Maximilian Hildebrand e concesso in licenza secondo i termini della Apache License, Version 2.0.
-sh "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...--cacheheader/-ch specifica un header di cache personalizzato (senza distinzione tra maiuscole e minuscole)