Miesięcznik informatyków i menedżerów IT sektora publicznego

Kamil Folga

Jak badać bezpieczeństwo aplikacji webowych

Nikto Web Vulnerability Scanner to bezpłatne narzędzie przeznaczone do sprawdzania bezpieczeństwa stron internetowych. Popularność skanera wśród profesjonalistów jest duża – sięga po niego bardzo wielu analityków i pentesterów.

Raport generowany przez Nikto w postaci HTML ułatwia odczyt informacji i analizę danych zebranych przez narzędzie.

Skaner Nikto może zostać uruchomiony na platformie systemowej Linux, wspierającej środowisko programistyczne Perl. Został również dołączony do dystrybucji Kali Linux. Narzędzie przeznaczone jest do wstępnego rozpoznania potencjalnych zagrożeń w aplikacjach (przykładowo stronach internetowych) i na serwerach Web. Nikto wyszuka podejrzane pliki, odnajdzie niebezpieczne skrypty, niezaktualizowane serwery i aplikacje, a także wskaże inne zagrożenia związane z technologią Web. Oprogramowanie wspiera m.in. połączenia SSL, pracę z serwerami pośredniczącymi (proxy), możliwość omijania systemów wykrywania intruzów IDS.

Program jest darmowy (open source) i został zbudowany modułowo, co oznacza, że możemy zwiększać jego funkcjonalność za pomocą wtyczek. Z narzędzia korzystamy przy użyciu interfejsu linii komend.

Jakie luki w aplikacjach Web

Zagrożenia odkrywane w aplikacjach Web najczęściej stanowią konsekwencje błędów w oprogramowaniu strony WWW, a także błędów w konfiguracji lub oprogramowaniu serwera Web. Najwięcej zagrożeń na stronach internetowych zostaje odkrytych za pomocą automatycznych narzędzi, przykładowo skanerów zagrożeń. Zazwyczaj narzędzia atakujących są dostosowane do badania bezpieczeństwa określonych platform, takich jak Joomla! lub WordPress. Poszukiwane są w szczególności znane i dobrze opisane zagrożenia. Można wskazać grupę kilku najczęściej wykorzystywanych ataków, realizowanych przy użyciu niebezpiecznych aplikacji Web (patrz: ramka „Największe zagrożenia aplikacji webowych”).

Popularnym atakiem jest zdalne wykonanie kodu na serwerze hostującym aplikację Web. Możliwe jest to wtedy, gdy niepoprawnie sprawdzane dane wejściowe i błędna konfiguracja serwera pozwalają atakującemu dołączyć komendy powłoki systemowej wraz z danymi przesyłanymi przez użytkownika. Za sprawą takiego ataku można przejąć całą stronę czy serwer hostingowy, a także użyć serwera jako elementu sieci botnet. Zdalne lub lokalne dołączenie pliku do strony wymaga użycia funkcji dołączania pliku w językach skryptowych (np. PHP) po stronie serwera aplikacji Web. Pozwala to wykonać kod, który jest zawarty w zdalnie przechowywanym pliku. Przebiega to w następujący sposób: host atakującego zawiera szkodliwy plik, a ten, korzystając z nieprawidłowo filtrowanego wejścia, dołącza plik np. do kodu PHP strony ofiary. W efekcie możliwe jest przekierowanie użytkowników korzystających z witryny na fałszywe strony oraz dołączenie szkodliwego kodu do publicznie udostępnionych stron, a także przeprowadzanie ataków DDoS. Z kolei Cross-site request forgery (CSRF) to atak polegający na tym, że użytkownik wykonuje akcję, której nie zamierzał świadomie przeprowadzić. Przykładem tego jest sytuacja, gdy atakujący uzyskuje dostęp do funkcji określonej aplikacji przez uwierzytelnioną przeglądarkę ofiary. Celem są najczęściej platformy społecznościowe, przeglądarkowe klienty poczty e-mail, bankowość on­line i urządzenia Web urządzeń sieciowych.

Jak uruchomić Nikto

Skaner Nikto potrafi wykrywać potencjalne luki w aplikacjach Web, które umożliwiają przeprowadzanie wymienionych wyżej ataków. Użycie narzędzia nie jest skomplikowane, ponieważ mamy tu po prostu do czynienia ze skryptem Perl, który musi zostać uruchomiony w środowisku Linux. W naszym przykładzie jest to dystrybucja Debian. Pierwszą czynnością uruchomieniową jest pobranie archiwum z repozytoriów Nikto. Następnie rozpakowujemy pobrane archiwum i przechodzimy do katalogu ze skryptem:

$ wget https://github.com/sullo/\
nikto/archive/master.zip
$ unzip master.zip
$ cd nikto-master/program

Na serwerze należy też zainstalować interpreter Perl, który domyślnie znajduje się w większości dystrybucji Linux. Wywołujemy skrypt i sprawdzamy dostępne opcje:

$ perl nikto.pl

Jeżeli pojawią się błędy związane z SSL, trzeba doinstalować pakiet: libnet-ssleay-perl. Aby wykonać pierwszy test oprogramowania Nikto, należy wykonać komendę:

$ perl nikto.pl -h \
http://webscantest.com

Wskazanie hosta, który zamierzamy przeskanować, realizowane jest przez opcję -h (-host). W powyższym przykładzie wskazana została strona webscantest.com, stanowiąca źródło podatności WWW przeznaczonych do przeprowadzenia testów bezpieczeństwa. W wynikach skanowania Nikto znajdziemy zidentyfikowane podatności wraz z klasyfikacją bazy danych zagrożeń OSVDB (Open Sourced Vulnerability Database). Jeżeli chcielibyśmy zapisać raport ze skanowania w formacie HTML, należy wydać komendę:

$ perl nikto.pl -Display V -o \
raport.html -Format html -h \
http://webscantest.com

Warto także zapoznać się z innymi ciekawymi opcjami podstawowymi oprogramowania. Aktualizację Nikto można przeprowadzić przy użyciu komendy: perl nikto.pl –update. Jak już zostało wspomniane, system wtyczek pozwala rozszerzyć funkcjonalność narzędzia. Aktualnie dostępne pluginy sprawdzimy, wykonując komendę: perl nikto.pl -list-plugins. Jeżeli natomiast chcemy przeskanować serwer dla więcej niż tylko domyślnego portu 80, należy wydać komendę (skanowanie portu 80 oraz 443):

$ perl nikto.pl -h \
http://webscantest.com -p 80,443

Obserwowanie pracy Nikto w trybie rzeczywistym wymaga uruchomienia oprogramowania z parametrami <perl nikto.pl -h http://webscantest.com -D –v>.

[...]

Autor zawodowo zajmuje się informatyką ze specjalizacją w zakresie bezpieczeństwa sieci. Publikuje w magazynach komputerowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej