Penetrationstests sind das Testen eines Netzwerks auf Sicherheitslücken, bevor es von einem böswilligen Angreifer oder Hacker ausgenutzt wird. DE-ICE ist eine virtuelle Maschine, die eine Installation enthält Linux-Slax und dient zum Üben sowohl für Anfänger als auch für Fortgeschrittene.
Slax ist eine Live-CD des GNU/Linux-Betriebssystems basierend auf der Slackware-Distribution. Slax ist ein portables Linux-Betriebssystem, es braucht nicht viel Platz und bietet eine schnelle Leistung.
Slax bietet ein Repository vorinstallierter Software und wird häufig von Administratoren verwendet, um Testplattformen, spezifische Distributionen zu erstellen und nützlich zum Erstellen von Wiederherstellungstools, Penetrationstests, Sicherheits- und Netzwerksimulationen mit virtuellen Maschinen für Systemadministratoren und Softwareentwickler oder Sicherheitsexperten. das System belegt etwa 190 MB. Eine grafische Oberfläche kann installiert sein oder nicht, aber dies würde viel Platz beanspruchen und das System verlangsamen.
De-ICE kann in VirtualBox installiert oder auf CD gebrannt werden, um sie als LiveCD zu verwenden. Es gibt mehrere Versionen mit unterschiedlichen Schwierigkeitsgraden, die Version für Anfänger ist DE-ICE1.100 und die derzeit komplexeste ist DE-ICE1.140. Für dieses Tutorial verwenden wir die Version DE-ICE 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 Penetrationstest-Techniken oder -Tools anzuwenden.
Pentesting von De-ICE PenTest Lab 1.120
Für Penetrationstests installieren Sie die Version DE-ICE.1.120 und ich verwende Linux Mint und VirtualBox, um DE-ICE zu installieren. Es kann von jedem Betriebssystem verwendet werden, mit dem Sie eine virtuelle Maschine erstellen können.
Ich beginne mit der Suche nach meiner aktuellen IP von einem Terminal aus mit dem Befehl ifconfig und das Ergebnis ist das folgende:
IP: 192.168.0.11
Als nächstes verwende ich verschiedene Software meiner Wahl, aber sie können andere ausprobieren, die dem Benutzer entsprechen.
A) Ich benutze Zenmap zum Scannen aller Hosts zwischen 1-254
In den Tutorials:
- Visuelles Zenmap-Tool für Portsicherheitstests
- So scannen Sie mit Nmap offene Ports in Ihrem VPS- und Metasploit-Framework, um die Serversicherheit zu testen
Wir haben einige Tools zum Port-Scanning und deren Verwendung gesehen.
Wir öffnen Zenmap, ich weise die IP und die Parameter zu, damit es das gesamte Netzwerk scannt und mir die angeschlossenen Geräte und die IPs anzeigt.
Die IP 192.168.0.1 entspricht der Gateway IP des Routers mit offenem Port 80 und der IP des Routers 192.168.0.10 mit allen Ports geschlossen.
Wenn ich mir die Topologie und die Eigenschaften jedes Hosts ansehe, 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 der virtuellen Maschine ist.
Ich greife auf die IP der virtuellen Maschine oder des VPS zu und finde eine Website, um Produkte zu registrieren.
Im Prinzip [color = # b22222] wäre ein schwerwiegender Fehler [/color], dass diese Website keine Art von Benutzerzugriffskontrolle hat, auf diese Weise hätte sie Zugriff auf alle Benutzer des Netzwerks, egal wie viel es ist in einem Intranet.
Von Zenmap aus beobachte ich auch die gescannten Ports für diesen Host.
Ich finde mehrere Ports offen, um Brute-Force-Angriffe auszuprobieren, indem unter anderem Benutzer und Passwort 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.
Auf diese Weise können wir die Eigenschaften der Ausrüstung sehen, wie das Netzwerk konfiguriert ist und welche Hosts wir angreifen können.
B) Schwachstellen-Scans
Ich verwende OSWAP ZAP, um einen Schwachstellen-Scan durchzuführen. Wir haben dieses Tool im Tutorial gesehen:
- Scannen Sie eine Website-Sicherheitslücke mit ZAP
Es ermöglicht uns, Schwachstellen einer Website zu scannen, indem wir Berichte über die gefundenen Schwachstellen präsentieren.
Mithilfe von Filter- und aktiven und passiven Scan-Regeln können wir die Schwachstellen des Webs finden. Es zeigt uns auch alle Seiten an, die das Web enthält, es zeigt sogar an, welche Seiten eine Art von Parameter per URL erhalten.
Nach dem Scan sehe ich die Struktur des Webs mit den in PHP programmierten Seiten und die Schwachstellen gemäß den angewendeten Filtern.
Im Fall der Produktinsertionsseite 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.
C) XSS-Code-Injektion
Dann gehen wir auf die Seite, um ein Produkt hinzuzufügen (Produkt hinzufügen) und uns zu bewerben XSS-Injektionstechniken wo ich HTML- und Javascript-Code einfüge, um zu sehen, ob er für diese Art von Angriff anfällig ist.
Als ersten Test füge ich den HTML-Code eines externen Bildes in die Produktbeschreibung ein, Sie können jedes durch die Suche in Google auswählen.
Wenn das Bild anfällig ist, wird es in der Datenbank gespeichert und in der Liste der Produkte angezeigt, die wir in der Kombination nach dem von uns zugewiesenen Code suchen müssen. Das Ergebnis ist Folgendes:
[color = # b22222] Es ist anfällig für XSS [/color], da wir jeden HTML- oder Javascript-Code einschließlich Links eingeben könnten.
Wir fügen einen iframe in das Beschreibungsfeld ein und speichern:
Dann suchen wir das Produkt nach Code 003 und wir können das Ergebnis sehen
Mit dieser Technik können wir ein Formular eingeben, bei dem ein Login simuliert wird und die Daten tatsächlich in einer externen Datenbank gespeichert werden. Wir können die Liste der Produkte deaktivieren, die eine Weiterleitung zu einer anderen Website verursachen, wenn wir in einem Produktregistrierungsfeld den folgenden HTML-Code hinzufügen:
Wenn jemand versucht, die Produktliste zu sehen, wird er automatisch auf die in diesem Fall von Google angegebene Website weitergeleitet.
D) SQL-Injektion Datenbankzugriff
Sqlmap ist ein sehr nützliches Tool, um die Sicherheit von Datenbankservern in den Tutorials zu testen:
- SQLMAP SQL Injection-Tool und ethisches Datenbank-Hacking
- BadStore: Web für Pentesting-Tests.
Ich verwende sqlmap, um mit den folgenden Befehlen festzustellen, ob Datenbanken verfügbar sind.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
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, wir sehen auch alle verfügbaren Datenbanken, einschließlich derjenigen, die die MySQL-Basisserverdaten konfigurieren.
Als Nächstes verwende ich den Befehl, um zu überprüfen, ob Tabellen in der Merchandising-Datenbank vorhanden sind, von der ich annehme, dass sie die Produkttabelle enthält, die wir im Web eingeben.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch
Wir haben die Tabelle gefunden, die die Website verwendet. Unten kann ich mir die Produkttabelle mit dem folgenden Befehl ansehen
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T products
Ich suche nach Benutzern mit einem Mysql-Konto, die versuchen, einen Administrator zu finden. Standardmäßig verwende ich das sqlmap-Datenwörterbuch, das sich im Ordner sqlmap-dev / txt / wordlist.zip befindet
In diesem Verzeichnis finden wir mehrere Wörterbücher, sqlmap wird dafür verantwortlich sein, die Datei zu entpacken und zu verwenden, um nach Benutzern und Passwörtern zu suchen, um zu testen, ob ich die auf dem MySQL-Server konfigurierten Benutzernamen finden und abrufen kann folgender Befehl:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
Als nächstes suche ich nach dem Benutzertyp, um zu sehen, welche Zugriffsberechtigungen die einzelnen Benutzer haben, um festzustellen, wer Administratoren sind und wie ihre Zugriffscodes sind.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - dump
Als Ergebnis der Ausführung werden die Passwörter jedes Benutzers für den Zugriff auf die Datenbanken und ihre Berechtigungen offengelegt.
Wenn der Scan abgeschlossen ist, können wir am Ende der Liste die Berechtigungen jedes Benutzers sehen und feststellen, welche Benutzer Administratoren sind.
Ich stelle fest, dass es mehrere Administratorbenutzer gibt, daher nehme ich den Benutzer jdavenport wer ist ein Administrator und sein Passwort ist babyl0n, um zu versuchen, auf das System zuzugreifen
Als nächstes versuche ich mit den erhaltenen Daten den SSH-Port 22 zu verletzen:
Es ist zu sehen, dass ich den Zugriff als Administrator habe und die volle Kontrolle über den Server habe. Mit dem Befehl cd / gehen wir in das Stammverzeichnis und können von dort aus auf jeden Sektor zugreifen, z. B. auf die Ordner und Konten der anderen Benutzer
Durch den Zugriff über SSH mit der von uns erhaltenen Kombination aus Benutzername und Passwort. Unser nächstes Ziel wird die Rechteausweitung sein, obwohl wir bereits einen Root- oder Administrator-Benutzer haben.
Um die Berechtigungen zu manipulieren, müssen wir die Dateien konsultieren, die die Berechtigungen, Benutzer, Gruppen und Zugangscodes enthalten. Diese Dateien befinden sich im Verzeichnis / etc.
- Benutzer und Gruppen mit ihren Schlüsseln im Verzeichnis: /etc/passwd
- Gruppen und Berechtigungen im Verzeichnis: /etc/sudores
Wir können über den folgenden Befehl auf die Datei der Benutzer und Systemschlüssel zugreifen:
nano / etc / passwort
Wir können die Verzeichnisse zwischen ihnen durchgehen, wir können die Dateien im Web sehen, die wir analysiert haben, und sie später über FTP oder von der SSH-Konsole herunterladen, wir können sie in unser lokales Verzeichnis kopieren, wenn wir sie bearbeiten oder überprüfen möchten Code, um es sicherer zu machen und erneut zu testen.
Nachdem wir nun die Zugangsdaten eines Administrators kennen, können wir uns in die virtuelle Maschine einloggen.
So vermeiden Sie SQL-Injection-Angriffe
Die Sicherheit des Webs ist hier sehr wichtig, da wir wegen eines SQL-Injection-Problems den gesamten Server einnehmen.
Sie müssen steuern, was als Parameter in den URLs gesendet wird, wie zum Beispiel:
http://192.168.0.40/products.php?id=1Bei der SQL-Abfrage müssen wir sicherstellen, dass nicht übereinstimmende Zeichen oder Parameter eingegeben werden können, zum Beispiel:
$ sql = SELECT * FROM Benutzer WHERE Benutzer = 'jose' und Passwort = '12345' ODER '1' = '1';Der Satz ist einem Benutzer-Login sehr ähnlich, bei dem wir in der Benutzertabelle suchen, ob der Benutzer und das Passwort vorhanden sind, ob jemand mit einem Benutzernamen registriert ist, den wir als Parameter senden und ob sein Passwort '12345 ist oder wenn 1 das ist gleich zu 1 '.
Dieser Ausdruck bestimmt, dass, wenn der Schlüssel nicht korrekt ist, der Ausdruck 1 gleich 1 wahr ist und wir in das System eintreten können, ohne das Passwort zu kennen.
Eine Methode besteht darin, die Variablen zum Beispiel in PHP zu maskieren:
mysql_real_escape_string ($_POST [‘Benutzer’]);Wenn wir Parameter per URL senden müssen, sollten wir sie mit md5, sha1 oder base64 verschlüsseln und wir können verschiedene verschlüsselte Daten senden, damit das endgültige Format des Parameters nicht direkt mit Daten oder Feldern in der Datenbank zusammenhängt.
Außerdem sollte es ein System geben, das Port-Scanning und Mehrfachverbindungen von derselben IP vermeidet, eine Firewall in diesem Fall mit iptables würde ausreichen und ein Intrusion-Detector.
Ein Werkzeug, das wir verwenden können, ist PortSentry oder Fail2Ban Es wird von einem Linux-Repository installiert und 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.
Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben