
Go-basierter CLI-Scanner für Web-Cache-Poisoning und -Deception. Unterstützt 10 Poisoning-Techniken, mehrere Deception-Methoden, eingebauten Crawler, JSON-Reporting und Proxy-Integration für Penetrationstests.
Web Cache Vulnerability Scanner (WCVS) ist ein schneller und vielseitiger CLI-Scanner für Web-Cache-Poisoning und Web-Cache-Deception, entwickelt von Hackmanit und Maximilian Hildebrand.
Der Scanner unterstützt viele verschiedene Web-Cache-Poisoning- und Web-Cache-Deception-Techniken, enthält einen Crawler zur Identifizierung weiterer zu testender URLs und kann sich an einen bestimmten Web-Cache anpassen, um effizienter zu testen. Er ist hochgradig anpassbar und kann leicht in bestehende CI/CD-Pipelines integriert werden.
Vorgefertigte Binärdateien von WCVS werden auf der Releases-Seite bereitgestellt.
apt install web-cache-vulnerability-scannerpacman -S wcvsDas Repository kann mit Go installiert werden.
go1.21 und höher
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 ist mit seinen Flags hochgradig anpassbar. Viele der Flags können entweder einen Wert direkt oder den Pfad zu einer Datei enthalten.
Das einzige obligatorische Flag ist -u/--url, um die Ziel-URL anzugeben, die auf Web-Cache-Poisoning/Deception getestet werden soll. Die Ziel-URL kann in verschiedenen Formaten angegeben werden.
WCVS benötigt zwei Wortlisten, um die ersten 5 Techniken zu testen – eine Wortliste mit Headernamen und eine mit Parameternamen. Die Wortlisten können entweder im selben Verzeichnis vorhanden sein, in dem WCVS ausgeführt wird, oder über die Flags --headerwordlist/-hw und --parameterwordlist/-pw angegeben werden.
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 gibt einen benutzerdefinierten Cache-Header an, der auf Cache-Hits und -Misses überprüft wird--setcookies/-sc gibt Cookies an, die zur Anfrage hinzugefügt werden sollen--setheaders/-sh gibt Header an, die zur Anfrage hinzugefügt werden sollen--setparameters/-sp gibt Parameter an, die zur Anfrage hinzugefügt werden sollen. Obwohl es auch möglich ist, sie einfach zur URL hinzuzufügen, kann es in manchen Fällen nützlicher sein, sie über dieses Flag hinzuzufügen.--post/-post ändert die HTTP-Methode von GET auf POST--setbody/-sb gibt den Body an, der zur Anfrage hinzugefügt werden soll--contenttype/-ct gibt den Wert des Content-Type-Headers an--useragentchrome/-uac ändert den User-Agent von WebCacheVulnerabilityScanner v{Version-Number} auf Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36. Während das Gleiche auch mit z. B. erreicht werden kann, bietet dieses Flag einen schnelleren Weg.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"
Ein JSON-Bericht wird erstellt und nach jeder gescannten URL aktualisiert, wenn das Flag --generatereport/-gr gesetzt ist.
Der Bericht wird, genau wie eine Logdatei, in dasselbe Verzeichnis geschrieben, aus dem WCVS ausgeführt wird. Um das Verzeichnis für alle Ausgabedateien zu ändern, verwenden Sie --generatepath/-gp.
Wenn HTML-Sonderzeichen im Bericht kodiert werden sollen, verwenden Sie --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
Zum Crawlen nach URLs muss --recursivity/-r gesetzt werden. Es gibt an, wie tief der Crawler rekursiv gehen soll.
Standardmäßig crawlt WCVS nur nach URLs derselben Domain. Um auch nach anderen Domains zu crawlen, kann --recdomains/red verwendet werden.
Um nur URLs zu crawlen, die eine bestimmte Zeichenfolge enthalten, kann --recinclude/-rin verwendet werden.
--reclimit/-rl begrenzt, wie viele URLs für jede Rekursionstiefe gecrawlt werden.
Außerdem kann eine Liste mit URLs, die nicht gecrawlt werden sollen, mit --recexclude/-rex angegeben werden. --generatecompleted/-gc kann beispielsweise verwendet werden, um eine Liste aller bereits getesteten URLs zu erstellen. Wenn ein Scan wiederholt wird, aber WCVS nicht dieselben URLs erneut crawlen und testen soll, kann diese Liste für --recexclude/-rex verwendet werden.
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
Um einen Proxy zu verwenden, geben Sie --useproxy/-up an. Wenn Sie Burp verwenden, stellen Sie sicher, dass Sie "Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it" deaktivieren. Andernfalls funktionieren einige Techniken, die auf nicht RFC-konforme Header angewiesen sind, nicht.
Die Standard-URL für den Proxy ist http://127.0.0.1:8080. Um sie zu ändern, verwenden Sie --proxyurl/-purl.
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
Die maximale Anzahl erlaubter Anfragen pro Sekunde kann mit --reqrate/-rr festgelegt werden. Standardmäßig ist diese Zahl unbegrenzt.
Im Gegensatz dazu kann die Anzahl der Anfragen pro Sekunde möglicherweise erhöht werden, wenn --threads/-t verwendet wird, um die Anzahl der gleichzeitigen Threads zu erhöhen, die WCVS nutzt. Der Standardwert ist 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 bietet noch mehr als die zuvor genannten Flags und Optionen. --help/-h liefert eine Liste aller Flags, ihrer Bedeutung und ihrer Verwendung.
wcvs -h
Eine kurze Serie von Blogbeiträgen mit weiteren Informationen zu Web-Cache-Poisoning und WCVS finden Sie hier:
Die erste Version des Web Cache Vulnerability Scanners (WCVS) wurde im Rahmen einer Bachelorarbeit von Maximilian Hildebrand entwickelt.
WCVS wurde von Hackmanit und Maximilian Hildebrand entwickelt und ist unter der Apache License, Version 2.0 lizenziert.
-sh "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...--cacheheader/-ch einen benutzerdefinierten Cache-Header angeben (Groß-/Kleinschreibung wird nicht beachtet)