Damn Vulnerable Web Application (DVWA) es una aplicación web PHP/MySQL que es muy vulnerable. Su objetivo principal es ser una ayuda para que los profesionales de la seguridad prueben sus habilidades y herramientas en un entorno legal, ayudar a los desarrolladores web a comprender mejor los procesos de seguridad de las aplicaciones web y ayudar tanto a estudiantes como a profesores a aprender sobre la seguridad de las aplicaciones web en una clase controlada. ambiente de la habitación.
El objetivo de DVWA es practicar algunas de las vulnerabilidades web más comunes , con varios niveles de dificultad , con una interfaz sencilla y directa. Tenga en cuenta que existen vulnerabilidades documentadas e indocumentadas en este software. Esto es intencional. Le recomendamos que intente descubrir tantos problemas como sea posible.
¡La maldita aplicación web vulnerable es muy vulnerable! No lo cargue en la carpeta HTML pública de su proveedor de alojamiento ni en ningún servidor con acceso a Internet , ya que se verán comprometidos. Se recomienda utilizar una máquina virtual (como VirtualBox o VMware) que esté configurada en modo de red NAT. Dentro de una máquina invitada, puedes descargar e instalar XAMPP para el servidor web y la base de datos.
No nos hacemos responsables de la forma en que alguien utilice esta aplicación (DVWA). Hemos dejado claros los propósitos de la aplicación y no debe usarse de manera maliciosa. Hemos dado advertencias y tomado medidas para evitar que los usuarios instalen DVWA en servidores web activos. Si su servidor web se ve comprometido a través de una instalación de DVWA, no es nuestra responsabilidad, es responsabilidad de la persona que lo cargó e instaló.
Este archivo es parte de la aplicación web Damn Vulnerable (DVWA).
Damn Vulnerable Web Application (DVWA) es software gratuito: puede redistribuirlo y/o modificarlo según los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior.
La Maldita Aplicación Web Vulnerable (DVWA) se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU para obtener más detalles.
Debería haber recibido una copia de la Licencia pública general GNU junto con la aplicación web Damn Vulnerable (DVWA). De lo contrario, consulte https://www.gnu.org/licenses/.
Este archivo está disponible en varios idiomas:
Árabe: العربية
Chino: 简体中文
francés: francés
Coreano: 한국어
persa: فارسی
polaco: Polski
Portugués: Português
español: español
Turco: Türkçe
Indonesia: Indonesia
vietnamita: vietnamita
Si desea contribuir con una traducción, envíe un PR. Sin embargo, tenga en cuenta que esto no significa simplemente ejecutarlo a través del Traductor de Google y enviarlo, serán rechazados. Envíe su versión traducida agregando un nuevo archivo 'README.xx.md' donde xx es el código de dos letras del idioma deseado (basado en ISO 639-1).
Si bien existen varias versiones de DVWA, la única versión compatible es la fuente más reciente del repositorio oficial de GitHub. Puedes clonarlo desde el repositorio:
clon de git https://github.com/digininja/DVWA.git
O descargue un ZIP de los archivos.
Tenga en cuenta que este no es un guión oficial de DVWA, fue escrito por IamCarron. Se trabajó mucho en la creación del script y, cuando se creó, no hizo nada malicioso; sin embargo, se recomienda revisar el script antes de ejecutarlo a ciegas en su sistema, por si acaso. Informe cualquier error a IamCarron, no aquí.
Un script de configuración automatizado para DVWA en máquinas basadas en Debian, incluidas Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS...
Nota: Este script requiere privilegios de root y está diseñado para sistemas basados en Debian. Asegúrese de ejecutarlo como usuario root.
Sistema operativo: sistema basado en Debian (Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS)
Privilegios: Ejecutar como usuario root
Esto descargará un script de instalación escrito por @IamCarron y lo ejecutará automáticamente. Esto no se incluiría aquí si no confiáramos en el autor y en el script tal como estaba cuando lo revisamos, pero siempre existe la posibilidad de que alguien se vuelva deshonesto, por lo que si no se siente seguro ejecutando el código de otra persona sin revisarlo. Hazlo tú mismo, sigue el proceso manual y podrás revisarlo una vez descargado.
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
Descarga el guión:
wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
Haga que el script sea ejecutable:
chmod +x Instalar-DVWA.sh
Ejecute el script como root:
sudo ./Install-DVWA.sh
Instalación de DVWA en Kali ejecutándose en VirtualBox
Instalación de DVWA en Windows usando XAMPP
Instalación de la aplicación web Damn Vulnerable (DVWA) en Windows 10
La forma más sencilla de instalar DVWA es descargar e instalar XAMPP si aún no tiene un servidor web configurado.
XAMPP es una distribución Apache muy fácil de instalar para Linux, Solaris, Windows y Mac OS X. El paquete incluye el servidor web Apache, MySQL, PHP, Perl, un servidor FTP y phpMyAdmin.
Este video lo guía a través del proceso de instalación para Windows, pero debería ser similar para otros sistemas operativos.
Gracias al propio hoang y a JGillam, cada confirmación a la rama master
hace que se cree una imagen de Docker y esté lista para ser eliminada de GitHub Container Registry.
Para obtener más información sobre lo que obtiene, puede explorar las imágenes de Docker prediseñadas.
Requisitos previos: Docker y Docker Compose.
Si está utilizando Docker Desktop, ambos ya deberían estar instalados.
Si prefiere Docker Engine en Linux, asegúrese de seguir su guía de instalación.
Brindamos soporte para la última versión de Docker como se muestra arriba. Si está utilizando Linux y el paquete Docker que viene con su administrador de paquetes, probablemente también funcionará, pero el soporte solo será el mejor esfuerzo.
Actualizar Docker desde la versión del administrador de paquetes a la versión anterior requiere que desinstale las versiones anteriores como se ve en sus manuales para Ubuntu, Fedora y otros. Sus datos de Docker (contenedores, imágenes, volúmenes, etc.) no deberían verse afectados, pero en caso de que tenga algún problema, asegúrese de informar a Docker y utilice los motores de búsqueda mientras tanto.
Luego, para empezar:
Ejecute docker version
y docker compose version
para ver si tiene Docker y Docker Compose instalados correctamente. Debería poder ver sus versiones en el resultado.
Por ejemplo:
>>> 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
Si no ve nada o recibe un error de comando no encontrado, siga los requisitos previos para configurar Docker y Docker Compose.
Clona o descarga este repositorio y extráelo (ver Descarga).
Abra una terminal de su elección y cambie su directorio de trabajo a esta carpeta ( DVWA
).
Ejecute docker compose up -d
.
DVWA ahora está disponible en http://localhost:4280
.
Tenga en cuenta que para ejecutar DVWA en contenedores, el servidor web escucha en el puerto 4280 en lugar del puerto habitual 80. Para obtener más información sobre esta decisión, consulte Quiero ejecutar DVWA en un puerto diferente.
Si realizó cambios locales y desea compilar el proyecto desde local, vaya a compose.yml
y cambie pull_policy: always
a pull_policy: build
.
La ejecución docker compose up -d
debería hacer que Docker cree una imagen local independientemente de lo que esté disponible en el registro.
Ver también: pull_policy
.
Lo ideal sería utilizar la última versión estable de PHP, ya que esa es la versión en la que se desarrollará y probará esta aplicación.
No se brindará soporte a nadie que intente utilizar PHP 5.x.
Las versiones inferiores a 7.3 tienen problemas conocidos que causarán problemas, la mayor parte de la aplicación funcionará, pero es posible que algunas cosas aleatorias no. A menos que tenga una muy buena razón para utilizar una versión tan antigua, no se brindará soporte.
Si está utilizando una distribución de Linux basada en Debian, necesitará instalar los siguientes paquetes (o su equivalente) :
apache2
libapache2-mod-php
servidor-mariadb
cliente-mariadb
php php-mysqli
php-gd
Recomendaría realizar una actualización antes de esto, para asegurarse de obtener la última versión de todo.
actualización adecuada apto instalar -y apache2 mariadb-servidor mariadb-cliente php php-mysqli php-gd libapache2-mod-php
El sitio funcionará con MySQL en lugar de MariaDB, pero recomendamos encarecidamente MariaDB ya que funciona de inmediato, mientras que debe realizar cambios para que MySQL funcione correctamente.
DVWA se envía con una copia ficticia de su archivo de configuración que deberá copiar y luego realizar los cambios apropiados. En Linux, suponiendo que se encuentre en el directorio DVWA, esto se puede hacer de la siguiente manera:
cp config/config.inc.php.dist config/config.inc.php
En Windows, esto puede ser un poco más difícil si ocultas las extensiones de archivos. Si no estás seguro de esto, esta publicación de blog explica más al respecto:
Cómo hacer que Windows muestre extensiones de archivos
En lugar de modificar el archivo de configuración, también puede establecer la mayoría de las configuraciones utilizando variables de entorno. En una implementación de Docker o Kubernetes, esto le permite modificar la configuración sin crear una nueva imagen de Docker. Encontrarás las variables en el archivo config/config.inc.php.dist.
Si desea establecer el nivel de seguridad predeterminado en "bajo", simplemente agregue la siguiente línea al archivo compose.yml:
ambiente: -DB_SERVER=db - DEFAULT_SECURITY_LEVEL=bajo
Para configurar la base de datos, simplemente haga clic en el botón Setup DVWA
en el menú principal, luego haga clic en el botón Create / Reset Database
. Esto creará/restablecerá la base de datos con algunos datos.
Si recibe un error al intentar crear su base de datos, asegúrese de que las credenciales de su base de datos sean correctas dentro de ./config/config.inc.php
. Esto difiere de config.inc.php.dist, que es un archivo de ejemplo.
Las variables están configuradas de la siguiente manera de forma predeterminada:
$_DVWA[ 'db_server'] = '127.0.0.1';$_DVWA[ 'db_port'] = '3306';$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd ';$_DVWA[ 'db_database' ] = 'dvwa';
Tenga en cuenta que si está utilizando MariaDB en lugar de MySQL (MariaDB es el valor predeterminado en Kali), entonces no puede utilizar el usuario raíz de la base de datos; debe crear un nuevo usuario de la base de datos. Para hacer esto, conéctese a la base de datos como usuario root y luego use los siguientes comandos:
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)
Algunas herramientas no funcionan bien con la autenticación, por lo que no se pueden utilizar con DVWA. Para solucionar esto, existe una opción de configuración para deshabilitar la verificación de autenticación. Para hacer esto, simplemente configure lo siguiente en el archivo de configuración:
$_DVWA[ 'disable_authentication' ] = verdadero;
También deberá establecer el nivel de seguridad en uno que sea apropiado para las pruebas que desea realizar:
$_DVWA[ 'default_security_level' ] = 'bajo';
En este estado, puede acceder a todas las funciones sin necesidad de iniciar sesión y configurar cookies.
./hackable/uploads/
: debe poder escribirse mediante el servicio web (para carga de archivos).
En sistemas Linux, probablemente se encuentre en /etc/php/xx/fpm/php.ini
o /etc/php/xx/apache2/php.ini
.
Para permitir inclusiones de archivos remotos (RFI):
allow_url_include = on
[allow_url_include]
allow_url_fopen = on
[allow_url_fopen]
Para asegurarse de que PHP muestre todos los mensajes de error:
display_errors = on
[display_errors]
display_startup_errors = on
[display_startup_errors]
Asegúrese de reiniciar el servicio php o Apache después de realizar los cambios.
Esto solo es necesario para la práctica de laboratorio "CAPTCHA inseguro". Si no estás jugando con esa práctica de laboratorio, puedes ignorar esta sección.
Generé un par de claves API desde https://www.google.com/recaptcha/admin/create.
Estos luego van en las siguientes secciones de ./config/config.inc.php
:
$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]
Nombre de usuario predeterminado = admin
Contraseña predeterminada = password
...puede ser fácilmente forzado de forma bruta;)
URL de inicio de sesión: http://127.0.0.1/login.php
Nota: Esto será diferente si instaló DVWA en un directorio diferente.
Estos suponen que estás en una distribución basada en Debian, como Debian, Ubuntu y Kali. Para otras distribuciones, siga las instrucciones, pero actualice el comando cuando corresponda.
Si está utilizando Docker Desktop, se puede acceder a los registros desde la aplicación gráfica. Algunos detalles menores pueden cambiar con las versiones más nuevas, pero el método de acceso debería ser el mismo.
También se puede acceder a los registros desde la terminal.
Abra una terminal y cambie su directorio de trabajo a DVWA
Mostrar los registros combinados
ventana acoplable componer registros
En caso de que desee exportar los registros a un archivo, por ejemplo, dvwa.log
Docker compone registros> dvwa.log
No utilizamos el puerto 80 de forma predeterminada por varias razones:
Es posible que algunos usuarios ya estén ejecutando algo en el puerto 80.
Es posible que algunos usuarios estén utilizando un motor de contenedor sin raíz (como Podman) y 80 es un puerto privilegiado (< 1024). Se requiere configuración adicional (por ejemplo, configurar net.ipv4.ip_unprivileged_port_start
), pero tendrá que investigar por su cuenta.
Puede exponer DVWA en un puerto diferente cambiando el enlace del puerto en el archivo compose.yml
. Por ejemplo, puedes cambiar
puertos: - 127.0.0.1:4280:80
a
puertos: - 127.0.0.1:8806:80
Ahora se puede acceder a DVWA en http://localhost:8806
.
En los casos en los que desee que DVWA no sólo sea accesible exclusivamente desde su propio dispositivo, sino también en su red local (por ejemplo, porque está configurando una máquina de prueba para un taller), puede eliminar el 127.0.0.1:
del puerto mapeo (o reemplácelo con su IP LAN). De esta manera escuchará en todos los dispositivos disponibles. El valor predeterminado seguro siempre debe ser escuchar únicamente en su dispositivo de loopback local. Después de todo, es una aplicación web muy vulnerable que se ejecuta en su máquina.
El archivo compose.yml
incluido ejecuta automáticamente DVWA y su base de datos cuando se inicia Docker.
Para deshabilitar esto, puede eliminar o comentar las líneas restart: unless-stopped
en el archivo compose.yml
.
Si desea deshabilitar este comportamiento temporalmente, puede ejecutar docker compose stop
o usar Docker Desktop, buscar dvwa
y hacer clic en Detener. Además, puede eliminar los contenedores o ejecutar docker compose down
.
En los sistemas Linux, Apache genera dos archivos de registro de forma predeterminada, access.log
y error.log
y en los sistemas basados en Debian, estos generalmente se encuentran en /var/log/apache2/
.
Al enviar informes de errores, problemas o cualquier cosa por el estilo, incluya al menos las últimas cinco líneas de cada uno de estos archivos. En sistemas basados en Debian puedes obtenerlos así:
cola -n 5 /var/log/apache2/access.log /var/log/apache2/error.log
Si tiene este problema, necesita comprender las ubicaciones de los archivos. De forma predeterminada, la raíz del documento de Apache (el lugar donde comienza a buscar contenido web) es /var/www/html
. Si coloca el archivo hello.txt
en este directorio, para acceder a él deberá buscar http://localhost/hello.txt
.
Si creó un directorio y colocó el archivo allí ( /var/www/html/mydir/hello.txt
), deberá buscar http://localhost/mydir/hello.txt
.
Por defecto, Linux distingue entre mayúsculas y minúsculas, por lo que en el ejemplo anterior, si intenta buscar cualquiera de estos, obtendrá un 404 Not Found
:
http://localhost/MyDir/hello.txt
http://localhost/mydir/Hello.txt
http://localhost/MYDIR/hello.txt
¿Cómo afecta esto a la DVWA? La mayoría de la gente usa git para clonar DVWA en /var/www/html
, esto les proporciona el directorio /var/www/html/DVWA/
con todos los archivos DVWA dentro de él. Luego navegan hasta http://localhost/
y obtienen un 404
o la página de bienvenida predeterminada de Apache. Como los archivos están en DVWA, debe buscar http://localhost/DVWA
.
El otro error común es buscar http://localhost/dvwa
lo que dará un 404
porque dvwa
no es DVWA
en lo que respecta a la coincidencia de directorios de Linux.
Entonces, después de la configuración, si intenta visitar el sitio y obtiene un 404
, piense en dónde instaló los archivos, dónde están en relación con la raíz del documento y cuál es el caso del directorio que utilizó.
Suele ser un problema de configuración que oculta otro problema. De forma predeterminada, PHP no muestra errores, por lo que si olvidó activar la visualización de errores durante el proceso de configuración, cualquier otro problema, como una falla al conectarse a la base de datos, detendrá la carga de la aplicación, pero aparecerá un mensaje que le indicará qué está mal se ocultará.
Para solucionar este problema, asegúrese de configurar display_errors
y display_startup_errors
como se describe en Configuración de PHP y luego reinicie Apache.
Si ve lo siguiente al ejecutar el script de configuración, significa que el nombre de usuario o la contraseña en el archivo de configuración no coinciden con los configurados en la base de datos:
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).
El error le indica que está utilizando el nombre de usuario notdvwa
.
El siguiente error indica que ha apuntado el archivo de configuración a la base de datos incorrecta.
SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'
Dice que está utilizando el usuario dvwa
e intentando conectarse a la base de datos notdvwa
.
Lo primero que debe hacer es verificar que lo que cree que puso en el archivo de configuración sea lo que realmente está allí.
Si coincide con lo que espera, lo siguiente que debe hacer es verificar que puede iniciar sesión como usuario en la línea de comando. Suponiendo que tiene un usuario de base de datos de dvwa
y una contraseña de p@ssw0rd
, ejecute el siguiente comando:
mysql -u dvwa -pp@ssw0rd -D dvwa
Nota: No hay espacio después de -p
Si ve lo siguiente, la contraseña es correcta:
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]>
Como puede conectarse en la línea de comando, es probable que haya algún problema en el archivo de configuración, verifíquelo dos veces y luego plantee un problema si aún no puede hacer que todo funcione.
Si ve lo siguiente, el nombre de usuario o la contraseña que está utilizando son incorrectos. Repita los pasos de configuración de la base de datos y asegúrese de utilizar el mismo nombre de usuario y contraseña durante todo el proceso.
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)
Si obtiene lo siguiente, las credenciales del usuario son correctas pero el usuario no tiene acceso a la base de datos. Nuevamente, repita los pasos de configuración y verifique el nombre de la base de datos que está utilizando.
ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'
El error final que podría obtener es este:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Esto no es un problema de autenticación, pero le indica que el servidor de la base de datos no se está ejecutando. Comience con lo siguiente
inicio del servicio sudo mysql
Un error similar a este:
Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/sites/dvwa/non-secure/htdocs/dvwa/includes/dvwaPage.inc.php:535
Significa que su servidor de base de datos no se está ejecutando o que tiene la dirección IP incorrecta en el archivo de configuración.
Verifique esta línea en el archivo de configuración para ver dónde se espera que esté el servidor de la base de datos:
$_DVWA[ 'db_server' ] = '127.0.0.1';
Luego vaya a este servidor y verifique que se esté ejecutando. En Linux esto se puede hacer con:
estado systemctl mariadb.servicio
Y estás buscando algo como esto, lo importante es que dice active (running)
.
● mariadb.service: servidor de base de datos MariaDB 10.5.19 Cargado: cargado (/lib/systemd/system/mariadb.service; habilitado; preestablecido: habilitado) Activo: activo (en ejecución) desde el jueves 2024-03-14 16:04:25 GMT; Hace 1 semana 5 días
Si no se está ejecutando, puedes iniciarlo con:
sudo systemctl detener mariadb.service
Tenga en cuenta el sudo
y asegúrese de ingresar su contraseña de usuario de Linux si se le solicita.
En Windows, verifique el estado en la consola XAMPP.
Con las versiones más recientes de MySQL, PHP ya no puede comunicarse con la base de datos en su configuración predeterminada. Si intenta ejecutar el script de configuración y recibe el siguiente mensaje, significa que tiene configuración.
Database Error #2054: The server requested authentication method unknown to the client.
Tienes dos opciones, la más sencilla es desinstalar MySQL e instalar MariaDB. La siguiente es la guía oficial del proyecto MariaDB:
https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-five-steps/
Alternativamente, siga estos pasos:
Como root, edite el siguiente archivo: /etc/mysql/mysql.conf.d/mysqld.cnf
Debajo de la línea [mysqld]
, agregue lo siguiente: default-authentication-plugin=mysql_native_password
Reinicie la base de datos: sudo service mysql restart
Verifique el método de autenticación para el usuario de su base de datos:
mysql> seleccione Host, Usuario, complemento de mysql.user donde mysql.user.User = 'dvwa';+-----------+-------------- ----+-----------------------+| Anfitrión | Usuario | complemento |+-----------+------------------+---------------- -------+| servidor local | dvva | caching_sha2_contraseña |+-----------+------------------+---------------- -------+1 filas en conjunto (0,00 segundos)
Probablemente verás caching_sha2_password
. Si lo hace, ejecute el siguiente comando:
mysql> ALTERAR USUARIO dvwa@localhost IDENTIFICADO CON mysql_native_password POR 'p@ssw0rd';
Al volver a ejecutar la verificación, ahora debería ver mysql_native_password
.
mysql> seleccione Host, Usuario, complemento de mysql.user donde mysql.user.User = 'dvwa';+-----------+------+------- ----------------+| Anfitrión | Usuario | complemento |+-----------+------+-----------------------+| servidor local | dvva | mysql_native_password |+-----------+------+-----------------------+1 fila en el conjunto (0,00 segundos)
Después de todo eso, el proceso de configuración debería funcionar normalmente.
Si desea más información consulte la siguiente página: https://www.php.net/manual/en/mysqli.requirements.php.
El servidor de la base de datos no se está ejecutando. En una distribución basada en Debian esto se puede hacer con:
inicio del servicio sudo mysql
Hay algunas razones por las que podría recibir estos errores, pero lo más probable es que la versión del servidor de base de datos que está ejecutando no sea compatible con la versión de PHP.
Esto ocurre más comúnmente cuando ejecuta la última versión de MySQL como PHP y no funciona bien. El mejor consejo es deshacerse de MySQL e instalar MariaDB, ya que esto no es algo que podamos admitir.
Para obtener más información, consulte:
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql- related-errors/
Es posible que Apache no tenga privilegios suficientes para ejecutar comandos en el servidor web. Si está ejecutando DVWA en Linux, asegúrese de haber iniciado sesión como root. En Windows, inicie sesión como Administrador.
Es posible que tenga problemas con SELinux. Deshabilite SELinux o ejecute este comando para permitir que el servidor web se comunique con la base de datos:
setsebool -P httpd_can_network_connect_db 1
Para obtener la información más reciente sobre solución de problemas, lea los tickets abiertos y cerrados en el repositorio de git:
https://github.com/digininja/DVWA/issues
Antes de enviar un ticket, asegúrese de estar ejecutando la última versión del código del repositorio. Esta no es la última versión, este es el código más reciente de la rama maestra.
Si presenta una multa, envíe al menos la siguiente información:
Sistema operativo
Las últimas 5 líneas del registro de errores del servidor web directamente después de que ocurra cualquier error que esté informando
Si se trata de un problema de autenticación de la base de datos, siga los pasos anteriores y haga una captura de pantalla de cada paso. Envíelos junto con una captura de pantalla de la sección del archivo de configuración que muestra el usuario y la contraseña de la base de datos.
Una descripción completa de lo que va mal, lo que espera que suceda y lo que ha intentado hacer para solucionarlo. "Inicio de sesión roto" no es suficiente para que podamos entender su problema y ayudarlo a solucionarlo.
Voy a intentar reunir algunos vídeos tutoriales que recorren algunas de las vulnerabilidades y muestran cómo detectarlas y luego cómo explotarlas. Aquí están los que he hecho hasta ahora:
Encontrar y explotar XSS reflejado
El soporte para esto es limitado, antes de plantear problemas, asegúrese de estar preparado para trabajar en la depuración, no diga simplemente "no funciona".
De forma predeterminada, SQLi y Blind SQLi se realizan en el servidor MariaDB/MySQL utilizado por el sitio, pero es posible cambiar para realizar las pruebas de SQLi en SQLite3.
No voy a cubrir cómo hacer que SQLite3 funcione con PHP, pero debería ser un caso simple: instalar el paquete php-sqlite3
y asegurarse de que esté habilitado.
Para realizar el cambio, simplemente edite el archivo de configuración y agregue o edite estas líneas:
$_DVWA["SQLI_DB"] = "sqlite";$_DVWA["SQLITE_DB"] = "sqli.db";
De forma predeterminada, utiliza el archivo database/sqli.db
, si lo estropea, simplemente copie database/sqli.db.dist
en la parte superior.
Los desafíos son exactamente los mismos que para MySQL, solo que se ejecutan contra SQLite3.
Gracias por todas sus contribuciones y por mantener este proyecto actualizado.
Si tienes una idea, algún tipo de mejora o simplemente quieres colaborar, eres bienvenido a contribuir y participar en el Proyecto, no dudes en enviar tu PR.
En pocas palabras, ¡no lo hagas!
Aproximadamente una vez al año, alguien enviará un informe sobre una vulnerabilidad que haya encontrado en la aplicación, algunos están bien escritos, a veces mejores de lo que he visto en los informes de pruebas de penetración pagados, algunos son simplemente "te faltan encabezados, paga". a mí".
En 2023, esto se elevó a un nivel completamente nuevo cuando alguien decidió solicitar un CVE para una de las vulnerabilidades y recibió CVE-2023-39848. Se produjo mucha hilaridad y se perdió tiempo corrigiendo esto.
La aplicación tiene vulnerabilidades, es deliberada. La mayoría son lecciones bien documentadas que usted utiliza como lecciones, otras son lecciones "ocultas", que puede encontrar por su cuenta. Si realmente desea mostrar sus habilidades para encontrar extras ocultos, escriba una publicación en un blog o cree un video, ya que probablemente haya personas que estarían interesadas en aprender sobre ellos y cómo los encontró. Si nos envías el enlace, es posible que incluso lo incluyamos en las referencias.
Inicio del proyecto: https://github.com/digininja/DVWA
Creado por el equipo de DVWA