
Strumento di identificazione WAF cieco

identYwaf è uno strumento di identificazione che può riconoscere il tipo di protezione web (cioè WAF) basato su inferenza cieca. L'inferenza cieca viene eseguita ispezionando le risposte provocate da un insieme di payload offensivi predefiniti (non distruttivi), dove questi sono usati solo per attivare il sistema di protezione web intermedio (es. http://<host>?aeD0oowi=1 AND 2>1). Attualmente supporta più di 80 diversi prodotti di protezione (es. aeSecure, Airlock, CleanTalk, CrawlProtect, Imunify360, MalCare, ModSecurity, Palo Alto, SiteGuard, UrlScan, Wallarm, WatchGuard, Wordfence, ecc.), mentre la base di conoscenza è in costante crescita.
Per maggiori informazioni puoi consultare le slides per un talk "Blind WAF identification" tenuto a Sh3llCON 2019 (Santander / Spagna).
Nota: come parte di questo progetto, vengono raccolti (manualmente) screenshots di risposte caratteristiche per diversi sistemi di protezione web, per riferimento futuro.







Puoi scaricare l'ultimo zipball cliccando qui.
Preferibilmente, puoi scaricare identYwaf clonando il repository Git:
git clone --depth 1 https://github.com/stamparm/identYwaf.git
identYwaf funziona immediatamente con qualsiasi versione di Python da 2.6.x a 3.x su qualsiasi piattaforma.
$ 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