Web缓存漏洞扫描器(WCVS)是一款快速且多功能的CLI扫描工具,用于检测Web缓存投毒(web cache poisoning)和Web缓存欺骗(web cache deception),由Hackmanit与Maximilian Hildebrand共同开发。
该扫描器支持多种Web缓存投毒与Web缓存欺骗技术,内置爬虫可识别更多待测URL,并能针对特定Web缓存进行适配以实现更高效的测试。此外,它高度可定制,可轻松集成到现有的CI/CD流水线中。
WCVS的预编译二进制文件可在发布页面获取。
apt install web-cache-vulnerability-scannerpacman -S wcvs可以使用Go安装本仓库。
需要go1.21及以上版本
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可通过其标志进行高度定制。许多标志可以包含一个值,也可以指定一个文件路径。
唯一的必选标志是-u/--url,用于指定待测试的目标URL,该URL需要被测试Web缓存投毒/欺骗漏洞。目标URL可以以多种格式提供。
WCVS需要两个词表来测试前5种技术——一个包含请求头名称,一个包含参数名称。词表可以放在执行WCVS的同一目录下,也可以通过--headerwordlist/-hw和--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 指定自定义缓存请求头,用于检测缓存命中与未命中--setcookies/-sc 指定要添加到请求中的Cookie--setheaders/-sh 指定要添加到请求中的请求头--setparameters/-sp 指定要添加到请求中的参数。虽然也可以直接将其添加到URL中,但在某些情况下通过此标志添加更为有用。--post/-post 将HTTP方法从GET改为POST--setbody/-sb 指定要添加到请求中的请求体--contenttype/-ct 指定Content-Type请求头的值--useragentchrome/-uac 将User-Agent从WebCacheVulnerabilityScanner v{版本号}更改为Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36。虽然也可以通过-sh "User-Agent: Mozilla/5.0 ..."实现相同效果,但此标志提供了更快捷的方式。--cacheheader/-ch 指定自定义缓存请求头(不区分大小写)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"
若设置--generatereport/-gr标志,则会在每次扫描URL后生成并更新JSON报告。
该报告(与日志文件一样)写入执行WCVS的同一目录。如需更改所有输出文件的目录,可使用--generatepath/-gp。
如果要在报告中对HTML特殊字符进行编码,请使用--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
要爬取URL,需要设置--recursivity/-r,它指定爬虫的递归深度。
默认情况下,WCVS仅爬取同域名的URL。如需爬取其他域,可使用--recdomains/red。
若只想爬取包含特定字符串的URL,可使用--recinclude/-rin。
--reclimit/-rl限制每个递归深度爬取的URL数量。
此外,可以使用--recexclude/-rex指定一个不应爬取的URL列表。例如,--generatecompleted/-gc可生成一个包含所有已测试URL的列表。如果重复扫描,但不想让WCVS再次爬取并测试相同的URL,则可以将该列表用于--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
要使用代理,请指定--useproxy/-up。如果您使用Burp,请确保取消勾选 "Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it"。否则,某些依赖非RFC兼容请求头的技术将无法正常工作。
代理的默认URL为http://127.0.0.1:8080。如需更改,请使用--proxyurl/-purl。
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
可以使用--reqrate/-rr设置每秒允许的最大请求数。默认情况下,此数值不受限制。
相反,可以使用--threads/-t增加WCVS使用的并发线程数,从而潜在提高每秒请求数。默认值为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还提供上述标志和选项之外的更多功能。--help/-h提供了每个标志的含义及使用方法的完整列表。
wcvs -h
关于Web缓存投毒和WCVS的简短系列博文可以在这里找到:
Web缓存漏洞扫描器(WCVS)的第一个版本是作为Maximilian Hildebrand的学士论文的一部分开发的。
WCVS由Hackmanit与Maximilian Hildebrand开发,并在Apache许可证2.0版下发布。