Hur man hittar vilken WAF som skyddar en webbplats

By rik

Det är ofta värdefullt för en angripare att känna till var en WAF vanligtvis är placerad i ett nätverk innan man inleder en kartläggning.

För penetrationstestare är det avgörande att vara medveten om en WAF innan de påbörjar en utvärdering av en webapplikation, då det kan påverka resultatet av deras försök till intrång.

Men först…

Vad är en WAF?

En WAF (Web Application Firewall), eller webbapplikationsbrandvägg, spelar en central roll i säkerheten för webbplatser. Den fungerar genom att filtrera och övervaka trafiken. Webbapplikationsbrandväggar erbjuder skydd mot vanliga sårbarheter. Många organisationer moderniserar sin infrastruktur genom att implementera dessa brandväggar. Experter inom etisk hacking framhåller dock att en WAF inte kan lösa säkerhetsproblem på egen hand; korrekt konfigurering är nödvändig för att identifiera och blockera hot.

En WAF skiljer sig från en traditionell brandvägg. Den kan specifikt filtrera innehållet i webbaserade applikationer, medan en traditionell brandvägg agerar som en skyddsbarriär mellan olika servrar.

En HTTP-interaktion styrs av ett antal regler. Dessa regler hanterar ofta förekommande sårbarheter såsom cross-site scripting och SQL-injektioner.

Det finns många kostnadsfria verktyg med öppen källkod online som kan upptäcka om det finns en brandvägg bakom en webapplikation.

I denna artikel kommer vi att undersöka metoder och verktyg som kan användas för att identifiera en WAF.

Observera: I den här guiden har jag använt min egen webbplats för exemplifiering. Genomför inte skanningar eller andra hackingaktiviteter på någon webbplats utan att först ha tillstånd från ägaren.

Manuell Identifiering

Identifiering med TELNET

Telnet används primärt av nätverksadministratörer och penetrationstestare. Med Telnet kan man ansluta till fjärrvärdar via valfri port, som tidigare nämnts.

  • HTTP-parametrar lämnas ofta (eller infogas) i svarshuvuden av webapplikationsbrandväggar.
  • Telnet kan användas för att samla in grundläggande information, såsom vilken server och cookies som används.
  • Skriv kommandot: telnet målsida.com 80
    [användare@dator]:# telnet målsida.com 80
    Försöker 192.168.1.10...
    Ansluten till målsida.com.
    Flyktstecken är '^]'.
    

Efter att ha kört kommandot ovan, ange HEAD / HTTP/1.1 och tryck på retur.

    [användare@dator]:# telnet 192.168.1.10 80
    Försöker 192.168.1.10...
    Ansluten till 192.168.1.10.
    Flyktstecken är '^]'.
    HEAD / HTTP/1.1
    Host: 192.168.1.10

    HTTP/1.1 200 OK
    Datum: Sön, 10 Okt 2021 05:08:03 UTC
    Server: Apache
    X-Powered-By: PHP/7.4.10
    Set-Cookie: SESSION_ID=exempel_session_id; path=/
    Expires: Tor, 19 Nov 1981 08:52:00 UTC
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    X-Varnish: 1234567890
    Age: 0
    Via: 1.1 varnish
    Connection: close
    Content-Type: text/html

    Anslutningen stängdes av fjärrvärd.

Detta visar vilken server webbplatsen använder och vilket backend-språk som används, efter att ha använt Telnet på port 80.

Vissa WAF-system tillåter modifiering av rubriken, och kan också få webbservern att sända HTTP-svar som skiljer sig från standard.

Som framgår av resultatet ovan svarade webbservern på vår begäran och avslöjade att brandväggen/edge-gatewayen är Varnish.

Automatiserad Identifiering

#1. Identifiering med NMAP

Nmap, med hjälp av ett skript som kan identifiera webapplikationsbrandväggar, kan också användas för detta ändamål.

  • Nmap är ett säkerhetsverktyg som används av många penetrationstestare och nätverksadministratörer.
  • Nmap används för att samla information om målet.
  • Skriptet kördes mot samma webbplats som tidigare
  • Skriv kommandot: nmap --script=http-waf-fingerprint målsida.com
    [användare@dator]:# nmap --script=http-waf-fingerprint målsida.com
    Startar Nmap 7.90 (https://nmap.org) vid 2021-10-10 07:58 UTC
    Nmap skanningsrapport för målsida.com (192.168.1.10)
    Värden är igång (0.24s fördröjning).
    Visas inte: 982 filtrerade portar
    PORT STAT TJÄNST
    53/tcp öppen domain
    80/tcp öppen http
    | http-waf-fingerprint:
    |   Detekterad WAF
    |   Citrix Netscaler
    443/tcp öppen https
    5432/tcp stängd postgresql
    8080/tcp stängd http-proxy

    Nmap avslutat: 1 IP-adress (1 värd uppe) skannad på 25.46 sekunder

Efter att ha använt ovanstående Nmap-kommando upptäcktes en Citrix Netscaler-brandvägg.

#2. Identifiering med Whatwaf

Whatwaf är ett verktyg för att identifiera webapplikationer och upptäcka närvaron av en WAF. Detta verktyg hjälper till att avgöra om en webapplikation skyddas av en WAF under säkerhetsbedömningar.

Om en WAF är i bruk kan strategier för kringgående vara till hjälp för ytterligare testning eller exploatering av applikationen.

WhatWaf används ofta för att kringgå brandväggar, detektera applikationer, identifiera applikationer och programvara. Det är avsett för nätverkspenetrationstestare och säkerhetsexperter.

Hur man installerar WhatWaf

Installation på Kali-Linux:

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

Vid lansering utan specifik Python-version kan vi ange en körbar fil:

    ./whatwaf --help

Eftersom vi inte installerade Python 2-beroenden, rekommenderas det att ange Python-versionen specifikt.

    python3 ./whatwaf --help

Användning av verktyget

Whatwaf-brandväggsdetekteringsverktyget är lätt att använda! Det enda vi behöver göra är att köra följande kommando:

      ./whatwaf -u https://www.målsida.com
  

Som du kan se nedan upptäckte verktyget brandväggen för den angivna webbadressen.

Påminnelse! – Jag använde min egen sida för skanningen.

    [användare@kali]:/home/användare/WhatWaf$ ./whatwaf -u https://www.målsida.com

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

[11:12:34][ERROR] du måste installera psutil först `pip install psutil` för att starta XMR-mining
[11:12:34][INFO] kollar efter uppdateringar
[11:12:34][WARN] det rekommenderas starkt att använda en proxy när du använder WhatWaf. gör det genom att ange proxyflaggan (t.ex. `--proxy http://127.0.0.1:9050`) eller genom att ange Tor-flaggan (t.ex. `--tor`)
[11:12:34][INFO] använder User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)'
[11:12:34][INFO] använder standard nyttolaster
[11:12:34][INFO] testar anslutningen till målets URL innan attacken startar
[11:12:35][SUCCESS] anslutningen lyckades, fortsätter
[11:12:35][INFO] kör enskild webbapplikation 'https://www.målsida.com'
[11:12:35][WARN] URL verkar inte ha en fråga (parameter), detta kan påverka detekteringsresultaten
[11:12:35][INFO] begär typ: GET
[11:12:35][INFO] samlar HTTP-svar
[11:12:42][INFO] samlar in normala svar för jämförelse
[11:12:42][INFO] laddar brandväggsdetekteringsskript
[11:12:42][INFO] kör brandväggsdetekteringskontroller
[11:12:44][FIREWALL] detekterat webbplatsskydd identifierat som 'Apache Generic'
[11:12:44][INFO] startar bypass-analys
[11:12:44][INFO] laddar payload-manipuleringsskript
[11:12:45][INFO] kör kontroller för att kringgå manipulering
[11:19:09][SUCCESS] uppenbarligen fungerande manipuleringar för målet:
------------------------------
(#1) beskrivning: manipulerar payload genom att ändra tecken till ett jokertecken
exempel: '/bin/cat /et?/?asswd'
laddningsväg: content.tampers.randomwildcard
------------------------------

Som resultatet ovan visar, svarade webbservern på vår begäran och avslöjade att brandväggen var Apache. Vi kan även använda Tor-tjänsten för att skanna efter WAF, men det kan öka fördröjningen.

    ./whatwaf -u https://www.målsida.com --tor

Den största fördelen med Whatwaf är att det automatiskt försöker ge nyttolasten för att kringgå den detekterade brandväggen.

#3. Identifiering med Wafw00f

Det mest kända verktyget för att identifiera webapplikationsbrandväggar är Wafw00f. Wafw00f skickar en HTTP-förfrågan till webbapplikationsbrandväggen för att identifiera den. Om det misslyckas med att skicka HTTP-förfrågningar skickar wafw00f en skadlig HTTP-förfrågan. Om även detta misslyckas analyserar wafw00f tidigare HTTP-förfrågningar och använder en algoritm för att avgöra om webbapplikationsbrandväggen reagerar på våra attacker.

Wafw00f är inte förinstallerat i Kali Linux-distributioner.

Hur man installerar Wafw00f

Zip-paketet kan laddas ner från den officiella GitHub-källan.

Ladda ner Wafw00f-verktyget. Du kan också använda git-klienten för att klona förvaret. För att hämta paketet, kör kommandona:

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

För att ladda ner wafw00f-verktyget till systemet, navigera till wafw00f-mappen eller katalogen och kör följande kommando.

    $ python setup.py install

Installationsfilen bearbetas och wafw00f installeras i systemet.

Användning av verktyget

För att använda verktyget kör du detta kommando.

    $ wafw00f <url>

PÅMINNELSE – Skanna endast de webbplatser som du har tillstånd att testa.

    [användare@kali]:/home/användare/wafw00f$ wafw00f https://målsida.com

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

                   ~ WAFW00F : v2.1.0 ~
    Verktyg för fingeravtryck av webbapplikationsbrandväggar

[*] Kontrollerar https://målsida.com
[+] Webbplatsen https://målsida.com ligger bakom Cloudflare (Cloudflare Inc.) WAF.
[~] Antal begäranden: 2

Synd, brandväggen identifierades!

Vi kommer att testa en annan webbplats för exemplifiering.

    [användare@kali]:/home/användare/wafw00f$ wafw00f https://annanmålsida.com

                  ______
                 /

                (  Woof! )
                   ____/                      )

                 ,,                           ) (_
            .-. -    _______                 ( |__|
           ()``; |==|_______)                .)|__|

           / ('        /|                  (  |__|
       (  /  )        / |                   . |__|
        (_)_))      /  |                     |__|


                   ~ WAFW00F : v2.1.0 ~
    Verktyg för fingeravtryck av webbapplikationsbrandväggar

[*] Kontrollerar https://annanmålsida.com
[+] Generiska detekteringsresultat:
[-] Ingen WAF identifierades med generisk identifiering
[~] Antal begäranden: 7

Ingen brandvägg identifierades den här gången.

För att använda det i utförligt läge, kör följande kommando.

    wafw00f <url> -v

Du kan se några ytterligare funktioner för verktyget genom att köra detta kommando.

    wafw00f <url> --help

Sammanfattning 👨‍💻

I den här artikeln har vi undersökt olika metoder och verktyg för att identifiera webbapplikationsbrandväggar. Det är en viktig uppgift under informationsinsamlingsstadiet för alla penetrationstester av webbapplikationer.

Genom att veta om en WAF är på plats kan penetrationstestaren även prova olika metoder för att kringgå skyddet och utnyttja eventuella svagheter i webapplikationen.

Enligt en forskare inom etisk hacking är det mer och mer nödvändigt att ha en webbapplikationsbrandvägg (WAF). Det är alltid viktigt att analysera dina webbapplikationsloggar för att upptäcka nya attacker som sker mot backend-webbapplikationsservern. Det gör att du kan justera reglerna i din webbapplikationsbrandvägg för att ge den högsta skyddsnivån.

Du kan också vara intresserad av att läsa om Sårbarheter med Nikto Scanner.