
Инструмент слепого обнаружения WAF

identYwaf — это инструмент идентификации, который может распознавать тип веб-защиты (т.е. WAF) на основе слепого вывода. Слепой вывод осуществляется путем проверки ответов, вызванных набором предопределенных атакующих (не разрушительных) нагрузок, которые используются только для активации системы веб-защиты между ними (например, http://<host>?aeD0oowi=1 AND 2>1). В настоящее время он поддерживает более 80 различных продуктов защиты (например, aeSecure, Airlock, CleanTalk, CrawlProtect, Imunify360, MalCare, ModSecurity, Palo Alto, SiteGuard, UrlScan, Wallarm, WatchGuard, Wordfence и т.д.), при этом база знаний постоянно пополняется.
Для получения дополнительной информации вы можете ознакомиться со слайдами доклада "Blind WAF identification", представленного на Sh3llCON 2019 (Сантандер / Испания).
Примечание: в рамках этого проекта собираются (вручную) скриншоты характерных ответов для различных систем веб-защиты для использования в будущем.







Вы можете скачать последний zip-архив, нажав здесь.
Предпочтительно, вы можете загрузить identYwaf, клонировав Git-репозиторий:
git clone --depth 1 https://github.com/stamparm/identYwaf.git
identYwaf работает из коробки с любой версией Python от 2.6.x до 3.x на любой платформе.
$ python identYwaf.py
__ __
____ ___ ___ ____ ______ | T T __ __ ____ _____
l j| \ / _]| \ | T| | || T__T T / T| __|
| T | \ / [_ | _ Yl_j l_j| ~ || | | |Y o || l_
| | | D YY _]| | | | | |___ || | | || || _|
j l | || [_ | | | | | | ! \ / | | || ]
|____jl_____jl_____jl__j__j l__j l____/ \_/\_/ l__j__jl__j (1.0.XX)
Usage: python identYwaf.py [options] <host|url>
Options:
--version Show program's version number and exit
-h, --help Show this help message and exit
--delay=DELAY Delay (sec) between tests (default: 0)
--timeout=TIMEOUT Response timeout (sec) (default: 10)
--proxy=PROXY HTTP proxy address (e.g. "http://127.0.0.1:8080")
--proxy-file=PRO.. Load (rotating) HTTP(s) proxy list from a file
--random-agent Use random HTTP User-Agent header value
--code=CODE Expected HTTP code in rejected responses
--string=STRING Expected string in rejected responses
--post Use POST body for sending payloads