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.