Jak znaleźć, który WAF chroni witrynę?

Opublikowany: 2021-10-11

Zawsze dobrym pomysłem jest, aby osoba atakująca wiedziała, gdzie w sieci jest zwykle używany plik WAF, zanim zacznie pobierać odcisk palca.

Testerzy penetracji muszą być świadomi istnienia WAF przed rozpoczęciem korzystania z aplikacji internetowej, ponieważ może to mieć wpływ na wynik ich ataków.

Ale przed tym…

Co to jest WAF?

WAF (Web Application Firewall) odgrywa znaczącą rolę w bezpieczeństwie stron internetowych. Filtrują i monitorują ruch. Firewalle aplikacji internetowych zapewniają ochronę przed poważnymi błędami. Wiele organizacji modernizuje swoją infrastrukturę, aby uwzględnić zapory aplikacji internetowych. Według ekspertów ds. etycznego hakowania, zapory sieciowe aplikacji internetowych nie są w stanie samodzielnie rozwiązać problemów związanych z bezpieczeństwem; wymagana jest odpowiednia konfiguracja do rozpoznawania i blokowania zagrożeń zewnętrznych.

WAF różni się od tradycyjnej zapory sieciowej tym, że może filtrować zawartość określonych aplikacji internetowych, podczas gdy tradycyjne zapory działają jako bariera bezpieczeństwa między serwerami.

Interakcja HTTP podlega zbiorowi reguł. Reguły te dotyczą typowych luk w zabezpieczeniach, takich jak skrypty między witrynami i ogólnie wstrzyknięcie SQL.

W Internecie istnieje wiele bezpłatnych narzędzi typu open source, które mogą wykrywać zapory sieciowe stojące za aplikacjami internetowymi.

W tym artykule przyjrzymy się podejściom i narzędziom, które można wykorzystać do odkrycia WAF.

Uwaga: w tym samouczku wykorzystałem własną witrynę do wyliczania szczegółów. Nie wykonuj skanowania ani innych działań hakerskich w żadnej witrynie bez uprzedniej zgody właściciela.

Wykrywanie ręczne

Wykrywanie za pomocą TELNET

Telnet jest używany głównie przez administratorów sieci i testerów penetracji. Telnet umożliwia łączenie się ze zdalnymi hostami przez dowolny port, jak wspomniano wcześniej.

  • Parametry HTTP są często pozostawiane (lub wstawiane) w nagłówkach odpowiedzi przez zapory sieciowe aplikacji internetowych.
  • Telnet może być używany do uzyskiwania podstawowych informacji o zbieraniu, takich jak serwer i pliki cookie używane do pobierania odcisków palców.
  • Wpisz Telnet Targetwebsite.com 80
 [email protected]: # telnet Targetwebsite.com 80 Trying 18.166.248.208... Connected to Targetwebsite.com. Escape character is '^]'.

Po uruchomieniu powyższego polecenia wpisz HEAD / HTTP / 1.1 i naciśnij klawisz Enter.

 [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.

Wskazuje serwer, na którym znajduje się strona internetowa oraz język back-endu, na którym została utworzona po użyciu telnet na porcie docelowym 80.

Niektóre systemy WAF pozwalają na modyfikację nagłówka, a także mogą powodować wysyłanie przez serwer WWW odpowiedzi HTTP, które różnią się od standardowych.

Jak pokazano w powyższym wyniku, serwer WWW odpowiedział na nasze żądanie i ujawnił, że brama firewall/krawędź to Varnish.

Automatyczne wykrywanie

#1. Wykrywanie za pomocą NMAP

Do tego celu można również wykorzystać Nmap, który posiada skrypt, który może zidentyfikować zaporę sieciową aplikacji webowej.

  • Nmap to narzędzie do oceny bezpieczeństwa, z którego często korzysta wielu testerów i administratorów sieci.
  • Nmap służy do uzyskiwania informacji o celu.
  • Skrypt został uruchomiony na tej samej stronie internetowej, co poprzednio
  • Wpisz polecenie nmap –script=http-waf-fingerprint targetweb.com
 [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

Po użyciu powyższego polecenia Nmap wykryto zaporę Citrix Netscaler.

#2. Wykrywanie za pomocą Whatwaf

Whatwaf to narzędzie zabezpieczające do pobierania odcisków palców aplikacji internetowych i wykrywania obecności dowolnego WAF. To narzędzie jest przydatne do określenia, czy aplikacja internetowa jest chroniona przez WAF podczas oceny bezpieczeństwa.

W takim przypadku strategie omijania i unikania mogą być pomocne w dalszym testowaniu lub wykorzystywaniu aplikacji online.

Omijanie zapory, wykrywanie aplikacji, odciski palców aplikacji i identyfikacja oprogramowania to częste zastosowania WhatWaf. Sieć
Zamierzonymi użytkownikami tego programu są testerzy pisakowi i specjaliści ds. bezpieczeństwa.

Jak zainstalować WhatWaf?

Instalacja na Kali-Linux

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

Przy uruchomieniu, bez wersji Pythona, możemy łatwo określić plik wykonywalny:

 ./whatwaf --help

Ponieważ jednak nie zainstalowaliśmy zależności Pythona 2, zaleca się, abyś dostarczył konkretną wersję Pythona.

 python3 ./whatwaf --help

Wykorzystanie narzędzi

Narzędzie do wykrywania zapory sieciowej Whatwaf jest proste w użyciu! Wystarczy wykonać następujące polecenie:

 ./whatwaf -u https://www.targetsite.com

Jak widać poniżej, to narzędzie wykryło zaporę sieciową dla podanego adresu URL witryny.

Przypomnienie! – Do skanowania wykorzystałem własną stronę

 ┌──(rootkali)-[/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 ------------------------------

Jak pokazano w powyższym wyniku, serwer sieciowy odpowiedział na nasze żądanie i ujawnił, że zapora to Apache. Możemy również użyć usługi tor do skanowania w poszukiwaniu WAF, ale może to zwiększyć opóźnienie.

 ./whatwaf -u https://www.targetsite.com --tor

Główną zaletą narzędzia Whatwaf jest to, że automatycznie próbuje przekazać ładunki, aby ominąć ujawnioną zaporę ogniową.

#3. Wykrywanie za pomocą Wafw00f

Najbardziej znanym narzędziem do wykrywania zapory sieciowej jest Wafw00f. Wafw00f wysyła żądanie HTTP do zapory aplikacji sieciowej, aby ją zidentyfikować. Gdy wysyłanie żądań HTTP nie powiedzie się, wafw00f wysyła złośliwe żądanie HTTP. Jeśli wykonanie złośliwego żądania HTTP nie powiedzie się, wafw00f analizuje wcześniejsze żądania HTTP i wykorzystuje prosty algorytm w celu określenia, czy zapora sieciowa aplikacji internetowej reaguje na nasze ataki.

Wafw00f nie jest preinstalowany w dystrybucjach Kali Linux.

Jak zainstalować Wafw00f?

Pakiet zip jest dostępny do pobrania z oficjalnego źródła GitHub.

Pobierz narzędzie Wafwoof. Możesz również użyć klienta git do sklonowania repozytorium. Aby pobrać pakiet, uruchom polecenia:

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

Aby pobrać narzędzie wafw00f w systemie, przejdź do folderu lub katalogu wafw00f i wykonaj następujące polecenie.

 $ python setup.py install

Plik instalacyjny zostanie przetworzony, a wafw00f zostanie zainstalowany w systemie.

Wykorzystanie narzędzi

Aby użyć tego narzędzia, uruchom to polecenie.

 $ wafw00f <url>

PRZYPOMNIENIE – Skanuj tylko te strony internetowe, które możesz testować

 ┌──(rootkali)-[/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

Szkoda, wykryto zaporę!

Wypróbujemy inną stronę docelową do celów dyskusji.

 ┌──(rootkali)-[/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

Tym razem nie wykryto zapory.

Aby użyć go w trybie pełnym, uruchom następujące polecenie.

 wafw00f <url> -v

Możesz zobaczyć kilka dodatkowych możliwości tego narzędzia, wykonując to polecenie.

 wafw00f <url> --help

Zawijanie

W tym artykule przyjrzeliśmy się różnym strategiom i narzędziom do wykrywania zapór sieciowych aplikacji internetowych. Jest to ważna czynność, którą należy wykonać na etapie zbierania informacji w każdym teście penetracyjnym aplikacji internetowej.

Co więcej, wiedza, że ​​istnieje WAF, pozwala testerowi penetracji wypróbować różne podejścia do obejścia zabezpieczeń i wykorzystania wszelkich luk w aplikacji online.

Według badacza zajmującego się etycznym hakowaniem, coraz bardziej konieczne jest posiadanie zapory sieciowej (WAF). Analiza dzienników aplikacji sieci Web w celu wykrycia nowych ataków występujących na serwerze aplikacji sieci Web zaplecza jest zawsze ważna. Umożliwia to dostosowanie reguł w zaporze aplikacji sieci Web w celu zapewnienia najwyższego poziomu ochrony.

Możesz również zainteresować się czytaniem: Podatności przy użyciu Skanera Nikto.