Come trovare quale WAF protegge un sito Web?

Pubblicato: 2021-10-11

È sempre una buona idea per un utente malintenzionato sapere dove viene in genere utilizzato un WAF su una rete prima di iniziare a rilevare le impronte digitali.

I tester di penetrazione devono essere a conoscenza di un WAF prima di iniziare un coinvolgimento di un'applicazione Web poiché l'esito dei loro attacchi potrebbe essere influenzato.

Ma prima di questo...

Cos'è WAF?

WAF (Web Application Firewall) svolge un ruolo significativo nella sicurezza del sito web. Filtrano e monitorano il traffico. I Web Application Firewall forniscono protezione contro i principali difetti. Molte organizzazioni stanno modernizzando la propria infrastruttura per includere firewall per applicazioni web. Secondo gli esperti di hacking etico, i firewall delle applicazioni Web non possono risolvere da soli i problemi di sicurezza; è necessaria una configurazione adeguata per riconoscere e bloccare le minacce esterne.

Un WAF differisce da un firewall tradizionale in quanto può filtrare il contenuto di specifiche applicazioni online, mentre i firewall tradizionali fungono da barriera di sicurezza tra i server.

Un'interazione HTTP è soggetta a una serie di regole. Queste regole risolvono le vulnerabilità tipiche come lo scripting tra siti e l'iniezione SQL in generale.

Ci sono molti strumenti gratuiti e open source su Internet che possono scoprire i firewall dietro le applicazioni web.

E in questo articolo, esamineremo gli approcci e gli strumenti che possono essere utilizzati per scoprire un WAF.

Nota: in questo tutorial, ho utilizzato il mio sito per enumerare i dettagli. Non eseguire scansioni o altre attività di hacking su alcun sito Web senza previa autorizzazione del proprietario.

Scoperta manuale

Rilevamento tramite TELNET

Telnet è utilizzato principalmente dagli amministratori di rete e dai penetration tester. Telnet consente di connettersi a host remoti su qualsiasi porta, come affermato in precedenza.

  • I parametri HTTP vengono spesso lasciati (o inseriti) nelle intestazioni di risposta dai firewall delle applicazioni Web.
  • Telnet può essere utilizzato per ottenere informazioni di base sulla raccolta come il server ei cookie utilizzati nel fingerprinting.
  • Digita Telnet Targetwebsite.com 80
 [email protected]: # telnet Targetwebsite.com 80 Trying 18.166.248.208... Connected to Targetwebsite.com. Escape character is '^]'.

Dopo aver eseguito il comando sopra, scrivi HEAD / HTTP / 1.1 e premi il tasto Invio.

 [email protected]: # telnet 18.166.248.208 80 Trying 18.166.248.208... Connected to 18.166.248.208. Escape character is '^]'. HEAD / HTTP/1.1 Host: 18.166.248.208 HTTP/1.1 200 OK Date: SUN, 10 Oct 2021 05:08:03 IST Server: Apache X-Powered-By: PHP/5.3.5 ZendServer/5.0 Set-Cookie: SESSIONID VULN SITE=t25put8gliicvqf62u3ctgjm21; path=/ Expires: Thu, 19 Nov 1981 08:52:00 IST Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache X-Varnish: 4723782781 Age: 0 Via: 1.1 varnish Connection: close Content-Type: text/html Connection closed by foreign host.

Indica il server su cui è ospitato il sito Web e la lingua di back-end su cui è stato creato dopo aver utilizzato telnet sulla porta di destinazione 80.

Alcuni sistemi WAF consentono di modificare l'intestazione e possono anche far sì che il server Web invii risposte HTTP diverse da quelle standard.

Come mostrato nel risultato sopra, il server web ha risposto alla nostra richiesta e ha rivelato che il gateway firewall/edge era Varnish.

Scoperta automatizzata

#1. Rilevamento tramite NMAP

A questo scopo può essere utilizzato anche Nmap, che dispone di uno script in grado di identificare un firewall per applicazioni Web.

  • Nmap è uno strumento di valutazione della sicurezza utilizzato comunemente da molti pen-tester e amministratori di rete.
  • Nmap viene utilizzato per ottenere informazioni sul target.
  • Lo script è stato eseguito sulla stessa pagina Web di prima
  • Digita il comando nmap –script=http-waf-fingerprint targetweb.com
 [email protected]:# nmap --script=http-waf-fingerprint targetwebsite.com Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST Nmap scan report for targetsite.com (18.166.248.208) Host is up (0.24s latency). Not shown: 982filtered ports PORT STATE SERVICE 53/tcp open domain 80/tcp open http | http-waf-fingerprint: | Detected WAF | Citrix Netscaler 443/tcp open https 5432/tcp closed postgresql 8080/tcp closed http-proxy Nmap done: 1 IP address (1 host up) scanned in 25.46 seconds

Dopo aver utilizzato il comando Nmap sopra, è stato rilevato il firewall Citrix Netscaler.

#2. Rilevamento tramite Whatwaf

Whatwaf è uno strumento di sicurezza per il rilevamento delle impronte digitali delle app Web e il rilevamento della presenza di qualsiasi WAF. Questo strumento è utile per determinare se un'applicazione Web è protetta da un WAF durante le valutazioni di sicurezza.

In tal caso, le strategie di aggiramento ed evitamento possono essere utili per ulteriori test o per sfruttare l'applicazione online.

Il bypass del firewall, il rilevamento delle applicazioni, l'impronta digitale delle applicazioni e l'identificazione del software sono tutti usi frequenti di WhatWaf. Rete
Pen-tester e professionisti della sicurezza sono gli utenti previsti di questo programma.

Come installare WhatWaf?

Installazione su Kali-Linux

 sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt

All'avvio, senza una versione di Python, possiamo facilmente specificare un file eseguibile:

 ./whatwaf --help

Tuttavia, poiché non abbiamo installato le dipendenze di Python 2, si consiglia di fornire specificamente la versione di Python.

 python3 ./whatwaf --help

Utilizzo dello strumento

Lo strumento di rilevamento del firewall Whatwaf è semplice da usare! Dobbiamo solo eseguire il seguente comando:

 ./whatwaf -u https://www.targetsite.com

Come puoi vedere di seguito, questo strumento ha rilevato il firewall per l'URL del sito web fornito.

Promemoria! – Ho usato il mio sito per la scansione

 ┌──(rootkali)-[/home/writer/WhatWaf] └─# ./whatwaf -u https://www.renjith.org ,------. ' .--. ' ,--. .--. ,--. .--.| | | | | | | | | | | |'--' | | | | | | | | | | __. | | |.'.| | | |.'.| | | .' | | | | |___| | ,'. |hat| ,'. |af .---. '--' '--' '--' '--' '---' /><script>alert("WhatWaf?<|>v2.0.3($dev)");</script>%00 [11:12:34][ERROR] you must install psutil first `pip install psutil` to start mining XMR [11:12:34][INFO] checking for updates [11:12:34][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`) [11:12:34][INFO] using User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)' [11:12:34][INFO] using default payloads [11:12:34][INFO] testing connection to target URL before starting attack [11:12:35][SUCCESS] connection succeeded, continuing [11:12:35][INFO] running single web application 'https://www.renjith.org' [11:12:35][WARN] URL does not appear to have a query (parameter), this may interfere with the detection results [11:12:35][INFO] request type: GET [11:12:35][INFO] gathering HTTP responses [11:12:42][INFO] gathering normal response to compare against [11:12:42][INFO] loading firewall detection scripts [11:12:42][INFO] running firewall detection checks [11:12:44][FIREWALL] detected website protection identified as 'Apache Generic' [11:12:44][INFO] starting bypass analysis [11:12:44][INFO] loading payload tampering scripts [11:12:45][INFO] running tampering bypass checks [11:19: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 ------------------------------

Come mostrato nel risultato sopra, il server web ha risposto alla nostra richiesta e ha rivelato che il firewall era Apache. Possiamo anche utilizzare il servizio tor per cercare il WAF, ma potrebbe aumentare la latenza.

 ./whatwaf -u https://www.targetsite.com --tor

Il vantaggio principale dello strumento Whatwaf è che cerca automaticamente di fornire ai payload per aggirare il firewall rivelato.

#3. Rilevamento utilizzando Wafw00f

Lo strumento più noto per rilevare il firewall dell'applicazione Web è Wafw00f. Wafw00f invia una richiesta HTTP al firewall dell'applicazione Web per identificarlo. Quando l'invio di richieste HTTP fallisce, wafw00f effettua una richiesta HTTP dannosa. Se una richiesta HTTP dannosa non riesce, wafw00f esamina le richieste HTTP precedenti e utilizza un semplice algoritmo per determinare se il firewall dell'applicazione Web reagisce ai nostri attacchi.

Wafw00f non è preinstallato nelle distribuzioni Kali Linux.

Come installare Wafw00f?

Il pacchetto zip è disponibile per il download dalla fonte ufficiale di GitHub.

Scarica lo strumento Wafwoof. Puoi anche usare il client git per clonare il repository. Per ottenere il pacchetto, esegui i comandi:

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

Per scaricare lo strumento wafw00f nel sistema, accedere alla cartella o alla directory wafw00f ed eseguire il comando seguente.

 $ python setup.py install

Il file di installazione verrà elaborato e wafw00f verrà installato nel sistema.

Utilizzo dello strumento

Per utilizzare questo strumento, esegui questo comando.

 $ wafw00f <url>

PROMEMORIA – Scansiona solo i siti web che ti è permesso testare

 ┌──(rootkali)-[/home/writer/wafw00f] └─# wafw00f https://webhashes.com ______ / \ ( Woof! ) \ ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /|\ ( |__| ( / ) / | \ . |__| \(_)_)) / | \ |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://whatismyip.com [+] The site https://whatismyip.com is behind Cloudflare (Cloudflare Inc.) WAF. [~] Number of requests : 2

Peccato, è stato rilevato il firewall!

Proveremo un sito Web di destinazione diverso per lo scopo della discussione.

 ┌──(rootkali)-[/home/writer/wafw00f] └─# wafw00f https://renjith.org ______ / \ ( Woof! ) \ ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /|\ ( |__| ( / ) / | \ . |__| \(_)_)) / | \ |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://renjith.org [+] Generic Detection results: [-] No WAF detected by the generic detection [~] Number of requests: 7

Questa volta non viene rilevato alcun firewall.

E per usarlo in modalità dettagliata, esegui il seguente comando.

 wafw00f <url> -v

Puoi vedere alcune funzionalità aggiuntive di questa utility eseguendo questo comando.

 wafw00f <url> --help

Avvolgendo

In questo articolo, abbiamo esaminato diverse strategie e strumenti per rilevare i firewall delle applicazioni Web. Questa è un'attività importante che deve essere eseguita durante la fase di raccolta delle informazioni di ogni test di penetrazione di un'applicazione web.

Inoltre, sapere che è presente un WAF consente al tester di penetrazione di provare vari approcci per aggirare le difese e sfruttare eventuali falle nell'applicazione online.

Secondo un ricercatore di hacking etico, è sempre più necessario disporre di un firewall per applicazioni Web (WAF). L'analisi dei registri delle applicazioni Web per rilevare nuovi attacchi che si verificano sul server di applicazioni Web di back-end è sempre importante. Ciò consente di personalizzare le regole nel firewall dell'applicazione Web per fornire il massimo livello di protezione.

Potrebbe interessarti anche leggere: Vulnerabilità nell'uso di Nikto Scanner.