Web-Schwachstellen mit Damn Vulnerable Web App beseitigen

dvwa.jpg

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.

panta01.jpg

Als nächstes müssen wir die Datenbank so konfigurieren, dass wir von phpmyadmin ausgehen.

panta03.jpg

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.

See also  Wie man phpMyAdmin unter Debian 9 installiert und sichert

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.

panta04.jpg

Als Nächstes erstellen wir die Daten der Datenbank, die wir konfigurieren, und sehen einige Tools, die das Web mitbringt.

panta05.jpg

Wenn wir nach der Installation das Web http: // localhost / dvwa erneut aufrufen , erhalten wir einen Anmeldebildschirm:

panta06.jpg

Für den Zugriff auf das Web verwenden wir folgende Daten:

Benutzer: admin
Passwort: Passwort

panta07.jpg

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:

Niedrige Sicherheitsstufe
Diese Sicherheitsstufe ist vollständig verwundbar und es gibt keine Sicherheitsmaßnahmen, sodass wir leichter Hacking-Techniken ausprobieren können. Sie soll ein Beispiel dafür sein, wie sich Sicherheitslücken in Webanwendungen durch schlechte Codierungspraktiken manifestieren, und als Plattform dienen, um grundlegende Techniken des Ausbeutens, Knackens und Hackens zu lehren oder zu erlernen.

Mittlere Sicherheitsstufe
Diese Ebene dient zum Anzeigen von Sicherheitslücken, bei denen der Entwickler nicht sichergestellt hat, dass der Code und die Entwicklung keine Sicherheitslücken aufweisen.

Sicherheitsstufe Hoch
Diese Stufe gibt vor, dass die fortgeschrittensten Benutzer mit einer durchschnittlichen Schwierigkeit konfrontiert sind, die aus einer Mischung von schlechten Programmierpraktiken im Code des Webs besteht. Hier können wir fortgeschrittene Techniken ausprobieren.

Sicherheitsstufe Unmöglich
Diese Stufe ist die sicherste aller Sicherheitslücken. Es wird verwendet, um den anfälligen Quellcode mit dem sicheren Quellcode zu vergleichen. Diese Ebene soll zeigen, wie eine Website richtig entwickelt werden sollte und wie sie vor möglichen Angriffen reagieren sollte.

Wir konfigurieren die unterste Ebene, um verschiedene Hacking-Techniken und die Erkennung von Sicherheitslücken zu testen.

Testen Sie Brute Force , um ein Login mit einem eigenen Skript zu knacken

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.

See also  Entwerfen Sie in Photoshop CS6 einen realistischen Wasserreflexionseffekt

panta08.jpg

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.

panta09.jpg

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.

panta010.jpg

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 

panta011.jpg

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

panta012.jpg

SQL-Injection-Schwachstelle

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.

See also  So entfernen Sie die Skype-Lesebestätigung

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.

panta013.jpg

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 

panta014.jpg

Wir können andere Kombinationen anwenden, um die Liste der Benutzer zu erhalten und die Daten jeder Tabelle zu sehen.

administrator

Leave a Reply

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