Damn Vulnerable Web Application (DVWA) ist eine PHP/MySQL-Webanwendung, die verdammt anfällig ist. Sein Hauptziel besteht darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, die Prozesse zur Sicherung von Webanwendungen besser zu verstehen, und sowohl Schülern als auch Lehrern dabei zu helfen, in einer kontrollierten Klasse etwas über die Sicherheit von Webanwendungen zu lernen Raumklima.
Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen mit verschiedenen Schwierigkeitsgraden und einer einfachen, unkomplizierten Benutzeroberfläche zu üben. Bitte beachten Sie, dass diese Software sowohl dokumentierte als auch undokumentierte Schwachstellen aufweist. Das ist Absicht. Sie werden ermutigt, so viele Probleme wie möglich zu entdecken.
Die verdammt anfällige Webanwendung ist verdammt anfällig! Laden Sie es nicht in den öffentlichen HTML-Ordner Ihres Hosting-Anbieters oder auf einen mit dem Internet verbundenen Server hoch , da diese sonst gefährdet sind. Es wird empfohlen, eine virtuelle Maschine (wie VirtualBox oder VMware) zu verwenden, die auf den NAT-Netzwerkmodus eingestellt ist. Auf einem Gastrechner können Sie XAMPP für den Webserver und die Datenbank herunterladen und installieren.
Wir übernehmen keine Verantwortung für die Art und Weise, wie jemand diese Anwendung nutzt (DVWA). Wir haben den Zweck der Anwendung deutlich gemacht und sie sollte nicht in böswilliger Absicht verwendet werden. Wir haben Warnungen ausgesprochen und Maßnahmen ergriffen, um zu verhindern, dass Benutzer DVWA auf aktiven Webservern installieren. Wenn Ihr Webserver durch eine Installation von DVWA kompromittiert wird, liegt dies nicht in unserer Verantwortung, sondern in der Verantwortung der Person(en), die es hochgeladen und installiert hat.
Diese Datei ist Teil von Damn Vulnerable Web Application (DVWA).
Damn Vulnerable Web Application (DVWA) ist freie Software: Sie können sie unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) weiterverbreiten und/oder ändern. jede spätere Version.
Damn Vulnerable Web Application (DVWA) wird in der Hoffnung verbreitet, dass es nützlich sein wird, aber OHNE JEGLICHE GARANTIE; ohne die stillschweigende Garantie der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Einzelheiten finden Sie in der GNU General Public License.
Sie sollten eine Kopie der GNU General Public License zusammen mit Damn Vulnerable Web Application (DVWA) erhalten haben. Wenn nicht, siehe https://www.gnu.org/licenses/.
Diese Datei ist in mehreren Sprachen verfügbar:
Arabisch: العربية
Chinesisch: 简体中文
Französisch: Français
Koreanisch: 한국어
Persisch: فارسی
Polnisch: Polski
Portugiesisch: Português
Spanisch: Español
Türkisch: Türkçe
Indonesien: Indonesien
Vietnamesisch: Vietnamesisch
Wenn Sie eine Übersetzung beisteuern möchten, reichen Sie bitte eine PR ein. Beachten Sie jedoch, dass dies nicht bedeutet, dass Sie es einfach über Google Translate ausführen und einsenden müssen, da diese abgelehnt werden. Senden Sie Ihre übersetzte Version, indem Sie eine neue Datei „README.xx.md“ hinzufügen, wobei xx der zweibuchstabige Code Ihrer gewünschten Sprache ist (basierend auf ISO 639-1).
Obwohl es verschiedene Versionen von DVWA gibt, ist die einzige unterstützte Version die neueste Quelle aus dem offiziellen GitHub-Repository. Sie können es entweder aus dem Repo klonen:
Git-Klon https://github.com/digininja/DVWA.git
Oder laden Sie eine ZIP-Datei der Dateien herunter.
Beachten Sie, dass dies kein offizielles DVWA-Skript ist, sondern von IamCarron geschrieben wurde. Es wurde viel Arbeit in die Erstellung des Skripts gesteckt, und als es erstellt wurde, hat es keine schädlichen Auswirkungen gehabt. Es wird jedoch für alle Fälle empfohlen, das Skript zu überprüfen, bevor Sie es blind auf Ihrem System ausführen. Bitte melden Sie etwaige Fehler an IamCarron, nicht hier.
Ein automatisiertes Konfigurationsskript für DVWA auf Debian-basierten Maschinen, einschließlich Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS ...
Hinweis: Dieses Skript erfordert Root-Rechte und ist auf Debian-basierte Systeme zugeschnitten. Stellen Sie sicher, dass Sie es als Root-Benutzer ausführen.
Betriebssystem: Debian-basiertes System (Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS)
Berechtigungen: Als Root-Benutzer ausführen
Dadurch wird ein von @IamCarron geschriebenes Installationsskript heruntergeladen und automatisch ausgeführt. Dies wäre hier nicht enthalten, wenn wir dem Autor und dem Skript in dem Zustand, in dem wir es überprüft haben, nicht vertrauen würden, aber es besteht immer die Möglichkeit, dass jemand abtrünnig wird, und wenn Sie sich also nicht sicher fühlen, führen Sie den Code eines anderen aus, ohne ihn zu überprüfen Laden Sie es selbst herunter, folgen Sie dem manuellen Prozess und Sie können es nach dem Herunterladen überprüfen.
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
Laden Sie das Skript herunter:
wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
Machen Sie das Skript ausführbar:
chmod +x Install-DVWA.sh
Führen Sie das Skript als Root aus:
sudo ./Install-DVWA.sh
Installation von DVWA auf Kali, das in VirtualBox ausgeführt wird
DVWA unter Windows mit XAMPP installieren
Installation von Damn Vulnerable Web Application (DVWA) unter Windows 10
Der einfachste Weg, DVWA zu installieren, besteht darin, XAMPP herunterzuladen und zu installieren, wenn Sie noch nicht über ein Webserver-Setup verfügen.
XAMPP ist eine sehr einfach zu installierende Apache-Distribution für Linux, Solaris, Windows und Mac OS X. Das Paket enthält den Apache-Webserver, MySQL, PHP, Perl, einen FTP-Server und phpMyAdmin.
Dieses Video führt Sie durch den Installationsprozess für Windows, sollte jedoch für andere Betriebssysteme ähnlich sein.
Dank hoang-himself und JGillam führt jeder Commit zum master
-Zweig dazu, dass ein Docker-Image erstellt wird und aus der GitHub Container Registry heruntergeladen werden kann.
Weitere Informationen zu dem, was Sie erhalten, finden Sie in den vorgefertigten Docker-Images.
Voraussetzungen: Docker und Docker Compose.
Wenn Sie Docker Desktop verwenden, sollten beide bereits installiert sein.
Wenn Sie Docker Engine unter Linux bevorzugen, befolgen Sie unbedingt deren Installationsanleitung.
Wir bieten Support für die neueste Docker-Version, wie oben gezeigt. Wenn Sie Linux und das mit Ihrem Paketmanager gelieferte Docker-Paket verwenden, funktioniert es wahrscheinlich auch, aber der Support erfolgt nur nach bestem Wissen und Gewissen.
Um Docker von der Paketmanager-Version auf die Upstream-Version zu aktualisieren, müssen Sie die alten Versionen deinstallieren, wie in den Handbüchern für Ubuntu, Fedora und andere beschrieben. Ihre Docker-Daten (Container, Bilder, Volumes usw.) sollten nicht betroffen sein. Sollten Sie jedoch auf ein Problem stoßen, informieren Sie Docker unbedingt und verwenden Sie in der Zwischenzeit Suchmaschinen.
Dann, um loszulegen:
Führen Sie docker version
und docker compose version
aus, um zu sehen, ob Docker und Docker Compose ordnungsgemäß installiert sind. Sie sollten ihre Versionen in der Ausgabe sehen können.
Zum Beispiel:
>>> docker version
Client:
[...]
Version: 23.0.5
[...]
Server: Docker Desktop 4.19.0 (106363)
Engine:
[...]
Version: 23.0.5
[...]
>>> docker compose version
Docker Compose version v2.17.3
Wenn Sie nichts sehen oder die Fehlermeldung „Befehl nicht gefunden“ erhalten, befolgen Sie die Voraussetzungen, um Docker und Docker Compose einzurichten.
Klonen Sie dieses Repository oder laden Sie es herunter und extrahieren Sie es (siehe Download).
Öffnen Sie ein Terminal Ihrer Wahl und ändern Sie dessen Arbeitsverzeichnis in diesen Ordner ( DVWA
).
Führen Sie docker compose up -d
aus.
DVWA ist jetzt unter http://localhost:4280
verfügbar.
Beachten Sie, dass der Webserver beim Ausführen von DVWA in Containern Port 4280 statt des üblichen Ports 80 überwacht. Weitere Informationen zu dieser Entscheidung finden Sie unter Ich möchte DVWA auf einem anderen Port ausführen.
Wenn Sie lokale Änderungen vorgenommen haben und das Projekt lokal erstellen möchten, gehen Sie zu compose.yml
und ändern Sie pull_policy: always
in pull_policy: build
.
Das Ausführen von docker compose up -d
sollte Docker dazu veranlassen, ein Image lokal zu erstellen, unabhängig davon, was in der Registrierung verfügbar ist.
Siehe auch: pull_policy
.
Idealerweise sollten Sie die neueste stabile Version von PHP verwenden, da diese Version auf dieser Version entwickelt und getestet wird.
Es wird kein Support für Personen gewährt, die versuchen, PHP 5.x zu verwenden.
Bei Versionen vor 7.3 sind Probleme bekannt, die zu Problemen führen können. Der Großteil der App funktioniert, aber zufällige Dinge funktionieren möglicherweise nicht. Sofern Sie keinen triftigen Grund haben, eine solch alte Version zu verwenden, wird kein Support gewährt.
Wenn Sie eine Debian-basierte Linux-Distribution verwenden, müssen Sie die folgenden Pakete (oder deren Äquivalent) installieren:
Apache2
libapache2-mod-php
Mariadb-Server
mariadb-client
php php-mysqli
php-gd
Ich würde empfehlen, vorher ein Update durchzuführen, um sicherzustellen, dass Sie von allem die neueste Version erhalten.
passendes Update apt install -y apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php
Die Site funktioniert mit MySQL anstelle von MariaDB, wir empfehlen jedoch dringend MariaDB, da es sofort einsatzbereit ist, während Sie Änderungen vornehmen müssen, damit MySQL ordnungsgemäß funktioniert.
DVWA wird mit einer Dummy-Kopie seiner Konfigurationsdatei geliefert, die Sie kopieren und dann die entsprechenden Änderungen vornehmen müssen. Unter Linux kann dies, vorausgesetzt Sie befinden sich im DVWA-Verzeichnis, wie folgt erfolgen:
cp config/config.inc.php.dist config/config.inc.php
Unter Windows kann dies etwas schwieriger sein, wenn Sie Dateierweiterungen ausblenden. Wenn Sie sich diesbezüglich nicht sicher sind, erklärt dieser Blog-Beitrag mehr darüber:
So stellen Sie sicher, dass Windows Dateierweiterungen anzeigt
Anstatt die Konfigurationsdatei zu ändern, können Sie die meisten Einstellungen auch mithilfe von Umgebungsvariablen festlegen. In einer Docker- oder Kubernetes-Bereitstellung können Sie so die Konfiguration ändern, ohne ein neues Docker-Image zu erstellen. Sie finden die Variablen in der Datei config/config.inc.php.dist.
Wenn Sie die Standardsicherheitsstufe auf „niedrig“ setzen möchten, fügen Sie einfach die folgende Zeile zur Datei „compose.yml“ hinzu:
Umfeld: - DB_SERVER=db - DEFAULT_SECURITY_LEVEL=niedrig
Um die Datenbank einzurichten, klicken Sie einfach im Hauptmenü auf die Schaltfläche Setup DVWA
und dann auf die Schaltfläche Create / Reset Database
. Dadurch wird die Datenbank mit einigen Daten für Sie erstellt/zurückgesetzt.
Wenn Sie beim Versuch, Ihre Datenbank zu erstellen, eine Fehlermeldung erhalten, stellen Sie sicher, dass Ihre Datenbankanmeldeinformationen in ./config/config.inc.php
korrekt sind. Dies unterscheidet sich von config.inc.php.dist, einer Beispieldatei.
Die Variablen sind standardmäßig auf Folgendes eingestellt:
$_DVWA[ 'db_server'] = '127.0.0.1';$_DVWA[ 'db_port'] = '3306';$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd ';$_DVWA[ 'db_database' ] = 'dvwa';
Beachten Sie: Wenn Sie MariaDB anstelle von MySQL verwenden (MariaDB ist in Kali die Standardeinstellung), können Sie den Datenbank-Root-Benutzer nicht verwenden, sondern müssen einen neuen Datenbankbenutzer erstellen. Stellen Sie dazu als Root-Benutzer eine Verbindung zur Datenbank her und verwenden Sie dann die folgenden Befehle:
MariaDB [(none)]> create database dvwa;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user dvwa@localhost identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all on dvwa.* to dvwa@localhost;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Einige Tools funktionieren nicht gut mit der Authentifizierung und können daher nicht mit DVWA verwendet werden. Um dies zu umgehen, gibt es eine Konfigurationsoption zum Deaktivieren der Authentifizierungsprüfung. Stellen Sie dazu einfach Folgendes in der Konfigurationsdatei ein:
$_DVWA[ 'disable_authentication' ] = true;
Sie müssen außerdem die Sicherheitsstufe auf eine einstellen, die für den Test, den Sie durchführen möchten, geeignet ist:
$_DVWA[ 'default_security_level' ] = 'low';
In diesem Zustand können Sie auf alle Funktionen zugreifen, ohne sich anmelden und Cookies setzen zu müssen.
./hackable/uploads/
– Muss vom Webdienst beschreibbar sein (für Datei-Upload).
Auf Linux-Systemen wahrscheinlich in /etc/php/xx/fpm/php.ini
oder /etc/php/xx/apache2/php.ini
zu finden.
So erlauben Sie Remote File Inclusions (RFI):
allow_url_include = on
[allow_url_include]
allow_url_fopen = on
[allow_url_fopen]
Um sicherzustellen, dass PHP alle Fehlermeldungen anzeigt:
display_errors = on
[display_errors]
display_startup_errors = on
[display_startup_errors]
Stellen Sie sicher, dass Sie den PHP-Dienst oder Apache neu starten, nachdem Sie die Änderungen vorgenommen haben.
Dies ist nur für das Lab „Unsicheres CAPTCHA“ erforderlich. Wenn Sie nicht mit diesem Lab spielen, können Sie diesen Abschnitt ignorieren.
Ein Paar API-Schlüssel wurde von https://www.google.com/recaptcha/admin/create generiert.
Diese kommen dann in die folgenden Abschnitte von ./config/config.inc.php
:
$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]
Standardbenutzername = admin
Standardpasswort = password
...kann leicht brutal erzwungen werden ;)
Anmelde-URL: http://127.0.0.1/login.php
Hinweis: Dies ist anders, wenn Sie DVWA in einem anderen Verzeichnis installiert haben.
Dabei wird davon ausgegangen, dass Sie eine Debian-basierte Distribution wie Debian, Ubuntu und Kali verwenden. Befolgen Sie für andere Distributionen die Anweisungen, aktualisieren Sie jedoch gegebenenfalls den Befehl.
Wenn Sie Docker Desktop verwenden, können Sie über die grafische Anwendung auf Protokolle zugreifen. Einige kleinere Details können sich mit neueren Versionen ändern, die Zugriffsmethode sollte jedoch dieselbe sein.
Der Zugriff auf Protokolle ist auch über das Terminal möglich.
Öffnen Sie ein Terminal und ändern Sie sein Arbeitsverzeichnis in DVWA
Zeigen Sie die zusammengeführten Protokolle an
Docker erstellt Protokolle
Falls Sie die Protokolle in eine Datei exportieren möchten, z. B. dvwa.log
Docker Compose Logs > dvwa.log
Aus mehreren Gründen verwenden wir Port 80 nicht standardmäßig:
Einige Benutzer führen möglicherweise bereits etwas auf Port 80 aus.
Einige Benutzer verwenden möglicherweise eine Rootless-Container-Engine (wie Podman) und 80 ist ein privilegierter Port (< 1024). Es ist eine zusätzliche Konfiguration (z. B. die Einstellung net.ipv4.ip_unprivileged_port_start
) erforderlich, die Sie jedoch selbst recherchieren müssen.
Sie können DVWA auf einem anderen Port verfügbar machen, indem Sie die Portbindung in der Datei compose.yml
ändern. Sie können zum Beispiel ändern
Häfen: - 127.0.0.1:4280:80
Zu
Häfen: - 127.0.0.1:8806:80
DVWA ist jetzt unter http://localhost:8806
zugänglich.
In Fällen, in denen DVWA nicht nur ausschließlich von Ihrem eigenen Gerät aus erreichbar sein soll, sondern auch in Ihrem lokalen Netzwerk (z. B. weil Sie eine Testmaschine für eine Werkstatt einrichten), können Sie die 127.0.0.1:
aus dem Port entfernen Mapping (oder ersetzen Sie es durch Ihre LAN-IP). Auf diese Weise wird es auf allen verfügbaren Geräten abgehört. Die sichere Standardeinstellung sollte immer darin bestehen, nur auf Ihrem lokalen Loopback-Gerät zu lauschen. Schließlich handelt es sich um eine verdammt anfällige Webanwendung, die auf Ihrem Computer ausgeführt wird.
Die enthaltene Datei compose.yml
führt DVWA und seine Datenbank automatisch aus, wenn Docker gestartet wird.
Um dies zu deaktivieren, können Sie die Zeilen restart: unless-stopped
in der Datei compose.yml
löschen oder auskommentieren.
Wenn Sie dieses Verhalten vorübergehend deaktivieren möchten, können Sie docker compose stop
ausführen oder Docker Desktop verwenden, dvwa
suchen und auf Stop klicken. Darüber hinaus können Sie die Container löschen oder docker compose down
ausführen.
Auf Linux-Systemen generiert Apache standardmäßig zwei Protokolldateien, access.log
und error.log
, und auf Debian-basierten Systemen sind diese normalerweise in /var/log/apache2/
zu finden.
Wenn Sie Fehlerberichte, Probleme usw. einreichen, fügen Sie bitte mindestens die letzten fünf Zeilen jeder dieser Dateien bei. Auf Debian-basierten Systemen können Sie diese wie folgt erhalten:
tail -n 5 /var/log/apache2/access.log /var/log/apache2/error.log
Wenn Sie dieses Problem haben, müssen Sie die Dateispeicherorte kennen. Standardmäßig ist das Apache-Dokumentstammverzeichnis (der Ort, an dem nach Webinhalten gesucht wird) /var/www/html
. Wenn Sie die Datei hello.txt
in diesem Verzeichnis ablegen, navigieren Sie zum Zugriff darauf zu http://localhost/hello.txt
.
Wenn Sie ein Verzeichnis erstellt und die Datei dort abgelegt haben – /var/www/html/mydir/hello.txt
– müssen Sie dann zu http://localhost/mydir/hello.txt
navigieren.
Linux unterscheidet standardmäßig zwischen Groß- und Kleinschreibung. Wenn Sie also im obigen Beispiel versuchen würden, zu einer dieser Dateien zu navigieren, erhalten Sie die 404 Not Found
:
http://localhost/MyDir/hello.txt
http://localhost/mydir/Hello.txt
http://localhost/MYDIR/hello.txt
Wie wirkt sich das auf DVWA aus? Die meisten Leute verwenden Git, um DVWA nach /var/www/html
zu klonen. Dadurch erhalten sie das Verzeichnis /var/www/html/DVWA/
mit allen darin enthaltenen DVWA-Dateien. Anschließend navigieren sie zu http://localhost/
und erhalten entweder eine 404
oder die Standard-Apache-Willkommensseite. Da sich die Dateien in DVWA befinden, müssen Sie zu http://localhost/DVWA
navigieren.
Der andere häufige Fehler besteht darin, zu http://localhost/dvwa
zu navigieren, was zu einem 404
führt, da dvwa
in Bezug auf den Linux-Verzeichnisabgleich nicht DVWA
ist.
Wenn Sie also nach der Einrichtung versuchen, die Website zu besuchen und einen 404
zu erhalten, denken Sie darüber nach, wo Sie die Dateien installiert haben, wo sie sich relativ zum Dokumentstamm befinden und wie das von Ihnen verwendete Verzeichnis lautet.
Dabei handelt es sich in der Regel um ein Konfigurationsproblem, das ein anderes Problem verbirgt. Standardmäßig zeigt PHP keine Fehler an. Wenn Sie also vergessen haben, die Fehleranzeige während des Einrichtungsvorgangs zu aktivieren, kann es bei anderen Problemen, wie z falsch ist, wird ausgeblendet.
Um dies zu beheben, stellen Sie sicher, dass Sie display_errors
und display_startup_errors
wie in der PHP-Konfiguration beschrieben festlegen und starten Sie dann Apache neu.
Wenn beim Ausführen des Setup-Skripts Folgendes angezeigt wird, bedeutet dies, dass der Benutzername oder das Kennwort in der Konfigurationsdatei nicht mit denen in der Datenbank übereinstimmen:
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).
Der Fehler besagt, dass Sie den Benutzernamen notdvwa
verwenden.
Die folgende Fehlermeldung besagt, dass Sie die Konfigurationsdatei auf die falsche Datenbank verwiesen haben.
SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'
Es heißt, dass Sie den Benutzer dvwa
verwenden und versuchen, eine Verbindung zur Datenbank notdvwa
herzustellen.
Das erste, was Sie tun müssen, ist, noch einmal zu überprüfen, was Ihrer Meinung nach in der Konfigurationsdatei enthalten ist und was tatsächlich vorhanden ist.
Wenn es Ihren Erwartungen entspricht, überprüfen Sie als Nächstes, ob Sie sich als Benutzer in der Befehlszeile anmelden können. Angenommen, Sie haben den Datenbankbenutzer dvwa
und das Passwort p@ssw0rd
, führen Sie den folgenden Befehl aus:
mysql -u dvwa -pp@ssw0rd -D dvwa
Hinweis: Nach dem -p steht kein Leerzeichen
Wenn Sie Folgendes sehen, ist das Passwort korrekt:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 14
Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1 Ubuntu 19.10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [dvwa]>
Da Sie über die Befehlszeile eine Verbindung herstellen können, liegt wahrscheinlich ein Fehler in der Konfigurationsdatei vor. Überprüfen Sie dies noch einmal und melden Sie dann ein Problem, wenn die Dinge immer noch nicht funktionieren.
Wenn Sie Folgendes sehen, ist der von Ihnen verwendete Benutzername oder das Passwort falsch. Wiederholen Sie die Schritte zur Datenbankeinrichtung und stellen Sie sicher, dass Sie während des gesamten Vorgangs denselben Benutzernamen und dasselbe Kennwort verwenden.
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)
Wenn Sie Folgendes erhalten, sind die Benutzeranmeldeinformationen korrekt, der Benutzer hat jedoch keinen Zugriff auf die Datenbank. Wiederholen Sie die Einrichtungsschritte erneut und überprüfen Sie den von Ihnen verwendeten Datenbanknamen.
ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'
Der letzte Fehler, den Sie erhalten könnten, ist dieser:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Hierbei handelt es sich nicht um ein Authentifizierungsproblem, sondern um einen Hinweis darauf, dass der Datenbankserver nicht ausgeführt wird. Beginnen Sie mit Folgendem
Sudo-Dienst MySQL starten
Ein ähnlicher Fehler wie dieser:
Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/sites/dvwa/non-secure/htdocs/dvwa/includes/dvwaPage.inc.php:535
Bedeutet, dass Ihr Datenbankserver nicht läuft oder Sie die falsche IP-Adresse in der Konfigurationsdatei haben.
Überprüfen Sie diese Zeile in der Konfigurationsdatei, um zu sehen, wo sich der Datenbankserver voraussichtlich befinden wird:
$_DVWA[ 'db_server' ] = '127.0.0.1';
Gehen Sie dann zu diesem Server und prüfen Sie, ob er läuft. Unter Linux kann dies erfolgen mit:
systemctl-Status mariadb.service
Und wenn Sie nach so etwas suchen, ist es wichtig, dass dort active (running)
steht.
● mariadb.service – MariaDB 10.5.19-Datenbankserver Geladen: geladen (/lib/systemd/system/mariadb.service; aktiviert; voreingestellt: aktiviert) Aktiv: aktiv (läuft) seit Do 14.03.2024 16:04:25 GMT; Vor 1 Woche und 5 Tagen
Wenn es nicht läuft, können Sie es starten mit:
sudo systemctl stoppt mariadb.service
Notieren Sie sich das sudo
und stellen Sie sicher, dass Sie bei Aufforderung Ihr Linux-Benutzerkennwort eingeben.
Überprüfen Sie unter Windows den Status in der XAMPP-Konsole.
Mit den neuesten Versionen von MySQL kann PHP in seiner Standardkonfiguration nicht mehr mit der Datenbank kommunizieren. Wenn Sie versuchen, das Setup-Skript auszuführen und die folgende Meldung erhalten, bedeutet dies, dass Sie über die Konfiguration verfügen.
Database Error #2054: The server requested authentication method unknown to the client.
Sie haben zwei Möglichkeiten: Die einfachste besteht darin, MySQL zu deinstallieren und MariaDB zu installieren. Das Folgende ist der offizielle Leitfaden des MariaDB-Projekts:
https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-fünf-schritte/
Alternativ gehen Sie folgendermaßen vor:
Bearbeiten Sie als Root die folgende Datei: /etc/mysql/mysql.conf.d/mysqld.cnf
Fügen Sie unter der Zeile [mysqld]
Folgendes hinzu: default-authentication-plugin=mysql_native_password
Starten Sie die Datenbank neu: sudo service mysql restart
Überprüfen Sie die Authentifizierungsmethode für Ihren Datenbankbenutzer:
mysql> Wählen Sie Host, Benutzer, Plugin aus mysql.user aus, wobei mysql.user.User = 'dvwa';+-----------+-------------- ----+--------+| Gastgeber | Benutzer | Plugin |+-----------+------------------+---------------- -------+| localhost | dvwa | caching_sha2_password |+-----------+------------------+---------------- -------+1 Zeilen im Satz (0,00 Sek.)
Sie werden wahrscheinlich caching_sha2_password
sehen. Führen Sie in diesem Fall den folgenden Befehl aus:
mysql> ALTER USER dvwa@localhost IDENTIFIED WITH mysql_native_password BY 'p@ssw0rd';
Wenn Sie die Prüfung erneut ausführen, sollten Sie nun mysql_native_password
sehen.
mysql> Wählen Sie Host, Benutzer, Plugin aus mysql.user aus, wobei mysql.user.User = 'dvwa';+-----------+------+------- ----------------+| Gastgeber | Benutzer | Plugin |+-----------+------+-----------------------+| localhost | dvwa | mysql_native_password |+-----------+------+-----------------------+1 Zeile im Satz (0,00 Sek.)
Nach all dem sollte der Einrichtungsvorgang nun wie gewohnt funktionieren.
Weitere Informationen finden Sie auf der folgenden Seite: https://www.php.net/manual/en/mysqli.requirements.php.
Der Datenbankserver läuft nicht. In einer Debian-basierten Distribution kann dies wie folgt erfolgen:
Sudo-Dienst MySQL starten
Es gibt einige Gründe, warum Sie diese Fehlermeldungen erhalten könnten, aber die wahrscheinlichste ist, dass die Version des von Ihnen ausgeführten Datenbankservers nicht mit der PHP-Version kompatibel ist.
Dies tritt am häufigsten auf, wenn Sie die neueste Version von MySQL als PHP ausführen und diese nicht gut funktioniert. Bester Rat: Verzichten Sie auf MySQL und installieren Sie MariaDB, da wir dies nicht unterstützen können.
Weitere Informationen finden Sie unter:
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-related-errors/
Apache verfügt möglicherweise nicht über ausreichende Berechtigungen, um Befehle auf dem Webserver auszuführen. Wenn Sie DVWA unter Linux ausführen, stellen Sie sicher, dass Sie als Root angemeldet sind. Melden Sie sich unter Windows als Administrator an.
Möglicherweise haben Sie Probleme mit SELinux. Deaktivieren Sie entweder SELinux oder führen Sie diesen Befehl aus, damit der Webserver mit der Datenbank kommunizieren kann:
setsebool -P httpd_can_network_connect_db 1
Für die neuesten Informationen zur Fehlerbehebung lesen Sie bitte die offenen und geschlossenen Tickets im Git-Repo:
https://github.com/digininja/DVWA/issues
Bevor Sie ein Ticket einreichen, stellen Sie bitte sicher, dass Sie die neueste Version des Codes aus dem Repo ausführen. Dies ist nicht die neueste Version, sondern der neueste Code aus der Hauptniederlassung.
Wenn Sie ein Ticket erstellen, übermitteln Sie bitte mindestens die folgenden Informationen:
Betriebssystem
Die letzten 5 Zeilen aus dem Webserver-Fehlerprotokoll direkt nach dem Auftreten des von Ihnen gemeldeten Fehlers
Wenn es sich um ein Datenbankauthentifizierungsproblem handelt, gehen Sie die oben genannten Schritte durch und machen Sie von jedem Schritt einen Screenshot. Senden Sie diese zusammen mit einem Screenshot des Abschnitts der Konfigurationsdatei, der den Datenbankbenutzer und das Passwort zeigt.
Eine vollständige Beschreibung dessen, was schief läuft, was Sie erwarten und was Sie versucht haben, um das Problem zu beheben. „Login defekt“ reicht für uns nicht aus, um Ihr Problem zu verstehen und bei der Behebung zu helfen.
Ich werde versuchen, einige Tutorial-Videos zusammenzustellen, die einige der Schwachstellen erläutern und zeigen, wie man sie erkennt und dann ausnutzt. Hier sind die, die ich bisher gemacht habe:
Reflected XSS finden und nutzen
Die Unterstützung hierfür ist begrenzt. Bevor Sie Probleme ansprechen, stellen Sie bitte sicher, dass Sie bereit sind, an der Fehlerbehebung zu arbeiten. Behaupten Sie nicht einfach, dass es nicht funktioniert.
Standardmäßig werden SQLi und Blind SQLi mit dem von der Site verwendeten MariaDB/MySQL-Server durchgeführt, es ist jedoch möglich, stattdessen die SQLi-Tests mit SQLite3 durchzuführen.
Ich werde nicht darauf eingehen, wie man SQLite3 mit PHP zum Laufen bringt, aber es sollte ein einfacher Fall sein, das Paket php-sqlite3
zu installieren und sicherzustellen, dass es aktiviert ist.
Um den Wechsel vorzunehmen, bearbeiten Sie einfach die Konfigurationsdatei und fügen Sie diese Zeilen hinzu oder bearbeiten Sie sie:
$_DVWA["SQLI_DB"] = "sqlite";$_DVWA["SQLITE_DB"] = "sqli.db";
Standardmäßig wird die Datei database/sqli.db
verwendet. Wenn Sie es vermasseln, kopieren Sie einfach database/sqli.db.dist
darüber.
Die Herausforderungen sind genau die gleichen wie bei MySQL, sie laufen stattdessen nur gegen SQLite3.
Vielen Dank für alle Ihre Beiträge und dafür, dass Sie dieses Projekt auf dem neuesten Stand halten.
Wenn Sie eine Idee oder eine Verbesserung haben oder einfach nur zusammenarbeiten möchten, können Sie gerne einen Beitrag leisten und am Projekt teilnehmen. Senden Sie uns gerne Ihre PR.
Um es einfach auszudrücken: Bitte nicht!
Ungefähr einmal im Jahr reicht jemand einen Bericht über eine Schwachstelle ein, die er in der App gefunden hat. Einige sind gut geschrieben, manchmal besser als ich in bezahlten Pen-Testberichten gesehen habe, andere lauten nur „Ihnen fehlen Überschriften, zahlen Sie.“ Mich".
Im Jahr 2023 erreichte dies ein völlig neues Niveau, als jemand beschloss, ein CVE für eine der Schwachstellen anzufordern, und ihm CVE-2023-39848 gegeben wurde. Es kam zu großer Heiterkeit und es wurde Zeit verschwendet, dies zu korrigieren.
Die App hat Schwachstellen, das ist gewollt. Bei den meisten davon handelt es sich um gut dokumentierte Übungen, die Sie als Unterricht durcharbeiten, bei anderen handelt es sich um „versteckte“ Übungen, die Sie selbst finden können. Wenn Sie Ihre Fähigkeiten beim Auffinden versteckter Extras wirklich unter Beweis stellen möchten, schreiben Sie einen Blogbeitrag oder erstellen Sie ein Video, da es wahrscheinlich Leute gibt, die daran interessiert wären, mehr über sie und darüber zu erfahren, wie Sie sie gefunden haben. Wenn Sie uns den Link senden, nehmen wir ihn möglicherweise sogar in die Referenzen auf.
Projekthome: https://github.com/digininja/DVWA
Erstellt vom DVWA-Team