Oppdag WAF: Manuelt & Automatisk – Sikkerhetsverktøy & Teknikker

Det er strategisk for angripere å kartlegge plasseringen av en WAF (Web Application Firewall) på et nettverk før de setter i gang med fingeravtrykk.

For penetrasjonstestere er kunnskap om en WAF essensielt før en nettapplikasjonstest startes, da dette kan ha innvirkning på utfallet av deres forsøk.

Men før vi går videre…

Hva er en WAF?

En WAF, eller brannmur for nettapplikasjoner, er en viktig komponent innen nettstedssikkerhet. Den filtrerer og overvåker trafikk, og tilbyr beskyttelse mot alvorlige feil. Mange organisasjoner oppgraderer sin infrastruktur for å implementere disse brannmurene. Eksperter innen etisk hacking understreker at en WAF ikke automatisk løser alle sikkerhetsproblemer; korrekt konfigurasjon er nødvendig for å identifisere og blokkere eksterne trusler.

En WAF skiller seg fra en tradisjonell brannmur ved at den inspiserer innholdet i spesifikke nettapplikasjoner, mens tradisjonelle brannmurer fungerer som en sikkerhetsmur mellom servere.

En HTTP-interaksjon er regulert av et sett med regler. Disse reglene tar for seg typiske sårbarheter som skripting på tvers av nettsteder (XSS) og SQL-injeksjon.

Det finnes mange gratis og åpne kildekodeverktøy tilgjengelig på nettet som kan detektere en WAF.

I denne artikkelen skal vi undersøke metoder og verktøy for å identifisere en WAF.

Viktig: I denne veiledningen har jeg brukt min egen nettside for å demonstrere. Ikke utfør skanning eller hackingaktiviteter på noen nettside uten tillatelse fra eieren.

Manuell deteksjon

Identifisering med TELNET

Telnet brukes hovedsakelig av nettverksadministratorer og penetrasjonstestere. Med Telnet kan man koble til eksterne verter over hvilken som helst port.

  • Ofte legger WAF-er igjen (eller legger til) HTTP-parametere i svarhoder.
  • Telnet kan brukes for å hente innledende informasjon som serverinformasjon og informasjonskapsler, som er nyttig for fingeravtrykk.
  • Kjør kommandoen: `telnet Målnetside.no 80`
telnet Målnetside.no 80
Prøver 18.166.248.208...
Koblet til Målnetside.no.
Escape-tegn er '^]'. 

Etter å ha kjørt kommandoen, skriv `HEAD / HTTP/1.1` og trykk Enter.

telnet 18.166.248.208  80 
Prøver 18.166.248.208...
Koblet til 18.166.248.208.
Escape-tegn er '^]'. 
HEAD / HTTP/1.1 
Host: 18.166.248.208

HTTP/1.1 200 OK 
Date: SØN, 10 Okt 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: Tor, 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

Tilkobling stengt av ekstern vert.

Dette viser serveren som hoster nettsiden, samt backend-språket den er utviklet i, etter bruk av telnet på port 80.

Noen WAF-er tillater endring av overskrifter og kan også forårsake at webserveren sender HTTP-svar som avviker fra standarden.

Som vist i resultatet ovenfor, svarte webserveren på forespørselen og avslørte at brannmuren/edge-gatewayen var Varnish.

Automatisert deteksjon

#1. Deteksjon ved hjelp av NMAP

Nmap, med et skript som kan identifisere WAF-er, kan også brukes til dette formålet.

  • Nmap er et sikkerhetsvurderingsverktøy som ofte benyttes av penetrasjonstestere og nettverksadministratorer.
  • Nmap brukes til å samle informasjon om målet.
  • Skriptet ble kjørt mot den samme nettsiden som før.
  • Kjør kommandoen: `nmap –script=http-waf-fingerprint målnetside.no`
nmap --script=http-waf-fingerprint målnetside.no
Starter Nmap 7.90 (https://nmap.org) at 2021-10-10 07:58 IST
Nmap skannerapport for målnetside.no (18.166.248.208)
Verten er oppe (0.24s latenstid).
Ikke vist: 982 filtrerte porter
PORT STAT SERVICE
53/tcp    åpen   domain
80/tcp åpen http
| http-waf-fingerprint:
| Oppdaget WAF
| Citrix Netscaler
443/tcp åpen https
5432/tcp  lukket postgresql
8080/tcp lukket http-proxy

Nmap ferdig: 1 IP-adresse (1 vert oppe) skannet på 25.46 sekunder

Etter å ha kjørt Nmap-kommandoen ovenfor, ble Citrix Netscaler-brannmuren identifisert.

#2. Deteksjon ved hjelp av WhatWaf

Whatwaf er et verktøy for fingeravtrykk av nettapplikasjoner og identifisering av WAF-er. Dette verktøyet er nyttig for å avgjøre om en nettapplikasjon er beskyttet av en WAF under sikkerhetsvurderinger.

Dersom dette er tilfellet, kan strategier for omgåelse og unngåelse være nyttige for videre testing eller utnyttelse av nettapplikasjonen.

WhatWaf brukes ofte til å omgå brannmurer, detektere applikasjoner, fingeravtrykk og identifisere programvare. Verktøyet er ment for nettverkspenetrasjonstestere og sikkerhetseksperter.

Hvordan installere WhatWaf?

Installasjon på Kali Linux:

sudo apt install python3-pip

git clone https://github.com/ekultek/whatwaf

cd whatwaf

sudo pip3 install -r requirements.txt

Ved oppstart, uten spesifisert Python-versjon, kan vi enkelt definere en kjørbar fil:

./whatwaf --help

Men fordi vi ikke installerte Python 2-avhengigheter, anbefales det å spesifisere Python-versjonen:

python3 ./whatwaf --help

Bruk av verktøyet

Whatwaf brannmurdeteksjonsverktøy er enkelt å bruke. Vi trenger bare å kjøre følgende kommando:

./whatwaf -u https://www.målnetside.no

Som vist nedenfor, identifiserte verktøyet brannmuren for den oppgitte URL-en.

Husk: Jeg brukte min egen side for skanningen.

┌──(root💀kali)-[/home/writer/WhatWaf]
└─# ./whatwaf -u https://www.renjith.org

                                  ,------.
                                 '  .--.  '
        ,--.   .--.   ,--.   .--.|  |  |  |
        |  |   |  |   |  |   |  |'--'  |  |
        |  |   |  |   |  |   |  |    __.  |
        |  |.'.|  |   |  |.'.|  |   |   .'
        |         |   |         |   |___|
        |   ,'.   |hat|   ,'.   |af .---.
        '--'   '--'   '--'   '--'   '---'
/>alert("WhatWaf?v2.0.3($dev)");%00

[11:12:34][ERROR] du må installere psutil først `pip install psutil` for å starte XMR-mining
[11:12:34][INFO] ser etter oppdateringer
[11:12:34][WARN] det anbefales på det sterkeste å bruke en proxy når du bruker WhatWaf. Gjør dette ved å sende inn proxy-flagget (IE `--proxy http://127.0.0.1:9050`) eller ved å bruke Tor-flagget (IE `--tor`)
[11:12:34][INFO] bruker User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)'
[11:12:34][INFO] bruker standard payloads
[11:12:34][INFO] tester tilkobling til mål-URL før angrepet starter
[11:12:35][SUCCESS] tilkobling vellykket, fortsetter
[11:12:35][INFO] kjører enkelt nettapplikasjon 'https://www.renjith.org'
[11:12:35][WARN] URL ser ikke ut til å ha en query (parameter), dette kan påvirke deteksjonsresultatene
[11:12:35][INFO] forespørselstype: GET
[11:12:35][INFO] samler HTTP-svar
[11:12:42][INFO] samler normalt svar for sammenligning
[11:12:42][INFO] laster brannmurdeteksjonsskript
[11:12:42][INFO] kjører brannmurdeteksjonssjekk
[11:12:44][FIREWALL] oppdaget nettstedbeskyttelse identifisert som 'Apache Generic'
[11:12:44][INFO] starter omgåelsesanalyse
[11:12:44][INFO] laster payload-manipuleringsskript
[11:12:45][INFO] kjører manipulerings-omgåelsessjekker
[11:19:09][SUCCESS] synlige fungerende manipulasjoner for mål:
------------------------------
(#1) beskrivelse: manipuler payload ved å endre tegn til en joker
eksempel: '/bin/cat /et?/?asswd'
load path: content.tampers.randomwildcard
------------------------------

Som vist i resultatet ovenfor, svarte webserveren på forespørselen og avslørte at brannmuren var Apache. Vi kan også benytte Tor for å skanne etter en WAF, men det kan øke ventetiden.

./whatwaf -u https://www.målnetside.no --tor

Den store fordelen med Whatwaf er at det automatisk prøver å tilby payloads for å omgå den oppdagede brannmuren.

#3. Deteksjon med Wafw00f

Det mest kjente verktøyet for å detektere WAF-er er Wafw00f. Wafw00f sender en HTTP-forespørsel til WAF-en for å identifisere den. Hvis sending av HTTP-forespørsler mislykkes, sender Wafw00f en ondsinnet forespørsel. Hvis den mislykkes, undersøker Wafw00f tidligere forespørsler og bruker en enkel algoritme for å avgjøre om WAF-en reagerer på angrep.

Wafw00f er ikke forhåndsinstallert i Kali Linux.

Hvordan installere Wafw00f?

Zip-pakken kan lastes ned fra den offisielle GitHub-kilden.

Last ned Wafwoof-verktøyet. Du kan også bruke git-klienten til å klone depotet. For å få pakken, kjør kommandoen:

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

For å installere wafw00f i systemet, naviger til wafw00f-mappen og utfør kommandoen:

$ python setup.py install

Oppsettfilen vil behandles og wafw00f vil bli installert.

Bruk av verktøyet

For å bruke verktøyet, kjør denne kommandoen:

$ wafw00f <url>

HUSK: Skann kun nettsider du har tillatelse til å teste.

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://webhashes.com 

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

                    ~ WAFW00F : v2.1.0 ~
    Verktøyet for fingeravtrykk av brannmurer for nettapplikasjoner                                                                 
                                                                                                                        
[*] Sjekker https://whatismyip.com
[+] Siden https://whatismyip.com er bak Cloudflare (Cloudflare Inc.) WAF.
[~] Antall forespørsler : 2

Beklager, brannmuren ble oppdaget!

La oss prøve et annet nettsted for demonstrasjonsformål.

┌──(root💀kali)-[/home/writer/wafw00f]
└─# wafw00f https://renjith.org

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

                    ~ WAFW00F : v2.1.0 ~
    Verktøyet for fingeravtrykk av brannmurer for nettapplikasjoner                                                                 
                                                                                                                        
[*] Sjekker https://renjith.org
[+] Generiske deteksjonsresultater:
[-] Ingen WAF oppdaget av den generiske deteksjonen
[~] Antall forespørsler: 7

Ingen brannmur ble oppdaget denne gangen.

For å bruke den i detaljert modus, kjør kommandoen:

wafw00f  <url> -v

Du kan se flere funksjoner i verktøyet med denne kommandoen:

wafw00f <url> --help

Konklusjon 👨‍💻

I denne artikkelen undersøkte vi ulike strategier og verktøy for å oppdage WAF-er. Dette er en viktig aktivitet som bør utføres i informasjonsinnsamlingsfasen for hver penetrasjonstest av en nettapplikasjon.

I tillegg gjør kunnskap om at en WAF er implementert, at penetrasjonstestere kan utforske forskjellige metoder for å omgå forsvaret og utnytte potensielle sikkerhetshull.

Ifølge en etisk hacker er implementering av en WAF stadig mer nødvendig. Det er viktig å analysere loggene fra nettapplikasjonen for å identifisere nye angrep som rettes mot backend-serveren. Dette gjør at du kan tilpasse regler i WAF-en og oppnå et høyere sikkerhetsnivå.

Du kan også være interessert i å lese om sårbarheter ved bruk av Nikto Scanner.