Es ist für einen potenziellen Angreifer von Vorteil, die Position einer Web Application Firewall (WAF) innerhalb eines Netzwerks zu kennen, bevor mit der eigentlichen Analyse begonnen wird.
Penetrationstester müssen sich der Existenz einer WAF bewusst sein, bevor sie eine Webanwendung untersuchen, da dies die Effektivität ihrer Angriffe beeinflussen kann.
Doch zunächst…
Was versteht man unter einer WAF?
Eine Web Application Firewall (WAF) spielt eine entscheidende Rolle bei der Sicherheit von Webseiten. Sie übernimmt die Aufgabe der Filterung und Überwachung des Datenverkehrs. WAFs bieten Schutz vor erheblichen Sicherheitslücken. Viele Unternehmen modernisieren ihre Infrastruktur, um Web Application Firewalls zu integrieren. Experten im Bereich des ethischen Hackings betonen jedoch, dass WAFs Sicherheitsprobleme nicht autonom beheben können. Eine sorgfältige Konfiguration ist unerlässlich, um externe Bedrohungen zu erkennen und zu blockieren.
Eine WAF unterscheidet sich von einer herkömmlichen Firewall durch ihre Fähigkeit, spezifische Inhalte von Online-Anwendungen zu filtern, während traditionelle Firewalls als eine Art Sicherheitsbarriere zwischen Servern fungieren.
Eine HTTP-Interaktion folgt bestimmten Regeln. Diese Regeln sind auf typische Schwachstellen wie Cross-Site-Scripting und SQL-Injection ausgerichtet.
Es gibt zahlreiche kostenlose und Open-Source-Tools im Internet, die die Firewalls hinter Webanwendungen identifizieren können.
In diesem Artikel betrachten wir die Methoden und Tools, die für die Entdeckung einer WAF eingesetzt werden können.
Wichtiger Hinweis: Für dieses Tutorial habe ich meine eigene Website verwendet, um die Details zu demonstrieren. Führen Sie ohne die vorherige Genehmigung des Eigentümers keine Scans oder Hacking-Aktivitäten auf fremden Websites durch.
Manuelle Ermittlung
Detektion mit TELNET
Telnet wird vorwiegend von Netzwerkadministratoren und Penetrationstestern verwendet. Mit Telnet ist es möglich, über jeden beliebigen Port eine Verbindung zu Remote-Hosts herzustellen.
- Web Application Firewalls hinterlassen (oder fügen) häufig HTTP-Parameter in den Antwortheadern hinzu.
- Telnet kann genutzt werden, um grundlegende Informationen wie den Server und Cookies zu sammeln, die beim Fingerprinting eingesetzt werden.
- Geben Sie
telnet Zielwebsite.com 80
ein
[email protected]: # telnet Targetwebsite.com 80 Trying 18.166.248.208... Connected to Targetwebsite.com. Escape character is '^]'.
Nachdem Sie den obigen Befehl ausgeführt haben, geben Sie HEAD / HTTP / 1.1
ein und drücken Sie die Eingabetaste.
[email protected]: # 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.
Nachdem Telnet auf dem Zielport 80 genutzt wurde, werden der Server, auf dem die Webseite gehostet wird, und die verwendete Back-End-Sprache angezeigt.
Manche WAF-Systeme erlauben die Modifikation des Headers und können den Webserver veranlassen, HTTP-Antworten zu senden, die von den Standardantworten abweichen.
Wie das obige Ergebnis zeigt, hat der Webserver auf unsere Anfrage geantwortet und die Existenz von Varnish als Firewall/Edge-Gateway enthüllt.
Automatisierte Erkennung
#1. Detektion mit NMAP
Für diesen Zweck kann auch Nmap eingesetzt werden, das über ein Skript zur Identifizierung von Web Application Firewalls verfügt.
- Nmap ist ein Sicherheitstool, das häufig von Pentestern und Netzwerkadministratoren verwendet wird.
- Nmap wird zur Informationsbeschaffung über das Ziel verwendet.
- Das Skript wurde auf derselben Webseite wie zuvor ausgeführt
- Geben Sie den Befehl
nmap --script=http-waf-fingerprint targetweb.com
ein
[email protected]:# nmap --script=http-waf-fingerprint targetwebsite.com Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST Nmap scan report for targetsite.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
Nach der Ausführung des oben genannten Nmap-Befehls wurde die Citrix Netscaler-Firewall erkannt.
#2. Detektion mit Whatwaf
Whatwaf ist ein Sicherheitstool, das für das Fingerprinting von Webanwendungen und die Erkennung von WAFs entwickelt wurde. Dieses Tool ist nützlich bei Sicherheitsaudits, um festzustellen, ob eine Webanwendung durch eine WAF geschützt ist.
Ist dies der Fall, können Umgehungs- und Vermeidungsstrategien hilfreich sein, um die Online-Anwendung weiter zu testen oder zu kompromittieren.
Firewall-Umgehung, Anwendungserkennung, Anwendungs-Fingerprinting und Software-Identifizierung sind einige der typischen Anwendungsfälle für WhatWaf. Netzwerk-Penetrationstester und Sicherheitsexperten sind die primären Zielnutzer dieses Programms.
Installation von WhatWaf
Installation auf Kali-Linux:
sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
Beim Starten kann man, ohne eine Python-Version anzugeben, einfach eine ausführbare Datei verwenden:
./whatwaf --help
Da keine Python 2-Abhängigkeiten installiert sind, wird die spezifische Angabe der Python 3-Version empfohlen.
python3 ./whatwaf --help
Nutzung des Tools
Das Whatwaf-Firewall-Erkennungstool ist einfach zu verwenden! Es genügt, den folgenden Befehl auszuführen:
./whatwaf -u https://www.targetsite.com
Wie unten dargestellt, hat dieses Tool die Firewall für die angegebene Website-URL erkannt.
Zur Erinnerung: Ich habe meine eigene Website für den Scan verwendet.
┌──(root💀kali)-[/home/writer/WhatWaf] └─# ./whatwaf -u https://www.renjith.org ,------. ' .--. ' ,--. .--. ,--. .--.| | | | | | | | | | | |'--' | | | | | | | | | | __. | | |.'.| | | |.'.| | | .' | | | | |___| | ,'. |hat| ,'. |af .---. '--' '--' '--' '--' '---' /><img src="WhatWaf?<|>v2.0.3($dev)">%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 https://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 ------------------------------
Wie aus dem obigen Ergebnis hervorgeht, hat der Webserver auf unsere Anfrage reagiert und die Apache-Firewall identifiziert. Es ist auch möglich, den Tor-Dienst für die WAF-Suche zu nutzen, was jedoch die Latenz erhöhen kann.
./whatwaf -u https://www.targetsite.com --tor
Der Hauptvorteil von Whatwaf ist die automatische Identifizierung potenzieller Payloads zur Umgehung der erkannten Firewall.
#3. Detektion mit Wafw00f
Das bekannteste Tool zur Erkennung von Web Application Firewalls ist Wafw00f. Wafw00f sendet HTTP-Anfragen an die WAF, um diese zu identifizieren. Sollte das Senden regulärer HTTP-Anfragen fehlschlagen, sendet Wafw00f eine schädliche HTTP-Anfrage. Bei einer Fehlfunktion einer schädlichen HTTP-Anfrage analysiert Wafw00f vorherige HTTP-Anfragen und verwendet einen einfachen Algorithmus, um zu ermitteln, ob die Firewall auf unsere Angriffe reagiert.
Wafw00f ist nicht standardmäßig in Kali-Linux-Distributionen vorinstalliert.
Installation von Wafw00f
Das ZIP-Paket kann aus der offiziellen GitHub-Quelle heruntergeladen werden.
Laden Sie das Wafwoof-Tool herunter. Alternativ kann das Repository mit dem Git-Client geklont werden. Führen Sie die folgenden Befehle aus, um das Paket zu erhalten:
$ git clone https://github.com/EnableSecurity/wafw00f.git
Um das Wafw00f-Tool im System zu installieren, navigieren Sie zum Verzeichnis wafw00f
und führen Sie den folgenden Befehl aus.
$ python setup.py install
Die Setup-Datei wird verarbeitet und Wafw00f wird auf dem System installiert.
Nutzung des Tools
Führen Sie den folgenden Befehl aus, um das Tool zu nutzen.
$ wafw00f <url>
Denken Sie daran: Scannen Sie nur Webseiten, für die Sie eine Scanerlaubnis haben.
┌──(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
Bedauerlicherweise wurde eine Firewall erkannt!
Wir werden zum Zwecke der Diskussion eine andere Ziel-Webseite testen.
┌──(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
Diesmal wurde keine Firewall erkannt.
Um das Tool im ausführlichen Modus zu verwenden, führen Sie den folgenden Befehl aus.
wafw00f <url> -v
Weitere Funktionen dieses Dienstprogramms erhalten Sie durch Ausführen dieses Befehls.
wafw00f <url> --help
Zusammenfassung 👨💻
In diesem Artikel haben wir uns verschiedene Methoden und Tools zur Erkennung von Web Application Firewalls angesehen. Dies ist eine wesentliche Aufgabe in der Phase der Informationsbeschaffung bei jedem Penetrationstest für Webanwendungen.
Das Wissen um die Existenz einer WAF ermöglicht es Penetrationstestern, unterschiedliche Strategien zu erproben, um die Abwehrmechanismen zu umgehen und potenzielle Sicherheitslücken in der Online-Anwendung auszunutzen.
Ein Experte für ethisches Hacken betont die zunehmende Notwendigkeit einer Web Application Firewall (WAF). Es ist stets von Bedeutung, die Protokolle Ihrer Webanwendung zu analysieren, um neuartige Angriffe auf den Back-End-Webanwendungsserver zu identifizieren. Dadurch können Sie die Regeln in Ihrer Webanwendungs-Firewall so anpassen, dass ein Höchstmaß an Schutz gewährleistet wird.
Vielleicht ist auch folgender Artikel interessant für Sie: Schwachstellen bei Verwendung von Nikto Scanner.