
Go 기반 CLI 스캐너로 웹 캐시 포이즈닝 및 디셉션을 위한 도구입니다. 10가지 포이즈닝 기법, 여러 디셉션 방법, 내장 크롤러, JSON 보고, 그리고 침투 테스트를 위한 프록시 통합을 지원합니다.
Web Cache Vulnerability Scanner (WCVS)는 Hackmanit과 Maximilian Hildebrand가 개발한 웹 캐시 포이즈닝 및 웹 캐시 디셉션을 위한 빠르고 다재다능한 CLI 스캐너입니다.
이 스캐너는 다양한 웹 캐시 포이즈닝 및 웹 캐시 디셉션 기법을 지원하며, 추가로 테스트할 URL을 식별하기 위한 크롤러를 포함하고, 특정 웹 캐시에 적응하여 더 효율적인 테스트를 수행할 수 있습니다. 또한 높은 사용자 정의가 가능하며 기존 CI/CD 파이프라인에 쉽게 통합될 수 있습니다.
WCVS의 미리 빌드된 바이너리는 릴리스 페이지에서 제공됩니다.
apt install web-cache-vulnerability-scannerpacman -S wcvsGo를 사용하여 저장소를 설치할 수 있습니다.
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은 다양한 형식으로 제공될 수 있습니다.
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는 요청에 추가할 쿠키를 지정합니다.--setheaders/-sh는 요청에 추가할 헤더를 지정합니다.--setparameters/-sp는 요청에 추가할 매개변수를 지정합니다. URL에 직접 추가하는 것도 가능하지만, 어떤 경우에는 이 플래그를 통해 추가하는 것이 더 유용할 수 있습니다.--post/-post는 HTTP 메서드를 GET에서 POST로 변경합니다.--setbody/-sb는 요청에 추가할 본문을 지정합니다.--contenttype/-ct는 Content-Type 헤더의 값을 지정합니다.--useragentchrome/-uac는 User-Agent를 WebCacheVulnerabilityScanner v{Version-Number}에서 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 (Windows NT 10.0; Win64; x64) ..."로 얻을 수 있지만, 이 플래그가 더 빠른 방법을 제공합니다.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 수를 제한합니다.
또한 크롤링하지 않을 URL 목록은 --recexclude/-rex로 지정할 수 있습니다. --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
웹 캐시 포이즈닝과 WCVS에 대한 더 자세한 정보를 제공하는 짧은 블로그 포스트 시리즈는 여기에서 찾을 수 있습니다:
Web Cache Vulnerability Scanner (WCVS)의 첫 번째 버전은 Maximilian Hildebrand의 학사 논문의 일부로 개발되었습니다.
WCVS는 Hackmanit과 Maximilian Hildebrand가 개발했으며 Apache License, Version 2.0에 따라 라이선스가 부여됩니다.
--cacheheader/-ch는 사용자 정의 캐시 헤더를 지정합니다 (대소문자 구분 안 함).