Das Ziel ist, dass sowohl Anfänger als auch Profis, die an der Analyse und Lösung von Sicherheitsproblemen interessiert sind, ihre Kenntnisse, Fähigkeiten und Tools in einer simulierten Umgebung testen können. Diese Tools sind für Webentwickler sehr nützlich, um die möglichen Probleme zu verstehen eine Anwendung oder Website haben und die Programmierung verbessern oder nach Schwachstellen suchen.
Obwohl die meisten Entwickler Vorkehrungen gegen mögliche Sicherheitslücken getroffen haben, bleiben viele Sicherheitslücken bestehen, z. B. Cross Site Scripting (XSS) oder SQL-Injections , die die Sicherheit vieler Websites und damit der Benutzer beeinträchtigen.
In diesem Lernprogramm wird eine Website installiert und konfiguriert, die als Testlabor für Web-Sicherheitsüberprüfungen verwendet wird. Dabei werden verschiedene Sicherheitsanfälligkeiten, einschließlich häufigerer Sicherheitsanfälligkeiten , ermittelt und verschiedene Schwierigkeitsgrade für die Sicherheitsanfälligkeit vorgeschlagen, die anschließend analysiert werden können.
Wir verwenden die Damn Vulnerabilty Web Application (DVWA) , eine Website, die auf allen uns zur Verfügung stehenden Servern installiert werden kann, auch auf einem lokalen Server, auf dem Pentest-Tests durchgeführt werden können. Wir können es von seiner offiziellen Website herunterladen .
Nach dem Herunterladen benötigen wir einen Webserver oder einen lokalen Server, wie in den Tutorials angegeben:
- So installieren Sie Xampp, um Ihren Computer in einen Webserver zu verwandeln
- Easyphp portabler Webserver
Nachdem wir die Zip-Datei von Damn Vulnerabilty Web Application (DVWA) heruntergeladen haben, entpacken wir sie und kopieren sie in den Ordner unseres Webservers. In diesem Fall verwenden wir Xampp unter Linux.
Als nächstes müssen wir die Datenbank so konfigurieren, dass wir von phpmyadmin ausgehen.
Wenn wir es von einem Terminalfenster aus tun wollen, verwenden wir den folgenden Befehl, auf den wir über ssh zugreifen können:
ssh user @ miip
Zunächst melden wir uns über die Befehlszeile mit dem folgenden Befehl beim MySQL-Server an:
mysql -u root -p
In diesem Fall wird der Root-Benutzer mit dem Flag -u angegeben, und anschließend wird das Flag -p verwendet, das angibt, dass MySQL einen Zugriffsschlüssel anfordern muss. Wir geben den Zugangscode ein, um uns bei MYSQL anmelden zu können.
Dann können wir die Datenbank über die Befehlszeile erstellen:
Datenbank erstellen dvwa;
Als nächstes gehen wir in das Konfigurationsverzeichnis und bearbeiten die Datei config.inc.php . Hier ändern wir die Daten, um den Namen der Datenbank, den Benutzer und das Passwort anzugeben:
<? php $ _DVWA = array (); $ _DVWA ['db_user'] = 'root'; $ _DVWA ['db_password'] = ''; $ _DVWA ['db_database'] = 'dvwa'; $ _DVWA ['db_server '] =' localhost ';?>
Speichern Sie die Konfiguration und gehen Sie zu dem Browser, in dem sich das Web befindet, und klicken Sie auf Create / Reset Database (Datenbank erstellen / zurücksetzen) , um mit der Installation fortzufahren.
Als Nächstes erstellen wir die Daten der Datenbank, die wir konfigurieren, und sehen einige Tools, die das Web mitbringt.
Wenn wir nach der Installation das Web http: // localhost / dvwa erneut aufrufen , erhalten wir einen Anmeldebildschirm:
Für den Zugriff auf das Web verwenden wir folgende Daten:
Benutzer: admin
Passwort: Passwort
In der linken Spalte des Web haben wir ein Menü am Ende sehen wir die Option DVWA SECURITY , von hier aus können wir den Schwierigkeitsgrad für die Sicherheitslücken konfigurieren, die Sicherheitsstufen sind niedrig, mittel, hoch oder unmöglich.
Die Sicherheitsstufe ändert die Schwachstellenstufe von DVWA:
Wir konfigurieren die unterste Ebene, um verschiedene Hacking-Techniken und die Erkennung von Sicherheitslücken zu testen.
Wir greifen auf den Link Brute Force zu und stellen fest, dass es ein Anmeldeformular gibt. Wir geben Benutzerdaten und ein Kennwort ein, damit es fehlschlägt, und prüfen, ob ein Fehler auftritt.
Wenn die Anmeldung fehlschlägt, wird eine URL mit den eingegebenen Daten angezeigt, die die folgende URL enthält:
http: //localhost/dvw…ve&Login=Login# ,
Daher können wir ein Skript erstellen, das verschiedene Kombinationen für Benutzer und Kennwort testet, oder ein Programm wie xHydra verwenden, das eine grafische Oberfläche für Hydra ist, oder direkt über die Befehlszeile, wenn dies der einzige Zugriff ist, den wir über SSH auf den Server haben.
Um Hydra zu installieren, verwenden wir die folgenden Befehle:
sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Nach der Installation müssen wir die Benutzerlisten und möglichen Schlüssel im txt-Format suchen oder erstellen oder nach einem Wörterbuch suchen, das wir wie im Tutorial verwenden können.
Als Textdatei mit möglichen Benutzernamen können wir auch einige funktionale Datenbanken verwenden, wie z. B. diese Wörterbücher von skullsecurity.org , die in vielen Tools, Antivirenprogrammen usw. verwendet werden und das Knacken oder Hacken von Passwörtern ermöglichen. Alle Datenquellen sind frei verwendbar.
Als nächstes werden wir hydra mit den Listen verwenden, die wir mit den folgenden Befehlen haben:
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 : Anmeldung fehlgeschlagen "-w 10 -V
Wir können sehen, dass einige Ergebnisse positiv waren und die Benutzer und das Passwort, die die akzeptierte Anmeldung erreicht haben, in Grün angezeigt werden. Wenn wir es mit dem Benutzer admin und dem Passwort versuchen, werden wir eintreten, um das Benutzerfeld zu sehen
Bei der niedrigsten Sicherheitsstufe ist das Web für SQL-Injection anfällig. Bevor wir beginnen, Code in das Textfeld einzufügen, können wir den Code beobachten, der die PHP-Tabelle abfragt, die anfällig ist.
<? // empfange was wir in das Textfeld eingeben ID $ id = $ _GET ['id']; // führe die SQL Anweisung aus $ rs = "SELECT vorname, nachname FROM benutzer WHERE benutzer_id = '$ id'"?>
Der Fehler ist, dass die Daten nicht von GET gesendet werden sollen, sondern mithilfe von POST und zweitens sollte überprüft werden, dass die eingehenden Daten keinen schädlichen Code enthalten.
Die SQL-Anweisung führt direkt aus, was ohne Kontrolle oder Überprüfung eintrifft. Dies macht den Code anfällig für SQL-Injektionen. Beispielsweise können wir die vollständige Liste der Benutzer abrufen, wenn wir auf der SQL-Injektionsseite anstelle einer ID den folgenden Code hinzufügen:
1 'OR 1 = 1 UNION SELECT null, version () #
Das Ergebnis ist die Liste der Benutzer.
Wir können auch die gesamte Liste der Tabellen abrufen, wenn wir den folgenden Code in das Textfeld eingeben.
1 'OR 1 = 1 UNION SELECT null, Tabellenname FROM INFORMATION_SCHEMA.tables
Wir können andere Kombinationen anwenden, um die Liste der Benutzer zu erhalten und die Daten jeder Tabelle zu sehen.