Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach
W przeszłości Artykuł rozmawialiśmy o Nemesida WAF za darmo - bezpłatne narzędzie do ochrony stron internetowych i API przed atakami hakerów, w tym przypadku postanowiliśmy sprawdzić popularny skaner podatności Wapiti.

Skanowanie strony internetowej pod kątem podatności jest niezbędnym działaniem, które w połączeniu z analizą kodu źródłowego pozwala ocenić poziom jej bezpieczeństwa przed zagrożeniami kompromitującymi. Możesz skanować zasób sieciowy za pomocą specjalistycznych narzędzi.

Nikto, W3af (napisany w Pythonie 2.7, który nie jest już wspierany) czy Arachni (nie jest już wspierany od lutego) to najpopularniejsze rozwiązania prezentowane w segmencie darmowym. Oczywiście są też inne, jak na przykład Wapiti, na którym postanowiliśmy się skupić.

Wapiti współpracuje z następującymi typami luk:

  • ekspansja plików (lokalna i zdalna, fopen, readfile);
  • zastrzyki (wstrzyknięcie PHP/JSP/ASP/SQL i wstrzyknięcie XPath);
  • XSS (Cross Site Scripting) (refleksyjny i trwały);
  • wykrywanie i wykonywanie poleceń (eval(), system(), passstru());
  • Zastrzyki CRLF (dzielenie odpowiedzi HTTP, utrwalanie sesji);
  • osadzanie XXE (zewnętrzny podmiot XML);
  • SSRF (fałszowanie żądań po stronie serwera);
  • wykorzystanie znanych, potencjalnie niebezpiecznych plików (dzięki bazie Nikto);
  • słabe konfiguracje .htaccess, które można ominąć;
  • obecność plików kopii zapasowych ujawniających poufne informacje (ujawnienie kodu źródłowego);
  • Nerwica wojenna;
  • otwarte przekierowania;
  • niestandardowe metody HTTP, które można rozwiązać (PUT).

Cechy:

  • Obsługa proxy HTTP, HTTPS i SOCKS5;
  • uwierzytelnianie przy użyciu kilku metod: Basic, Digest, Kerberos lub NTLM;
  • możliwość ograniczenia obszaru skanowania (domena, folder, strona, adres URL);
  • automatyczne usunięcie jednego z parametrów w adresie URL;
  • liczne zabezpieczenia przed niekończącymi się pętlami skanowania (przykład: ifor, ograniczanie wartości parametru);
  • możliwość ustawienia priorytetu sprawdzania adresów URL (nawet jeśli nie znajdują się one w obszarze skanowania);
  • możliwość wykluczenia niektórych adresów URL ze skanowania i ataków (np. wylogowanie z adresu URL);
  • importuj pliki cookie (pobierz je za pomocą narzędzia wapiti-getcookie);
  • możliwość włączenia/wyłączenia weryfikacji certyfikatu SSL;
  • możliwość wyodrębnienia adresów URL z JavaScript (bardzo prosty interpreter JS);
  • interakcja z HTML5;
  • kilka opcji zarządzania zachowaniem i ograniczeniami przeszukiwaczy;
  • ustawienie maksymalnego czasu procesu skanowania;
  • dodanie niestandardowych nagłówków HTTP lub skonfigurowanie niestandardowego klienta użytkownika.

Dodatkowe funkcje:

  • tworzenie raportów podatności w różnych formatach (HTML, XML, JSON, TXT);
  • wstrzymywanie i wznawianie skanowania lub ataku (mechanizm sesji wykorzystujący bazy danych SQLite3);
  • podświetlenie terminala w celu uwydatnienia luk;
  • różne poziomy rejestrowania;
  • Szybki i łatwy sposób na aktywację/dezaktywację modułów ataku.

Instalacja

Aktualną wersję Wapiti można zainstalować na 2 sposoby:

  • pobierz źródło z oficjalnego źródła сайта i uruchom skrypt instalacyjny, mając wcześniej zainstalowany Python3;
  • za pomocą polecenia pip3 install wapiti3.

Po tym Wapiti będzie gotowy do pracy.

Praca z narzędziem

Aby zademonstrować działanie Wapiti, skorzystamy ze specjalnie przygotowanego stoiska sites.vulns.pentestit.ru (zasób wewnętrzny), zawierającego różne luki w zabezpieczeniach (Injection, XSS, LFI/RFI) i inne niedociągnięcia aplikacji webowych.

Informacje są podawane wyłącznie w celach informacyjnych. Nie łam prawa!

Podstawowe polecenie uruchamiające skaner:

# wapiti -u <target> <options>

Jednocześnie dostępna jest dość szczegółowa pomoc z ogromną liczbą opcji uruchamiania, na przykład:

--zakres - obszar zastosowań
Jeśli określisz parametr zakresu wraz z adresem URL przeszukiwania, możesz dostosować obszar przeszukiwania witryny, określając zarówno pojedynczą stronę, jak i wszystkie strony, które można znaleźć w witrynie.

-s и -x — opcje dodawania lub usuwania określonych adresów URL. Opcje te są przydatne, gdy trzeba dodać lub usunąć określony adres URL podczas procesu indeksowania.

--pominąć — określony parametr za pomocą tego klucza zostanie przeskanowany, ale nie zostanie zaatakowany. Przydatne, jeśli istnieją jakieś niebezpieczne parametry, które najlepiej wykluczyć podczas skanowania.

--weryfikuj-ssl — włącz lub wyłącz weryfikację certyfikatu.
Skaner Wapiti jest modułowy. Aby jednak uruchomić określone moduły, w tym te, które są automatycznie podłączane podczas działania skanera, musisz użyć przełącznika -m i wyświetlić listę potrzebnych modułów, oddzielając je przecinkami. Jeśli klucz nie zostanie użyty, domyślnie będą działać wszystkie moduły. W najprostszej wersji będzie to wyglądać następująco:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Ten przykład użycia oznacza, że ​​podczas skanowania celu będziemy używać wyłącznie modułów SQL, XSS i XXE. Dodatkowo możesz filtrować działanie modułów w zależności od pożądanej metody. Na przykład -m „xss: pobierz, blindsql: wyślij, xxe: wyślij”. W tym wypadku moduł xss będzie dotyczyć żądań wysyłanych metodą GET oraz modułu blibdsql - do żądań POST itp. Nawiasem mówiąc, jeśli jakiś moduł, który znalazł się na liście, nie był potrzebny podczas skanowania lub zajmuje bardzo dużo czasu, to wciskając kombinację Ctrl+C można pominąć korzystanie z bieżącego modułu, wybierając odpowiednią pozycję w interaktywnym menu.

Wapiti obsługuje przekazywanie żądań przez serwer proxy za pomocą klucza -p i uwierzytelnianie w witrynie docelowej za pomocą parametru -a. Możesz także określić typ uwierzytelniania: Podstawowy, Digest, Kerberos и NTLM. Dwa ostatnie mogą wymagać instalacji dodatkowych modułów. Dodatkowo możesz wstawiać do żądań dowolne nagłówki (w tym dowolne User-Agent) i wiele więcej.

Aby skorzystać z uwierzytelniania, możesz skorzystać z narzędzia wapiti-getcookie. Z jego pomocą formujemy ciastko, którego Wapiti użyje podczas skanowania. Tworzenie ciastko zrobione za pomocą polecenia:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Pracując interaktywnie odpowiadamy na pytania i wskazujemy niezbędne informacje takie jak login, hasło itp.:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Dane wyjściowe to plik w formacie JSON. Inną opcją jest dodanie wszystkich niezbędnych informacji poprzez parametr -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Wynik będzie podobny:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Rozważając główną funkcjonalność skanera, ostateczną prośbą o przetestowanie aplikacji webowej w naszym przypadku było:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

gdzie wśród innych parametrów:

-f и -o — format i ścieżka zapisu raportu;

-m — nie zaleca się łączenia wszystkich modułów, ponieważ wpłynie na czas testowania i rozmiar raportu;

--kolor — podkreśla znalezione luki w zależności od ich krytyczności według samego Wapiti;

-c - użycie pliku z ciastko, wygenerowany przy użyciu wapiti-getcookie;

--zakres — wybór celu ataku. Wybór opcji falcówka Każdy adres URL będzie przeszukiwany i atakowany, zaczynając od podstawowego. Podstawowy adres URL musi zawierać ukośnik (bez nazwy pliku);

--sesja spłukiwania — pozwala na wielokrotne skanowanie, w którym poprzednie wyniki nie będą brane pod uwagę;

-A - własny User-Agent;

-p — adres serwera proxy, jeśli to konieczne.

Trochę o raporcie

Wynik skanowania prezentowany jest w formie szczegółowego raportu o wszystkich wykrytych podatnościach w formacie strony HTML, w przejrzystej i łatwej do odczytania formie. W raporcie zostaną wskazane kategorie i liczba wykrytych luk, ich opisy, żądania, polecenia curl i wskazówki, jak je zamknąć. Dla ułatwienia nawigacji do nazw kategorii zostanie dodany link, po kliknięciu na który można do niej przejść:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Istotną wadą raportu jest brak samej mapy aplikacji webowych, bez której nie będzie wiadomo, czy wszystkie adresy i parametry zostały przeanalizowane. Istnieje również możliwość fałszywych alarmów. W naszym przypadku raport zawiera „pliki kopii zapasowych” i „pliki potencjalnie niebezpieczne”. Ich liczba nie odpowiada rzeczywistości, ponieważ na serwerze nie było takich plików:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Być może z czasem nieprawidłowo działające moduły zostaną naprawione. Kolejną wadą raportu jest brak kolorowania wykrytych podatności (w zależności od ich krytyczności), a przynajmniej podziału na kategorie. Jedynym sposobem, w jaki możemy pośrednio zrozumieć krytyczność znalezionej luki, jest użycie parametru --kolor podczas skanowania, a następnie znalezione luki zostaną pokolorowane różnymi kolorami:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Ale sam raport nie zapewnia takiego zabarwienia.

Luki w zabezpieczeniach

SQLi

Skaner częściowo poradził sobie z wyszukiwaniem SQLi. Podczas wyszukiwania luk SQL na stronach, które nie wymagają uwierzytelnienia, nie pojawiają się żadne problemy:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Nie udało się znaleźć luki na stronach dostępnych dopiero po uwierzytelnieniu, nawet przy użyciu valid ciastko, ponieważ najprawdopodobniej po pomyślnym uwierzytelnieniu ich sesja zostanie „wylogowana” i ciastko stanie się nieważne. Gdyby funkcja cofnięcia autoryzacji została zaimplementowana jako osobny skrypt odpowiedzialny za przetwarzanie tej procedury, wówczas możliwe byłoby jej całkowite wykluczenie poprzez parametr -x i tym samym uniemożliwienie jej uruchomienia. W przeciwnym razie nie będzie możliwości wykluczenia jego przetwarzania. Nie jest to problem konkretnego modułu, ale narzędzia jako całości, jednak z powodu tego niuansu nie udało się wykryć kilku zastrzyków w zamkniętym obszarze zasobów.

XSS

Skaner doskonale poradził sobie z postawionym zadaniem i znalazł wszystkie przygotowane podatności:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

LFI/RFI

Skaner znalazł wszystkie podstawowe luki:

Wapiti - samodzielne sprawdzanie witryny pod kątem luk w zabezpieczeniach

Ogólnie rzecz biorąc, pomimo fałszywych alarmów i brakujących luk, Wapiti, jako darmowe narzędzie, wykazuje całkiem niezłe wyniki wydajnościowe. W każdym razie warto przyznać, że skaner jest dość wydajny, elastyczny i wielofunkcyjny, a co najważniejsze, jest darmowy, więc ma prawo być używany, pomagając administratorom i programistom uzyskać podstawowe informacje o stanie bezpieczeństwa sieci aplikacja.

Bądź zdrowy i chroniony!

Źródło: www.habr.com

Dodaj komentarz