Hacking und Sicherheit Pentesting mit DE-ICE

Penetrationstests sind das Testen eines Netzwerks auf Sicherheitslücken, bevor sie von einem Angreifer oder böswilligen Hackern ausgenutzt werden. DE-ICE ist eine virtuelle Maschine, die eine Linux-Slax- Installation enthält und sowohl Anfängern als auch Fortgeschrittenen zum Üben dient.

Slax ist eine Live-CD des GNU / Linux-Betriebssystems, die auf der Slackware-Distribution basiert. Slax ist ein portables Linux-Betriebssystem, nimmt nicht viel Platz ein und bietet schnelle Leistung.

logo.jpg

Slax bietet ein vorinstalliertes Software-Repository und wird von Administratoren häufig zum Erstellen von Testplattformen, spezifischen und nützlichen Distributionen zum Erstellen von Wiederherstellungstools, Penetrationstests, Sicherheits- und Netzwerksimulationen mit virtuellen Maschinen für Systemadministratoren und Entwickler verwendet. Software- oder Sicherheitsexperten belegt das System rund 190 MB. Möglicherweise ist eine grafische Benutzeroberfläche installiert oder nicht, dies würde jedoch viel Platz in Anspruch nehmen und das System verlangsamen.

De-ICE kann in VirtualBox installiert oder auf einer CD aufgezeichnet werden, um als Live-CD verwendet zu werden. Es gibt verschiedene Versionen mit unterschiedlichen Schwierigkeitsgraden, die Version für Anfänger ist die DE-ICE1.100 und die derzeit komplexeste ist die DE-ICE1.140. Für dieses Tutorial verwenden wir die DE-ICE-Version 1.120, die unter https://www.vulnhub….e-ice-s1120,10/ verfügbar ist.

Diese virtuelle Maschine ist speziell darauf vorbereitet, unser Wissen zu testen und alle Techniken oder Penetrationstest-Tools anzuwenden.

Pentesting von De-ICE PenTest Lab 1.120

Installieren Sie für Penetrationstests die Version DE-ICE.1.120 und verwenden Sie Linux Mint und VirtualBox, um DE-ICE zu installieren. Es kann von jedem Betriebssystem aus verwendet werden, mit dem eine virtuelle Maschine erstellt werden kann.

Ich beginne mit dem Befehl ifconfig von einem Terminal aus nach meiner aktuellen IP-Adresse zu suchen. Das Ergebnis ist das Folgende:

 IP: 192.168.0.11 

panta01.jpg

Dann benutze ich eine andere Software meiner Wahl, aber Sie können andere mit dem Geschmack des Benutzers ausprobieren.

A) Ich benutze Zenmap, um alle Hosts zwischen 1-254 zu scannen

In den Tutorials:

  • Zenmap visuelles Tool für den Port-Sicherheitstest
  • Verwendung von Nmap zum Scannen offener Ports in Ihrem VPS- und Metasploit-Framework zum Testen der Serversicherheit

Wir haben einige Tools zum Scannen von Ports und deren Verwendung gesehen.

Öffnen Sie Zenmap, weisen Sie die IP und die Parameter zu, um das gesamte Netzwerk zu scannen und zeigen Sie mir die angeschlossenen Geräte und IP.

panta02.jpg

Die IP-Adresse 192.168.0.1 entspricht dem IP-Gateway des Routers mit offenem Port 80 und der IP-Adresse 192.168.0.10 des Routers, wobei alle Ports geschlossen sind.

Wenn ich die Topologie und die Eigenschaften jedes Hosts betrachte, stelle ich fest, dass die IP 192.168.0.38 die WiFi-IP der virtuellen Maschine ist und die IP 192.168.0.40 die Ethernet-Verbindung ist, die die virtuelle Maschine ist.

Ich greife auf die IP-Adresse der virtuellen Maschine oder des VPS zu und finde eine Website zum Registrieren von Produkten.

See also  Netzwerke - Das OSI-Modell

panta03.jpg

Im Prinzip wäre ein schwerwiegender Fehler, dass diese Website keine Benutzerzugriffskontrolle hat, so wie es mit dem Zugriff auf alle Benutzer des Netzwerks der Fall ist, auch wenn es sich in befindet ein Intranet.

Von Zenmap aus beobachte ich auch die für diesen Host gescannten Ports.

panta04.jpg

Ich finde mehrere offene Ports, um Brute-Force-Angriffe zu versuchen, um Zugriff zu erhalten, indem unter anderem Benutzer und Kennwort mit Tools wie Hydra oder John the Ripper erzwungen werden.

Wir können auch die Topologie sehen, um jeden Host zu analysieren und mit wem er verbunden ist.

panta05.jpg

Auf diese Weise können wir die Merkmale der Geräte sehen, wie das Netzwerk konfiguriert ist und welche Hosts wir angreifen können.

B) Schwachstellenüberprüfung

Ich verwende OSWAP ZAP, um einen Schwachstellenscan durchzuführen. Wir haben dieses Tool im Tutorial gesehen:

  • Sicherheitslücke einer Website mit ZAP prüfen

Es ermöglicht uns, Schwachstellen einer Website zu scannen und Berichte über die gefundenen Schwachstellen anzuzeigen.
Mithilfe von Filtern sowie aktiven und passiven Scanregeln können wir die Sicherheitslücken im Web finden. Es werden auch alle im Web enthaltenen Seiten angezeigt, einschließlich derjenigen, die über eine URL einen bestimmten Parametertyp erhalten.

panta06.jpg

Nach dem Scan kann ich die Struktur des Webs mit den in PHP programmierten Seiten und den Schwachstellen gemäß den angewendeten Filtern sehen.

Im Fall der Produkteinfügeseite sehen wir, dass sie Parameter über die POST-Methode empfängt, und wir können auch die Felder oder Variablen sehen, die sie empfängt.

panta08.jpg

C) XSS Code Injection

Als nächstes gehen wir zur Seite des Hinzufügens eines Produkts (Add Product) und wenden XSS-Injektionstechniken an, bei denen ich HTML- und Javascript-Code injiziere, um festzustellen, ob dieser für diese Art von Angriffen anfällig ist.

Als ersten Test füge ich den HTML-Code eines externen Bildes in die Produktbeschreibung ein, den Sie bei der Suche bei Google beliebig auswählen können.

 <img alt = "http: //www.midominio/virus-detected.jpg" src = "http: //www.midominio/virus-detected.jpg"> 

Wenn es anfällig ist, wird das Bild in der Datenbank gespeichert und in der Liste der Produkte angezeigt, nach denen wir in der Kombination mit dem von uns zugewiesenen Code suchen müssen. Das Ergebnis ist das Folgende:

panta06.jpg

[color = # b22222] Es ist anfällig für XSS [/ color], da wir jeden HTML- oder Javascript-Code einschließlich Links eingeben können.

Fügen Sie einen iframe in das Beschreibungsfeld ein und speichern Sie:

 <iframe src = "http://www.w3schools.com"> </ iframe> 

panta06-1.jpg

Dann suchen wir das Produkt mit dem Code 003 und wir können das Ergebnis sehen

panta06-2.jpg

Mittels dieser Technik können wir ein Formular mit der Simulation eines Logins eingeben und dass die Daten tatsächlich in einer externen Datenbank gespeichert sind. Wir können die Liste der Produkte deaktivieren, die eine Weiterleitung zu einem anderen Web verursachen, wenn wir in einem Bereich der Produktregistrierung den folgenden HTML-Code hinzufügen:

 <BODY onload = window.location = "http://www.google.com"> 

Wenn jemand versucht, die Liste der Produkte anzuzeigen, wird diese automatisch an die in diesem Fall angegebene Website von Google weitergeleitet.

See also  Beheben Sie Fehler für Windows 10

D) SQL-Injection- Zugriff auf die Datenbank

Sqlmap ist ein sehr nützliches Tool zum Testen der Sicherheit von Datenbankservern in den Lernprogrammen:

  • SQLMAP SQL Injection-Tool und Hacking von ethischen Datenbanken
  • BadStore: Web für Pentesting-Tests .

Ich verwende sqlmap, um mithilfe der folgenden Befehle festzustellen, ob eine Datenbank verfügbar ist.

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

panta09.jpg

Wir können sehen, dass der Server Apache 2.2.11 ist, der PHP 5.2.9 verwendet, und dass der Datenbankserver MySQL 5.0.12 ist. Außerdem visualisieren wir alle verfügbaren Datenbanken, einschließlich derer, die die Konfiguration des Basisservers darstellen von MySQL-Daten.

Dann benutze ich den Befehl, um zu überprüfen, ob es Tabellen in der Merch-Datenbank gibt, von denen ich annehme, dass die Tabelle Produkte enthält, die wir im Web eingeben.

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

panta010.jpg

Wir finden die Tabelle, die die Website verwendet. Als nächstes kann ich mir die Produkte der Tabelle mit dem folgenden Befehl ansehen

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

panta011.jpg

Ich versuche herauszufinden, welche Benutzer ein Konto in MySQL haben, um einen Administrator zu finden. Standardmäßig verwende ich das SQLMAP-Datenwörterbuch, das sich im Ordner sqlmap-dev / txt / wordlist.zip befindet

panta011-1.jpg

In diesem Verzeichnis finden wir mehrere Wörterbücher, sqlmap dekomprimiert und verwendet die Datei, um nach Benutzern und Passwörtern zu suchen und zu testen, ob ich die Benutzernamen auf dem MySQL-Server finden und konfigurieren kann. Dazu verwende ich den folgenden Befehl:

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

panta012.jpg

Als nächstes suche ich nach dem Benutzertyp, um zu sehen, welche Zugriffsrechte die einzelnen Benutzer haben, um zu bestimmen, wer Administratoren sind und welche Zugangscodes sie haben.

 python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --aktueller Benutzer --is-dba --is-dba --privileges --dbs - Dump 

panta013.jpg

Als Ergebnis der Ausführung werden die Schlüssel der einzelnen Benutzer für den Zugriff auf die Datenbanken und die ihnen zugewiesenen Berechtigungen angezeigt.

panta014.jpg

Nach Abschluss des Scanvorgangs können Sie am Ende der Liste die Berechtigungen der einzelnen Benutzer anzeigen und feststellen, welche Benutzer Administratoren sind.

Ich stelle fest, dass es mehrere Administratorbenutzer gibt. Daher verwendet der Benutzer jdavenport, der Administrator ist, den Schlüssel babyl0n , um auf das System zuzugreifen

Als nächstes versuche ich, Port 22 SSH mit den erhaltenen Daten zu verletzen:

panta015.jpg

Sie sehen, dass ich als Administrator Zugang habe und die volle Kontrolle über den Server habe. Mit dem Befehl cd / wechseln wir in das Stammverzeichnis und können von dort aus auf jeden Sektor zugreifen, z. B. auf die Ordner und Konten anderer Benutzer

See also  So verwenden Sie zwei Facebook-Konten auf Android oder iPhone

panta016.jpg

Durch den Zugriff über SSH mit der Kombination aus Benutzername und Passwort, die wir erhalten haben. Unser nächstes Ziel wird die Eskalation von Berechtigungen sein, obwohl wir bereits einen Root-Benutzer oder Administrator haben.
Um die Berechtigungen zu manipulieren, müssen wir die Dateien konsultieren, die die Berechtigungen, Benutzer, Gruppen und Kennwörter enthalten, die sich diese Dateien im Verzeichnis / etc befinden

  • Benutzer und Gruppen mit ihren Schlüsseln im Verzeichnis: / etc / passwd
  • Gruppen und Berechtigungen im Verzeichnis: / etc / sweats

Mit dem folgenden Befehl können wir auf die Benutzerdatei und die Systemschlüssel zugreifen:

 nano / etc / password 

panta016-1.jpg

Wir können die Verzeichnisse durchgehen, die Dateien des von uns analysierten Webs sehen und sie dann über FTP oder die SSH-Konsole herunterladen. Wir können sie in unser lokales Verzeichnis kopieren, wenn wir sie bearbeiten oder den Code überprüfen, um sie sicherer zu machen und erneut zu testen .

panta017.jpg

Nachdem wir die Zugangsdaten eines Administrators kennen, können wir uns bei der virtuellen Maschine anmelden.

panta018.jpg

So vermeiden Sie SQL Injection-Angriffe

Die Sicherheit des Webs ist hier sehr wichtig, da wir aufgrund eines SQL-Injection-Problems den gesamten Server übernehmen.

Sie müssen steuern, was als Parameter in der URL gesendet wird, zum Beispiel:

 http://192.168.0.40/products.php?id=1 

Bei der Abfrage von SQL müssen wir sicherstellen, dass keine Zeichen oder Parameter eingegeben werden können, die nicht übereinstimmen, zum Beispiel:

 $ sql = SELECT * FROM Benutzer WHERE Benutzer = 'Jose' und Passwort = '12345' ODER '1' = '1'; 

Der Satz ist dem Login eines Benutzers sehr ähnlich, bei dem wir suchen, ob der Benutzer und das Kennwort in der Benutzertabelle vorhanden sind, ob jemand mit dem Benutzernamen registriert ist, den wir als Parameter senden, und ob das Kennwort 12345 lautet oder 1 dasselbe ist bis 1 ‘.

Dieser Ausdruck bestimmt, dass, wenn der Schlüssel nicht korrekt ist, der Ausdruck 1 gleich 1 wahr ist und wir das System betreten würden, ohne das Passwort zu kennen.

Eine Methode besteht darin, die Variablen zu entziehen, zum Beispiel in PHP:

 mysql_real_escape_string ($ _ POST ['user']); 

Wenn wir Parameter per URL senden müssen, sollten wir sie mit md5, sha1 oder base64 verschlüsseln und mehrere verschlüsselte Daten senden, damit das endgültige Format des Parameters nicht direkt mit Daten oder Feldern in der Datenbank zusammenhängt.

panta019.jpg

Außerdem sollte es ein System geben, das das Scannen von Ports und mehrere Verbindungen von derselben IP vermeidet. In diesem Fall würde eine Firewall mit iptables ausreichen und einen Intrusion Detector.

Ein Tool, das wir verwenden können, ist PortSentry oder Fail2Ban , das von einem Linux-Repository installiert wird. Wir müssen nur konfigurieren, welche Ports geschützt werden sollen. Wenn einer dieser Ports gescannt wird, blockiert es automatisch die IP, die uns angreift.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *