W świecie cyberbezpieczeństwa, ochrona aplikacji internetowych przed atakami jest kluczowa. Jednym z fundamentów tej ochrony jest zapora aplikacji internetowej (WAF). Zanim jednak przejdziemy do testów penetracyjnych, warto sprawdzić, czy dana aplikacja korzysta z takiego zabezpieczenia.
Dla osoby przeprowadzającej testy penetracyjne, świadomość istnienia zapory WAF jest niezbędna, ponieważ może ona wpływać na skuteczność prób ataku.
Zanim jednak przejdziemy do metod wykrywania, wyjaśnijmy sobie, czym dokładnie jest WAF.
Czym jest WAF?
WAF, czyli zapora aplikacji internetowej, pełni istotną rolę w systemie bezpieczeństwa strony internetowej. Działa ona poprzez monitorowanie i filtrowanie ruchu sieciowego. WAF zabezpiecza przed poważnymi zagrożeniami. Coraz więcej organizacji decyduje się na wdrożenie tego typu rozwiązań w ramach swojej infrastruktury. Eksperci od etycznego hakowania podkreślają, że WAF nie jest samodzielnym rozwiązaniem problemów bezpieczeństwa. Kluczowe jest jego właściwe skonfigurowanie, tak aby skutecznie identyfikował i blokował zewnętrzne zagrożenia.
Istotną różnicą między WAF a tradycyjną zaporą sieciową jest zdolność WAF do filtrowania zawartości konkretnych aplikacji webowych. Natomiast tradycyjne zapory działają na poziomie sieci, pełniąc rolę bariery ochronnej między serwerami.
Komunikacja HTTP podlega pewnemu zbiorowi reguł. Reguły te dotyczą najczęściej występujących luk, takich jak ataki XSS (cross-site scripting) czy SQL injection.
W internecie dostępne są liczne, bezpłatne narzędzia typu open source, które pomagają w wykrywaniu WAF-ów chroniących aplikacje webowe.
W niniejszym artykule przeanalizujemy różne podejścia i narzędzia, które można wykorzystać do identyfikacji WAF.
Uwaga: Na potrzeby tego artykułu użyłem własnej strony internetowej do przedstawienia poszczególnych kroków. Pamiętaj, aby nie przeprowadzać skanowania ani innych działań hakerskich bez zgody właściciela strony.
Ręczne metody wykrywania
Wykrywanie za pomocą TELNET
Telnet to narzędzie często używane przez administratorów sieci oraz testerów penetracyjnych. Umożliwia ono łączenie się ze zdalnymi hostami przez różne porty.
- W nagłówkach odpowiedzi, zapory WAF często umieszczają (lub pozostawiają) parametry HTTP.
- Telnet umożliwia pozyskanie podstawowych informacji o serwerze oraz plikach cookie, które mogą posłużyć do pobierania odcisków palców.
- Aby użyć telnetu, wpisz:
telnet adres_strony.com 80
[email protected]: # telnet adres_strony.com 80 Próba połączenia z 18.166.248.208... Połączono z adres_strony.com. Znak ucieczki to '^]'.
Po wprowadzeniu powyższej komendy, wpisz HEAD / HTTP/1.1
i naciśnij Enter.
[email protected]: # telnet 18.166.248.208 80 Próba połączenia z 18.166.248.208... Połączono z 18.166.248.208. Znak ucieczki to '^]'. 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 Połączenie zamknięte przez zdalnego hosta.
Powyższy wynik wskazuje, na jakim serwerze hostowana jest strona oraz na jakim języku zaplecza została zbudowana. Uzyskane informacje, dzięki użyciu Telnetu na porcie 80, są przydatne do rozpoznania środowiska.
Niektóre systemy WAF mogą modyfikować nagłówki odpowiedzi, przez co serwer WWW może wysyłać niestandardowe odpowiedzi HTTP.
Z przedstawionego przykładu wynika, że serwer odpowiedział na nasze żądanie, ujawniając, że w roli bramy/krawędzi występuje Varnish.
Automatyczne metody wykrywania
#1. Wykrywanie za pomocą NMAP
Nmap, popularne narzędzie do oceny bezpieczeństwa, również może pomóc w identyfikacji WAF. Posiada on skrypt, który umożliwia wykrycie zapory aplikacji webowej.
- Nmap jest często wykorzystywany przez testerów penetracyjnych oraz administratorów sieci do gromadzenia informacji o celu.
- Skrypt ten został uruchomiony na tej samej stronie, co w poprzednim przykładzie.
- Wpisz komendę:
nmap –script=http-waf-fingerprint adres_strony.com
[email protected]:# nmap --script=http-waf-fingerprint adres_strony.com Starting Nmap 7.90 (https://nmap.org) at 2021-10-10 07:58 IST Nmap scan report for adres_strony.com (18.166.248.208) Host is up (0.24s latency). Not shown: 982 filtered 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 wykonaniu powyższej komendy, Nmap wykrył zaporę Citrix Netscaler.
#2. Wykrywanie za pomocą Whatwaf
Whatwaf to narzędzie do pobierania odcisków palców aplikacji webowych i wykrywania WAF. Jest przydatne podczas oceny bezpieczeństwa, aby stwierdzić, czy dana aplikacja jest chroniona przez WAF.
W przypadku wykrycia WAF, można zastosować strategie omijania, aby skuteczniej testować lub wykorzystywać aplikację.
WhatWaf znajduje zastosowanie przy omijaniu zapór, wykrywaniu aplikacji, pobieraniu odcisków palców i identyfikacji oprogramowania. Jest przeznaczone dla testerów penetracyjnych i specjalistów ds. bezpieczeństwa.
Instalacja WhatWaf
Instalacja na systemie Kali-Linux:
sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
Przy uruchamianiu bez konkretnej wersji Pythona, można wskazać plik wykonywalny:
./whatwaf --help
Ponieważ jednak nie zainstalowano zależności Pythona 2, zaleca się podać konkretną wersję Pythona:
python3 ./whatwaf --help
Użycie narzędzia
Whatwaf jest prosty w użyciu. Wystarczy wydać następujące polecenie:
./whatwaf -u https://www.adres_strony.com
Jak widać poniżej, narzędzie wykryło zaporę sieciową dla podanego URL.
Przypomnienie: Do przeprowadzenia skanu, użyłem własnej strony.
┌──(root💀kali)-[/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 ------------------------------
Z powyższego wyniku wynika, że serwer WWW odpowiedział na żądanie, ujawniając, że zapora to Apache. Możliwe jest też skanowanie z użyciem usługi Tor, jednak może to zwiększyć opóźnienie.
./whatwaf -u https://www.adres_strony.com --tor
Główną zaletą WhatWaf jest automatyczna próba przekazania ładunków w celu obejścia ujawnionej zapory.
#3. Wykrywanie za pomocą Wafw00f
Wafw00f to popularne narzędzie służące do wykrywania zapór aplikacji webowych. Wysyła ono żądania HTTP do WAF w celu identyfikacji. Jeśli zwykłe żądania nie zadziałają, Wafw00f wysyła złośliwe żądanie HTTP. Jeśli to też nie przyniesie rezultatu, Wafw00f analizuje wcześniejsze żądania HTTP, wykorzystując prosty algorytm do ustalenia, czy WAF reaguje na ataki.
Wafw00f nie jest preinstalowany w dystrybucjach Kali Linux.
Instalacja Wafw00f
Można pobrać pakiet zip z oficjalnego repozytorium GitHub.
Pobierz narzędzie Wafwoof. Możesz też skorzystać z klienta git do sklonowania repozytorium. Aby pobrać pakiet, uruchom następujące komendy:
$ git clone https://github.com/EnableSecurity/wafw00f.git
Aby zainstalować narzędzie w systemie, przejdź do katalogu wafw00f i wykonaj polecenie:
$ python setup.py install
Po przetworzeniu pliku instalacyjnego, Wafw00f zostanie zainstalowany w systemie.
Użycie narzędzia
Aby użyć narzędzia, wprowadź następujące polecenie:
$ wafw00f <url>
Przypominam – skanuj tylko te strony, do których masz uprawnienia.
┌──(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
Niestety, wykryto zaporę!
Wypróbujmy inną stronę, dla celów edukacyjnych.
┌──(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
Tym razem nie wykryto zapory.
Aby użyć trybu pełnego, wpisz następujące polecenie:
wafw00f <url> -v
Możesz zobaczyć więcej możliwości tego narzędzia, korzystając z polecenia:
wafw00f <url> --help
Podsumowanie 👨💻
W tym artykule omówiliśmy różne metody i narzędzia służące do wykrywania zapór aplikacji internetowych. Jest to istotny krok na etapie zbierania informacji podczas każdego testu penetracyjnego.
Świadomość istnienia WAF pozwala testerowi na eksperymentowanie z różnymi technikami omijania zabezpieczeń i wykorzystania potencjalnych luk.
Eksperci od etycznego hakowania podkreślają, że korzystanie z WAF jest coraz bardziej konieczne. Analiza logów aplikacji webowej w celu wychwycenia nowych typów ataków jest zawsze ważna. Dzięki temu możliwe jest dostosowanie reguł w WAF, co pozwala zapewnić wyższy poziom bezpieczeństwa.
Możesz być również zainteresowany artykułem o lukach w zabezpieczeniach przy wykorzystaniu Nikto Scanner.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.