Pentestowanie luk w zabezpieczeniach sieci Web za pomocą aplikacji Damn Vulnerable Web App

Spisie treści

Celem jest, aby zarówno początkujący, jak i profesjonalni użytkownicy zainteresowani analizowaniem i rozwiązywaniem problemów związanych z bezpieczeństwem mogli przetestować swoją wiedzę, umiejętności i narzędzia w symulowanym środowisku, tego typu narzędzia są bardzo przydatne dla twórców stron internetowych Mogą zrozumieć problemy, jakie może mieć aplikacja lub strona internetowa i poprawić programowanie lub szukać luk w zabezpieczeniach.

Chociaż większość programistów podjęła środki ostrożności przeciwko potencjalnym lukom, wiele luk, takich jak Skrypty między witrynami (XSS) lub Wstrzyknięcia SQL, które wpływają na bezpieczeństwo wielu stron internetowych, a tym samym użytkowników.

W tym samouczku zamierzamy zainstaluj i skonfiguruj stronę internetową, która będzie służyć jako laboratorium testowe do audytów bezpieczeństwa sieci, gdzie znajdziemy różne podatności, jeszcze bardziej powszechne, proponując różne poziomy trudności podatności, które następnie możemy analizować.

Wykorzystamy Damn Vulnerabilty Web Application (DVWA), jest to strona internetowa do zainstalowania na dowolnym serwerze, który posiadamy, w tym na lokalnym, aby móc przeprowadzać testy penetracyjne. Możemy go pobrać z jego oficjalnej strony internetowej.

Po pobraniu potrzebujemy serwera WWW lub serwera lokalnego, jak wskazano w samouczkach:

  • Jak zainstalować Xampp, aby zmienić komputer w serwer WWW?
  • Przenośny serwer WWW Easyphp

Teraz po pobraniu pliku zip Damn Vulnerabilty Web Application (DVWA), rozpakowujemy go i kopiujemy do folderu naszego serwera WWW, w takim przypadku używamy Xampp pod Linuksem.

Następnie musimy skonfigurować bazę danych, do tego przejdziemy z phpmyadmin.

Jeśli chcemy to zrobić z okna terminala, użyjemy następującego polecenia, do którego możemy uzyskać dostęp przez ssh:

 użytkownik ssh @ miip
Najpierw zalogujemy się do serwera MySQL z wiersza poleceń za pomocą następującego polecenia:
 mysql -u root -p
W takim przypadku użytkownik root jest określany za pomocą opcji -u, a następnie flaga -p jest używana do wskazania, że ​​MySQL powinien zażądać hasła. Wpisujemy klucz dostępu, aby móc zalogować się do MYSQL.

Następnie możemy stworzyć bazę danych z wiersza poleceń:

 utworzyć dvwa bazy danych;
Następnie przechodzimy do katalogu config i edytujemy plik config.inc.php, tutaj modyfikujemy dane, aby wskazać nazwę bazy danych, użytkownika i hasło dostępu:
 
Zapisujemy konfigurację i musimy przejść do przeglądarki, w której mamy sieć i kliknąć Utwórz / zresetuj bazę danych aby kontynuować instalację.

Następnie stworzymy dane konfigurowanej przez nas bazy danych i zobaczymy kilka narzędzi, które niesie ze sobą sieć.

Następnie po instalacji, gdy wrócimy do sieci http://localhost/dvwa, dostaniemy ekran logowania:

W celu uzyskania dostępu do strony internetowej wykorzystamy następujące dane:

Użytkownik: Admin
Klucz: hasło

W lewej kolumnie strony mamy menu, na końcu widzimy opcję BEZPIECZEŃSTWO DVWAStąd możemy skonfigurować poziom trudności dla podatności, poziomy bezpieczeństwa są niskie, średnie, wysokie lub niemożliwe.

Poziom bezpieczeństwa zmienia poziom podatności DVWA:

Niski poziom bezpieczeństwaTen poziom bezpieczeństwa jest całkowicie podatny na ataki i nie ma żadnych zabezpieczeń, więc pozwoli nam łatwiej testować techniki hakerskie. Jego użycie ma być przykładem tego, jak luki w aplikacjach internetowych manifestują się poprzez złe praktyki kodowania i służyć jako platforma do nauczania lub uczenia się podstawowych technik eksploatacji, łamania i hakowania.

Średni poziom bezpieczeństwaTen poziom służy do pokazania luk w zabezpieczeniach, w przypadku których programista nie upewnił się, że kod i programowanie nie zawierają luk.

Wysoki poziom bezpieczeństwaTen poziom ma na celu, aby najbardziej zaawansowani użytkownicy zmierzyli się ze średnimi trudnościami, z mieszanką złych praktyk programistycznych w kodzie internetowym. Tutaj możemy wypróbować zaawansowane techniki.

Poziom bezpieczeństwa NiemożliwyTen poziom jest najbezpieczniejszy przed wszystkimi lukami w zabezpieczeniach. Służy do porównywania wrażliwego kodu źródłowego z bezpiecznym kodem źródłowym. Ten poziom ma na celu zademonstrowanie, w jaki sposób strona internetowa musi być poprawnie opracowana i jak musi reagować przed możliwymi atakami.

Ustawiliśmy najniższy poziom, aby móc testować różne techniki hakerskie i wykrywanie podatności.

Testuj brutalną siłę złamać login za pomocą własnego skryptu
Wchodzimy na link Brute Force i widzimy, że jest formularz logowania, wpisujemy dowolne dane w nazwie użytkownika i haśle, aby się nie udało i zobaczyć, czy wystąpi błąd.

Gdy logowanie się nie powiedzie, widzimy adres URL z wprowadzonymi danymi, pobierając adres URL, który pokazuje nam:
http://localhost/dvw… zobacz & Login = Login #,

Dlatego możemy stworzyć skrypt, który testuje różne kombinacje użytkownika i hasła lub użyć programu takiego jak xHydra, który jest interfejsem graficznym dla Hydry lub bezpośrednio z wiersza poleceń, jeśli jest to jedyny dostęp do serwera przez SSH.

Aby zainstalować Hydrę, użyjemy następujących poleceń:

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get aktualizacjeudo apt-get zainstaluj hydra hydra-gtk
Po zainstalowaniu będziemy musieli przeszukać lub utworzyć listy użytkowników i możliwe klucze w formacie txt lub poszukać słownika do użycia, tak jak to zrobiliśmy w samouczku.

Również plik tekstowy z nazwiskami potencjalnych użytkowników, możemy również skorzystać z jakiejś już działającej bazy danych, takiej jak te słowniki skullsecurity.org, które są używane w wielu narzędziach, programach antywirusowych itp., które umożliwiają łamanie haseł lub hakowanie. Korzystanie ze wszystkich źródeł danych jest bezpłatne.

Następnie użyjemy hydry z listami, które mamy za pomocą następujących poleceń:

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login : Logowanie nie powiodło się "-w 10 -V 

Widzimy, że niektóre wyniki były pozytywne, pokazując na zielono użytkowników i hasło, które uzyskały zaakceptowany login. Jeśli spróbujemy z użytkownikiem administratora i hasłem, wejdziemy, aby zobaczyć panel użytkownika

Luka w zabezpieczeniach SQL Injection
Na najniższym poziomie bezpieczeństwa sieć jest podatna na wstrzyknięcie SQL, zanim zaczniemy wstrzykiwać kod do pola tekstowego, możemy zaobserwować kod, który odwołuje się do tabeli w PHP, która jest podatna.

 
Błąd polega na tym, że dane nie powinny być wysyłane przez GET, ale za pomocą POST, a po drugie, należy sprawdzić, czy przychodzące dane nie zawierają złośliwego kodu.

Instrukcja SQL bezpośrednio wykonuje to, co przychodzi bez żadnych kontroli lub weryfikacji. To sprawia, że ​​kod jest podatny na wstrzyknięcia SQL, na przykład możemy uzyskać pełną listę użytkowników, jeśli na stronie wstrzyknięcia SQL zamiast identyfikatora dodamy następujący kod:

 1 'LUB 1 = 1 UNION SELECT null, wersja () #
Wynikiem będzie lista użytkowników.

Możemy również uzyskać całą listę tabel, jeśli zastosujemy następujący kod w polu tekstowym.

 1 'LUB 1 = 1 UNION SELECT null, nazwa_tabeli FROM SCHEMAT_INFORMACYJNY.tabele

Możemy zastosować inne kombinacje, aby uzyskać listę użytkowników i zobaczyć dane każdej tabeli.

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt
wave wave wave wave wave