Hackowanie i testowanie bezpieczeństwa z DE-ICE

Testy penetracyjne polegają na testowaniu sieci pod kątem luk w zabezpieczeniach, zanim zostaną wykorzystane przez złośliwego napastnika lub hakerów. DE-ICE to maszyna wirtualna zawierająca instalację Linux Slax i służy do ćwiczeń zarówno dla początkujących, jak i zaawansowanych praktyków.

Slax to Live CD systemu operacyjnego GNU / Linux oparty na dystrybucji Slackware. Slax to przenośny system operacyjny Linux, nie zajmuje dużo miejsca i zapewnia wysoką wydajność.

Slax zapewnia repozytorium preinstalowanego oprogramowania i jest szeroko stosowany przez administratorów do tworzenia platform testowych, określonych dystrybucji i jest przydatny do tworzenia narzędzi do odzyskiwania, testów penetracyjnych, symulacji bezpieczeństwa i sieci z maszynami wirtualnymi dla administratorów systemów i twórców oprogramowania lub ekspertów ds. bezpieczeństwa, system zajmuje około 190 MB. Interfejs graficzny może, ale nie musi być zainstalowany, ale zajęłoby to dużo miejsca i spowolniłoby system.

De-ICE można zainstalować w VirtualBox lub nagrać na płytę CD, aby użyć jako LiveCD. Istnieje kilka wersji, które prezentują różne poziomy trudności, wersja dla początkujących to DE-ICE1.100, a najbardziej skomplikowaną obecnie jest DE-ICE1.140. W tym samouczku użyjemy wersji DE-ICE 1.120, która jest dostępna pod adresem https://www.vulnhub… .e-ice-s1120,10/.

Ta maszyna wirtualna jest specjalnie przygotowana do sprawdzenia naszej wiedzy i zastosowania dowolnych technik lub narzędzi testowania penetracyjnego.

Pentest De-ICE PenTest Lab 1.120
Aby przeprowadzić testy penetracyjne, zainstaluj wersję DE-ICE.1.120, a do zainstalowania DE-ICE używam Linux Mint i VirtualBox. Może być używany z dowolnego systemu operacyjnego, który pozwala na stworzenie maszyny wirtualnej.

Zaczynam szukać mojego obecnego adresu IP z terminala za pomocą polecenia ifconfig, a wynik jest następujący:

 IP: 192.168.0.11

Następnie używam innego wybranego przeze mnie oprogramowania, ale mogą wypróbować inne, dostosowane do potrzeb użytkownika.

A) używam Zenmap do skanowania wszystkich hostów między 1-254


W samouczkach:
  • Wizualne narzędzie Zenmap do testowania bezpieczeństwa portów
  • Jak używać Nmapa do skanowania otwartych portów na platformie VPS i Metasploit w celu przetestowania bezpieczeństwa serwera?

Zobaczyliśmy kilka narzędzi do skanowania portów i jak z nich korzystać.

Otwieramy Zenmapa, przypisuję IP i parametry, aby skanował całą sieć i pokazał mi podłączony sprzęt i adresy IP.

IP 192.168.0.1 odpowiada adresowi IP bramy routera z otwartym portem 80 oraz adresowi IP routera 192.168.0.10 z zamkniętymi wszystkimi portami.

Patrząc na topologię i charakterystykę każdego hosta, ustalam, że ip 192.168.0.38 to adres IP Wi-Fi maszyny wirtualnej, a adres IP 192.168.0.40 to połączenie Ethernet to maszyna wirtualna.

Wchodzę na adres IP maszyny wirtualnej lub VPS i znajduję stronę internetową, na której mogę zarejestrować produkty.

W zasadzie [color = # b22222] poważną awarią [/ color] byłoby to, że ta strona internetowa nie ma żadnej kontroli dostępu użytkowników, w ten sposób miałaby dostęp do wszystkich użytkowników sieci, bez względu na to, ile to jest w intranecie.

Z Zenmap obserwuję również zeskanowane porty dla tego hosta.

Uważam, że kilka portów jest otwartych, aby wypróbować ataki brute force, aby uzyskać dostęp, wymuszając użytkownika i hasło za pomocą narzędzi takich jak Hydra lub John the Ripper.

Możemy również zobaczyć topologię do analizy każdego hosta i z kim jest połączony.

W ten sposób możemy zobaczyć charakterystykę sprzętu, jak skonfigurowana jest sieć i które hosty możemy zaatakować.

B) Skanowanie luk


Używam OSWAP ZAP do skanowania podatności. Widzieliśmy to narzędzie w samouczku:
  • Skanuj lukę w witrynie za pomocą ZAP

Pozwala nam skanować luki w witrynie, prezentując raporty o znalezionych lukach.
Wykorzystując filtr oraz aktywne i pasywne reguły skanowania możemy znaleźć luki w sieci. Pokazuje nam również wszystkie strony, które zawiera sieć, a nawet wskazuje, które z nich otrzymują jakiś rodzaj parametru przez adres URL.

Po skanowaniu widzę strukturę sieci ze stronami zaprogramowanymi w PHP oraz podatności zgodnie z zastosowanymi filtrami.

W przypadku strony wstawiania produktu widzimy, że otrzymuje ona parametry metodą POST, a także widzimy pola lub zmienne, które otrzymuje.

C) Wstrzyknięcie kodu XSS


Następnie przejdziemy na stronę, aby dodać produkt (Dodaj produkt) i złożyć wniosek Techniki wtrysku XSS gdzie wstrzykuję kod html i Javascript, aby sprawdzić, czy jest podatny na tego typu ataki.

Jako pierwszy test dodaję kod html zewnętrznego obrazu w opisie produktu, możesz wybrać dowolny wyszukując w Google.

 
Jeśli obrazek jest wrażliwy, zostanie zapisany w bazie danych i wyświetli się na liście produktów, które będziemy musieli wyszukać w combo pod kątem przydzielonego przez nas kodu, wynik jest następujący:

[color = # b22222] Jest podatny na XSS [/ color], ponieważ możemy wprowadzić dowolny kod html lub javascript, w tym linki.

Wstawiamy iframe w polu opisu i zapisujemy:


Następnie szukamy produktu po kodzie 003 i widzimy wynik

Za pomocą tej techniki możemy wprowadzić formularz z symulacją logowania i tym, że dane faktycznie są zapisywane w zewnętrznej bazie danych. Możemy wyłączyć listę produktów powodujących przekierowanie na inną stronę, jeśli w dowolnym polu rejestracji produktu dodamy następujący kod html:

 
Gdy ktoś spróbuje zobaczyć listę produktów, zostanie automatycznie przekierowany na stronę wskazaną w tym przypadku przez Google.

D) Wstrzyknięcie SQL Dostęp do bazy danych


Sqlmap to bardzo przydatne narzędzie do testowania bezpieczeństwa serwerów bazodanowych w samouczkach:
  • Narzędzie SQLMAP SQL Injection i Etyczne hakowanie baz danych
  • BadStore: Sieć do testów penetracyjnych.

Używam sqlmap, aby określić, czy jakieś bazy danych są dostępne, za pomocą następujących poleceń.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs

Widzimy, że serwer to Apache 2.2.11, który używa php 5.2.9, a serwer bazy danych to MySQL 5.0.12, przeglądamy również wszystkie dostępne bazy danych, w tym te, które są konfiguracją serwera bazowego danych MySQL.

Następnie używam polecenia, aby sprawdzić, czy w bazie danych towarów znajdują się tabele, która, jak przypuszczam, zawiera tabelę produktów, którą wpisujemy w Internecie.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch

Znaleźliśmy tabelę, z której korzysta witryna. Poniżej mogę spojrzeć na tabelę produktów za pomocą następującego polecenia

 python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T produkty

Szukam informacji o użytkownikach, którzy mają konto Mysql, próbując znaleźć administratora, domyślnie korzystam ze słownika danych sqlmap znajdującego się w folderze sqlmap-dev / txt / wordlist.zip

W tym katalogu znajdziemy kilka słowników, sqlmap będzie odpowiedzialny za rozpakowywanie i używanie pliku, do wyszukiwania użytkowników i haseł, aby przetestować, czy mogę odkryć i uzyskać nazwy użytkowników skonfigurowane na serwerze MySQL, do tego używam następujące polecenie:

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords

Następnie szukam typu użytkownika, aby zobaczyć, jakie są uprawnienia dostępu każdego użytkownika, aby określić, kto jest administratorem i jakie są jego kody dostępu.

 python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - zrzut

W wyniku wykonania ujawniane są hasła każdego użytkownika umożliwiające dostęp do baz danych oraz posiadane przez niego uprawnienia.

Po zakończeniu skanowania na końcu listy możemy zobaczyć uprawnienia każdego użytkownika i określić, którzy użytkownicy są administratorami.

Uważam, że jest kilku administratorów, dlatego wezmę użytkownika jdavenport kto jest administratorem i jego hasło to dziecko, aby spróbować uzyskać dostęp do systemu

Następnie próbuję naruszyć port SSH 22 uzyskanymi danymi:

Widać, że uzyskałem dostęp jako administrator i mam pełną kontrolę nad serwerem. Za pomocą polecenia cd / przechodzimy do katalogu głównego i stamtąd możemy uzyskać dostęp do dowolnego sektora, na przykład zobaczyć foldery i konta innych użytkowników

Mając dostęp przez SSH za pomocą kombinacji nazwy użytkownika i hasła, które uzyskaliśmy. Naszym następnym celem będzie eskalacja uprawnień, chociaż mamy już użytkownika root lub administratora.
Aby manipulować uprawnieniami, musimy zapoznać się z plikami zawierającymi uprawnienia, użytkowników, grupy i kody dostępu te pliki znajdują się w katalogu / etc

  • Użytkownik i grupy z ich kluczami w katalogu: /etc/passwd
  • Grupy i uprawnienia w katalogu: / etc / sudores

Dostęp do pliku użytkowników i kluczy systemowych możemy uzyskać za pomocą następującego polecenia:

 nano / etc / hasło

Możemy przeszukiwać katalogi między nimi, możemy podejrzeć analizowane przez nas pliki w sieci i pobrać je później przez ftp lub z konsoli ssh, możemy je skopiować do naszego katalogu lokalnego, jeśli chcemy je edytować lub przejrzeć kod, aby uczynić go bezpieczniejszym i ponownie przetestuj.

Teraz, gdy znamy dane dostępowe administratora, możemy zalogować się na maszynę wirtualną.

Jak uniknąć ataków typu SQL injection?
Bezpieczeństwo sieci jest tutaj bardzo ważne, ponieważ problem wstrzykiwania SQL zajmuje cały serwer.

Musisz kontrolować, co jest wysyłane jako parametr w adresach URL, takich jak:

 http://192.168.0.40/products.php?id=1
Wykonując zapytanie sql musimy upewnić się, że można wprowadzić znaki lub parametry, które nie odpowiadają, na przykład:
 $ sql = SELECT * FROM users WHERE użytkownik = 'jose' i hasło = '12345' OR '1' = '1';
Zdanie jest bardzo podobne do loginu użytkownika, w którym szukamy, czy użytkownik i hasło istnieją, w tabeli użytkowników, czy jest ktoś zarejestrowany z nazwą użytkownika, którą wysyłamy jako parametr i czy jego hasło to 12345 lub czy 1 jest to samo do 1 '.

Wyrażenie to określa, że ​​jeśli klucz nie jest poprawny, wyrażenie 1 równe 1 jest prawdziwe i będziemy mogli wejść do systemu bez znajomości hasła.

Jedną z metod jest ucieczka do zmiennych, na przykład w PHP:

 mysql_real_escape_string ($ _ POST ['użytkownik']);
Jeśli potrzebujemy przesłać parametry przez url, powinniśmy je zaszyfrować za pomocą md5, sha1 lub base64 i możemy wysyłać różne zaszyfrowane dane, aby ostateczny format parametru nie był bezpośrednio powiązany z danymi lub polami w bazie danych.

Ponadto powinien istnieć system, który unika skanowania portów i wielu połączeń z tego samego adresu IP, w tym przypadku wystarczyłby firewall z iptables i detektor włamań.

Jednym z narzędzi, którego możemy użyć, jest PortSentry lub Fail2Ban Jest instalowany z repozytorium linuxowego i musimy tylko skonfigurować, które porty powinny być chronione, jeśli jeden z tych portów zostanie przeskanowany, automatycznie zablokuje atakujący nas adres IP.

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