Jak zjistit, který WAF chrání web

Pro útočníka je klíčové znát obvyklé umístění WAF v síti, ještě než se pustí do zjišťování podrobností o jeho konfiguraci.

Odborníci na penetrační testování musí brát v úvahu existenci WAF před zahájením testů webových aplikací, protože to může zásadně ovlivnit průběh a výsledek jejich útoků.

Než ale začneme…

Co je to WAF?

WAF (Web Application Firewall), neboli firewall webových aplikací, hraje zásadní roli v ochraně webových stránek. Filtruje a sleduje provoz. Tyto firewally poskytují ochranu před řadou běžných hrozeb. Mnoho organizací v současnosti modernizuje svou infrastrukturu a implementuje WAF. Odborníci na etické hackování ale upozorňují, že samotný WAF nedokáže vyřešit všechny bezpečnostní problémy, je nutná jeho správná konfigurace pro efektivní rozpoznávání a blokování vnějších hrozeb.

WAF se liší od tradičního firewallu tím, že se zaměřuje na filtrování obsahu specifických webových aplikací, zatímco tradiční firewally slouží jako bezpečnostní bariéra mezi servery.

HTTP komunikace probíhá podle sady definovaných pravidel. Tato pravidla se zaměřují na běžné bezpečnostní nedostatky, jako jsou Cross-Site Scripting (XSS) a SQL injection.

Existuje mnoho bezplatných a open-source nástrojů, které dokážou detekovat firewally za webovými aplikacemi.

V tomto článku se podíváme na postupy a nástroje, které lze použít pro detekci WAF.

Poznámka: Pro demonstraci jsem použil svůj vlastní web. Neprovádějte skenování ani jiné hackerské aktivity na cizích webových stránkách bez předchozího souhlasu vlastníka.

Manuální detekce

Detekce pomocí TELNET

Telnet se používá především síťovými administrátory a penetračními testery. Umožňuje připojení ke vzdáleným hostitelům přes libovolný port.

  • WAF často ponechávají (nebo vkládají) HTTP parametry do hlaviček odpovědí.
  • Telnet lze použít k získání základních informací, jako je server a soubory cookie, které se používají při zjišťování podrobností.
  • Zadejte příkaz: `Telnet cilovyserver.cz 80`
user@terminal: # telnet cilovyserver.cz 80
Trying 192.168.1.100...
Connected to cilovyserver.cz.
Escape character is '^]'.

Po zadání příkazu napište `HEAD / HTTP/1.1` a stiskněte Enter.

user@terminal: # telnet 192.168.1.100 80
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
HEAD / HTTP/1.1
Host: 192.168.1.100

HTTP/1.1 200 OK
Date: Mon, 15 Jan 2024 12:00:00 GMT
Server: nginx
Content-Type: text/html
Connection: close
X-Cache: HIT from cache-server.example.com
X-Varnish: 1234567890
Via: 1.1 varnish-cache-server.example.com

Connection closed by foreign host.

Z výstupu lze zjistit, na jakém serveru web běží a v jakém back-endovém jazyce je napsaný (zde nginx a žádný PHP), když použijeme telnet na port 80 cílového serveru.

Některé WAF umožňují modifikovat hlavičky a mohou také způsobit, že webový server odesílá HTTP odpovědi, které se liší od standardních.

Jak ukazuje výše uvedený výsledek, webový server odpověděl na náš požadavek a odhalil, že jako firewall/edge gateway je použit Varnish.

Automatizovaná detekce

#1. Detekce pomocí NMAP

Nástroj Nmap lze také využít, jelikož má k dispozici skript pro detekci firewallů webových aplikací.

  • Nmap je nástroj pro hodnocení bezpečnosti, často používaný penetračními testery a správci sítí.
  • Nmap slouží ke získávání informací o cílovém systému.
  • Skript byl spuštěn na stejném webu, jako v předchozím případě.
  • Zadejte příkaz: `nmap –script=http-waf-fingerprint cilovyserver.cz`
user@terminal:# nmap --script=http-waf-fingerprint cilovyserver.cz
Starting Nmap 7.90 ( https://nmap.org ) at 2024-01-15 12:05 GMT
Nmap scan report for cilovyserver.cz (192.168.1.100)
Host is up (0.01s latency).
Not shown: 994 filtered ports
PORT STATE SERVICE
22/tcp    open   ssh
80/tcp    open   http
| http-waf-fingerprint:
|   Detected WAF:
|     Cloudflare
443/tcp   open   https
3306/tcp  closed mysql

Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds

Po použití příkazu Nmap byl detekován firewall Cloudflare.

#2. Detekce pomocí WhatWaf

Whatwaf je bezpečnostní nástroj pro detekci webových aplikací a identifikaci WAF. Je užitečný pro zjištění, zda je webová aplikace chráněna WAF během bezpečnostní analýzy.

V takovém případě lze při dalším testování nebo využívání webové aplikace použít strategie pro obcházení a vyhýbání se WAF.

WhatWaf se běžně používá k obcházení firewallů, detekci aplikací, zjišťování otisků prstů aplikací a identifikaci softwaru. Mezi cílové uživatele patří penetrační testeři a bezpečnostní profesionálové.

Jak nainstalovat WhatWaf?

Instalace na Kali-Linux:

sudo apt install python3-pip

git clone https://github.com/ekultek/whatwaf

cd whatwaf

sudo pip3 install -r requirements.txt

Při spuštění bez zadání verze Pythonu můžeme snadno zjistit spustitelný soubor:

./whatwaf --help

Protože jsme ale nenainstalovali závislosti Pythonu 2, doporučuje se zadat konkrétní verzi Pythonu:

python3 ./whatwaf --help

Použití nástroje

Nástroj pro detekci firewallu Whatwaf je jednoduchý! Stačí zadat následující příkaz:

./whatwaf -u https://www.cilovyserver.cz

Jak vidíte níže, tento nástroj detekoval firewall pro zadanou URL adresu webové stránky.

Připomínka! Ke skenování jsem použil svůj vlastní web.

user@kali:~/WhatWaf# ./whatwaf -u https://www.cilovyserver.cz

                                  ,------.
                                 '  .--.  '
        ,--.   .--.   ,--.   .--.|  |  |  |
        |  |   |  |   |  |   |  |'--'  |  |
        |  |   |  |   |  |   |  |    __.  |
        |  |.'.|  |   |  |.'.|  |   |   .'
        |         |   |         |   |___|
        |   ,'.   |hat|   ,'.   |af .---.
        '--'   '--'   '--'   '--'   '---'
%00

[14:02:15][ERROR] you must install psutil first `pip install psutil` to start mining XMR
[14:02:15][INFO] checking for updates
[14:02:15][WARN] it is highly advised to use a proxy when using WhatWaf. do so by passing the proxy flag (IE `--proxy http://127.0.0.1:9050`) or by passing the Tor flag (IE `--tor`)
[14:02:15][INFO] using User-Agent 'whatwaf/2.0.3 (Language=3.10.6; Platform=Linux)'
[14:02:15][INFO] using default payloads
[14:02:15][INFO] testing connection to target URL before starting attack 
[14:02:16][SUCCESS] connection succeeded, continuing
[14:02:16][INFO] running single web application 'https://www.cilovyserver.cz'
[14:02:16][WARN] URL does not appear to have a query (parameter), this may interfere with the detection results
[14:02:16][INFO] request type: GET
[14:02:16][INFO] gathering HTTP responses
[14:02:22][INFO] gathering normal response to compare against
[14:02:22][INFO] loading firewall detection scripts
[14:02:22][INFO] running firewall detection checks
[14:02:24][FIREWALL] detected website protection identified as 'ModSecurity'
[14:02:24][INFO] starting bypass analysis
[14:02:24][INFO] loading payload tampering scripts
[14:02:25][INFO] running tampering bypass checks
[14:09:09][SUCCESS] apparent working tampers for target:
------------------------------
(#1) description: tamper payload by changing characters into a wildcard
example: '/bin/cat /et?/?asswd'
load path: content.tampers.randomwildcard
------------------------------

Z výše uvedeného výsledku je patrné, že webový server reagoval na náš požadavek a odhalil, že firewall je ModSecurity. Můžeme použít i službu Tor pro skenování WAF, ale může to navýšit latenci.

./whatwaf -u https://www.cilovyserver.cz --tor

Hlavní výhodou nástroje Whatwaf je jeho automatické hledání užitečných payloadů pro obejití detekovaného firewallu.

#3. Detekce pomocí Wafw00f

Nejznámějším nástrojem pro detekci firewallu webových aplikací je Wafw00f. Wafw00f odešle HTTP požadavek na firewall webové aplikace, aby ho identifikoval. Pokud odeslání HTTP požadavku selže, Wafw00f vygeneruje škodlivý HTTP požadavek. Pokud ani ten selže, Wafw00f prozkoumá předchozí HTTP požadavky a pomocí jednoduchého algoritmu určí, zda firewall webové aplikace reaguje na naše útoky.

Wafw00f není předinstalován v distribucích Kali Linux.

Jak nainstalovat Wafw00f?

Balíček zip je k dispozici ke stažení z oficiálního zdroje GitHub.

Stáhněte si nástroj Wafwoof. Pro naklonování repozitáře můžete použít i git klienta. Pro stažení balíčku spusťte příkaz:

$ git clone https://github.com/EnableSecurity/wafw00f.git

Chcete-li nainstalovat nástroj wafw00f, přejděte do složky (adresáře) wafw00f a spusťte následující příkaz:

$ python setup.py install

Instalační soubor bude zpracován a wafw00f bude nainstalován do systému.

Použití nástroje

Chcete-li použít tento nástroj, spusťte tento příkaz:

$ wafw00f <url>

PŘIPOMÍNKA – skenujte pouze weby, které máte povoleno testovat.

user@kali:~/wafw00f# wafw00f https://example.com

                   ______
                  /                                   
                 (  Woof! )                            
                    ____/                      )      
                  ,,                           ) (_    
             .-. -    _______                 ( |__|   
            ()``; |==|_______)                .)|__|   
            / ('        /|                  (  |__|   
        (  /  )        / |                   . |__|   
         (_)_))      /  |                     |__|   

                    ~ WAFW00F : v2.1.0 ~
    The Web Application Firewall Fingerprinting Toolkit                                                                 
                                                                                                                        
[*] Checking https://example.com
[+] The site https://example.com is behind Sucuri Firewall (Sucuri Inc.) WAF.
[~] Number of requests : 2

Také detekován firewall!

Pro účely diskuze zkusíme jiný cílový web.

user@kali:~/wafw00f# wafw00f https://cilovyserver.cz

                   ______
                  /                                                                                                    
                 (  Woof! )                                                                                             
                    ____/                      )                                                                       
                  ,,                           ) (_                                                                     
             .-. -    _______                 ( |__|                                                                    
            ()``; |==|_______)                .)|__|                                                                    
            / ('        /|                  (  |__|                                                                    
        (  /  )        / |                   . |__|                                                                    
         (_)_))      /  |                     |__|                                                                    

                    ~ WAFW00F : v2.1.0 ~
    The Web Application Firewall Fingerprinting Toolkit                                                                 
                                                                                                                        
[*] Checking https://cilovyserver.cz
[+] Generic Detection results:
[-] No WAF detected by the generic detection
[~] Number of requests: 7

Tentokrát není detekován žádný firewall.

Chcete-li použít podrobný režim, spusťte následující příkaz.

wafw00f  <url> -v

Spuštěním tohoto příkazu zobrazíte i další možnosti tohoto nástroje.

wafw00f <url> --help

Závěrem 👨‍💻

V tomto článku jsme probrali různé strategie a nástroje pro detekci firewallů webových aplikací. Jedná se o důležitou činnost, kterou je nutné provést během fáze sběru informací při každém penetračním testu webové aplikace.

Znalost toho, že existuje WAF, umožňuje penetračnímu testerovi zkoušet různé přístupy k obcházení obrany a využití potenciálních slabin v online aplikaci.

Dle odborníků na etické hackování je stále důležité mít nasazený firewall webových aplikací (WAF). Analýza protokolů webové aplikace pro detekci nových útoků, které se objevují na back-endovém serveru webové aplikace, je klíčová. Umožňuje přizpůsobit pravidla ve vašem WAF a zajistit tak nejvyšší možnou úroveň ochrany.

Mohlo by vás také zajímat: Zranitelnosti odhalené pomocí Nikto Scanner.