Cum să găsiți ce WAF protejează un site web

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.