Este întotdeauna prudent ca un potențial atacator să identifice prezența și locația unui WAF într-o rețea înainte de a iniția orice tentativă de amprentare.
De asemenea, pentru testerii de penetrare, cunoașterea existenței unui WAF este crucială înainte de a începe evaluarea unei aplicații web, deoarece acesta poate influența rezultatele atacurilor.
Dar mai întâi să clarificăm ce este un WAF.
Ce este un WAF?
Un Firewall pentru Aplicații Web (WAF) joacă un rol esențial în protecția unui site web. Acesta monitorizează și filtrează traficul, oferind protecție împotriva vulnerabilităților majore. Tot mai multe organizații își modernizează infrastructura prin implementarea acestor firewall-uri. Totuși, experții în hacking etic subliniază că un WAF singur nu este suficient pentru a asigura securitatea; o configurare corectă este vitală pentru recunoașterea și blocarea amenințărilor externe.
Spre deosebire de un firewall tradițional, un WAF poate filtra conținutul specific al aplicațiilor online, în timp ce firewall-urile tradiționale funcționează ca o barieră între servere.
O interacțiune HTTP este guvernată de un set de reguli, care abordează vulnerabilități frecvente precum scripturile cross-site și injecțiile SQL.
Există numeroase instrumente gratuite și open-source disponibile online, care pot detecta firewall-urile din spatele aplicațiilor web.
Acest articol explorează metodele și instrumentele care pot fi utilizate pentru a identifica un WAF.
Notă: În scop demonstrativ, am folosit propriul meu site web. Nu efectuați scanări sau activități de hacking pe site-uri web fără acordul prealabil al proprietarului.
Detectarea Manuală a WAF
Metoda TELNET
Telnet este un instrument esențial pentru administratorii de rețea și testerii de penetrare. Acesta permite conectarea la gazde de la distanță prin orice port.
- Firewall-urile de aplicații web adaugă adesea parametri HTTP în anteturile de răspuns.
- Telnet poate fi folosit pentru a colecta informații de bază, precum serverul și cookie-urile, utile pentru amprentare.
- Comanda de bază este: `telnet nume_site.com 80`
telnet nume_site.com 80 Trying 18.166.248.208... Connected to nume_site.com. Escape character is '^]'.
După executarea comenzii, introduceți `HEAD / HTTP / 1.1` și apăsați Enter.
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.
Acest exemplu dezvăluie serverul pe care este găzduit site-ul și limbajul de back-end. Unele WAF-uri pot modifica anteturile, trimițând răspunsuri HTTP diferite de cele standard. În acest caz, rezultatul indică faptul că firewall-ul/gateway-ul este Varnish.
Detectarea Automată a WAF
#1. Utilizarea NMAP
Nmap, cu ajutorul unui script specific, poate identifica prezența unui WAF. Nmap este un instrument frecvent utilizat de testerii de penetrare și administratorii de rețea pentru evaluarea securității și colectarea de informații despre țintă.
- Scriptul specific a fost rulat pe același site ca anterior.
- Comanda: `nmap –script=http-waf-fingerprint nume_site.com`
nmap --script=http-waf-fingerprint nume_site.com Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST Nmap scan report for nume_site.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
După executarea comenzii Nmap, a fost detectat un firewall Citrix Netscaler.
#2. Utilizarea Whatwaf
Whatwaf este un instrument de securitate pentru amprentarea aplicațiilor web și detectarea prezenței WAF-urilor. Acesta ajută la determinarea dacă o aplicație web este protejată de un WAF, oferind informații necesare pentru strategii de ocolire și evitare în testarea sau exploatarea ulterioară. WhatWaf este utilizat pentru ocolirea firewall-urilor, detectarea aplicațiilor, amprentarea și identificarea software-ului. Este destinat testerilor de penetrare și profesioniștilor în securitate.
Instalarea WhatWaf
Instalare pe Kali-Linux:
sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
Pentru a lansa, putem specifica fișierul executabil fără o versiune Python:
./whatwaf --help
Deoarece nu am instalat dependențele Python 2, se recomandă specificarea versiunii Python:
python3 ./whatwaf --help
Utilizarea instrumentului
Whatwaf este ușor de utilizat. Comanda de bază este:
./whatwaf -u https://www.nume_site.com
Rezultatul de mai jos arată detectarea firewall-ului pentru URL-ul specificat. Rețineți că am folosit propriul meu site pentru scanare.
┌──(root💀kali)-[/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 ------------------------------
În acest caz, serverul a dezvăluit că firewall-ul este Apache. Instrumentul poate fi folosit și cu serviciul Tor, dar poate crește latența. Exemplu:
./whatwaf -u https://www.nume_site.com --tor
Un avantaj major al Whatwaf este că oferă automat sarcini utile pentru a ocoli firewall-ul detectat.
#3. Utilizarea Wafw00f
Wafw00f este un alt instrument popular pentru detectarea firewall-urilor. Acesta trimite solicitări HTTP către WAF pentru a-l identifica. Când solicitările inițiale eșuează, Wafw00f trimite solicitări HTTP malițioase. Dacă și acestea eșuează, Wafw00f analizează răspunsurile HTTP și folosește un algoritm simplu pentru a determina dacă WAF reacționează la atacuri.
Wafw00f nu este preinstalat în distribuțiile Kali Linux.
Instalarea Wafw00f
Pachetul zip poate fi descărcat de pe GitHub. Se poate folosi și clientul git:
$ git clone https://github.com/EnableSecurity/wafw00f.git
Pentru a instala, navigați la directorul wafw00f și rulați:
$ python setup.py install
Fișierul de configurare va fi procesat și Wafw00f va fi instalat.
Utilizarea instrumentului
Comanda de bază este:
$ wafw00f <url>
Atenție! Scanați doar site-urile web pentru care aveți permisiunea.
┌──(root💀kali)-[/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
În acest caz, s-a detectat un WAF.
Vom încerca un alt site:
┌──(root💀kali)-[/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
De data aceasta nu a fost detectat niciun WAF.
Pentru a rula în mod verbose, folosiți:
wafw00f <url> -v
Pentru a vedea opțiunile suplimentare, rulați:
wafw00f <url> --help
Concluzie
Acest articol a prezentat diverse metode și instrumente pentru detectarea firewall-urilor pentru aplicații web, o activitate importantă în faza de colectare de informații în cadrul testelor de penetrare.
Cunoașterea prezenței unui WAF permite testerilor de penetrare să testeze diverse strategii de ocolire și exploatare a eventualelor vulnerabilități.
Conform unui cercetător în hacking etic, utilizarea unui WAF este tot mai necesară. Analiza logurilor aplicațiilor web pentru a identifica noi atacuri este, de asemenea, importantă. Acest lucru permite adaptarea regulilor WAF pentru o protecție optimă.
S-ar putea să vă intereseze și: Vulnerabilități folosind Nikto Scanner.