
CLI-сканер на Go для отравления и обмана веб-кеша. Поддерживает 10 техник отравления, несколько методов обмана, встроенный краулер, отчеты в JSON и интеграцию с прокси для пентеста.
Web Cache Vulnerability Scanner (WCVS) — это быстрый и многофункциональный CLI-сканер для отравления веб-кэша и обмана веб-кэша, разработанный компанией Hackmanit и Максимилианом Хильдебрандом.
Сканер поддерживает множество различных техник отравления веб-кэша и обмана веб-кэша, включает краулер для поиска дополнительных URL-адресов для тестирования, и может адаптироваться к конкретному веб-кэшу для более эффективного тестирования. Он легко настраивается и может быть интегрирован в существующие 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 можно указать в различных форматах.
Для тестирования первых 5 техник WCVS требуется два списка слов: один с именами заголовков и один с именами параметров. Списки слов могут находиться в той же папке, из которой запускается 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"
JSON-отчет создается и обновляется после каждого проверенного URL, если установлен флаг --generatereport/-gr.
Отчет записывается, как и файл журнала, в ту же папку, из которой запускается 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) была разработана в рамках бакалаврской работы Максимилиана Хильдебранда.
WCVS разработан компанией Hackmanit и Максимилианом Хильдебрандом и лицензирован в соответствии с Apache License, Version 2.0.
--cacheheader/-ch указывает пользовательский заголовок кэша (без учета регистра)