Damn Vulnerable Web Application (DVWA) é um aplicativo web PHP/MySQL que é extremamente vulnerável. Seu principal objetivo é ajudar os profissionais de segurança a testar suas habilidades e ferramentas em um ambiente legal, ajudar os desenvolvedores web a entender melhor os processos de proteção de aplicações web e ajudar alunos e professores a aprender sobre segurança de aplicações web em uma aula controlada. ambiente da sala.
O objetivo do DVWA é praticar algumas das vulnerabilidades web mais comuns , com vários níveis de dificuldade , com uma interface simples e direta. Observe que existem vulnerabilidades documentadas e não documentadas neste software. Isso é intencional. Você é incentivado a tentar descobrir o maior número possível de problemas.
Maldito aplicativo da Web vulnerável é muito vulnerável! Não carregue-o na pasta HTML pública do seu provedor de hospedagem ou em qualquer servidor voltado para a Internet , pois eles serão comprometidos. É recomendado usar uma máquina virtual (como VirtualBox ou VMware), configurada para modo de rede NAT. Dentro de uma máquina convidada, você pode baixar e instalar o XAMPP para o servidor web e banco de dados.
Não nos responsabilizamos pela forma como alguém utiliza este aplicativo (DVWA). Deixamos claros os objetivos do aplicativo e ele não deve ser usado de forma maliciosa. Demos avisos e tomamos medidas para evitar que os usuários instalem o DVWA em servidores web ativos. Se o seu servidor web for comprometido através de uma instalação do DVWA, não é nossa responsabilidade, é responsabilidade da(s) pessoa(s) que o carregou e instalou.
Este arquivo faz parte do Damn Vulnerable Web Application (DVWA).
Damn Vulnerable Web Application (DVWA) é um software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU publicada pela Free Software Foundation, versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
Damn Vulnerable Web Application (DVWA) é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.
Você deveria ter recebido uma cópia da Licença Pública Geral GNU junto com o Damn Vulnerable Web Application (DVWA). Caso contrário, consulte https://www.gnu.org/licenses/.
Este arquivo está disponível em vários idiomas:
Árabe: العربية
Chinês: 简体中文
Francês: Français
Coreano: 한국어
Persa: فارسی
Polonês: Polski
Português: Português
Espanhol: Espanhol
Turco: Türkçe
Indonésia: Indonésia
Vietnamita: vietnamita
Se você gostaria de contribuir com uma tradução, envie um PR. Observe, porém, que isso não significa apenas executá-lo no Google Tradutor e enviá-lo, pois eles serão rejeitados. Envie sua versão traduzida adicionando um novo arquivo 'README.xx.md' onde xx é o código de duas letras do idioma desejado (com base na ISO 639-1).
Embora existam várias versões do DVWA, a única versão suportada é a fonte mais recente do repositório oficial do GitHub. Você pode cloná-lo no repositório:
clone do git https://github.com/digininja/DVWA.git
Ou baixe um ZIP dos arquivos.
Observe que este não é um script DVWA oficial, foi escrito por IamCarron. Muito trabalho foi necessário para criar o script e, quando ele foi criado, ele não fez nada malicioso, porém é recomendável que você revise o script antes de executá-lo cegamente em seu sistema, apenas para garantir. Por favor, reporte quaisquer bugs para IamCarron, não aqui.
Um script de configuração automatizada para DVWA em máquinas baseadas em Debian, incluindo Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS...
Nota: Este script requer privilégios de root e é adaptado para sistemas baseados em Debian. Certifique-se de executá-lo como usuário root.
Sistema operacional: sistema baseado em Debian (Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS)
Privilégios: Executar como usuário root
Isso fará o download de um script de instalação escrito por @IamCarron e o executará automaticamente. Isso não seria incluído aqui se não confiássemos no autor e no script como era quando o revisamos, mas sempre há a chance de alguém se tornar desonesto e, portanto, se você não se sentir seguro executando o código de outra pessoa sem revisar faça você mesmo, siga o processo manual e poderá revisá-lo depois de baixado.
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
Baixe o roteiro:
wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
Torne o script executável:
chmod +x Instalar-DVWA.sh
Execute o script como root:
sudo ./Install-DVWA.sh
Instalando DVWA no Kali rodando no VirtualBox
Instalando DVWA no Windows usando XAMPP
Instalando o maldito aplicativo da Web vulnerável (DVWA) no Windows 10
A maneira mais fácil de instalar o DVWA é baixar e instalar o XAMPP se você ainda não tiver um servidor web configurado.
XAMPP é uma distribuição Apache muito fácil de instalar para Linux, Solaris, Windows e Mac OS X. O pacote inclui o servidor web Apache, MySQL, PHP, Perl, um servidor FTP e phpMyAdmin.
Este vídeo orienta você no processo de instalação do Windows, mas deve ser semelhante para outros sistemas operacionais.
Graças ao próprio hoang e JGillam, cada commit no branch master
faz com que uma imagem Docker seja construída e pronta para ser retirada do GitHub Container Registry.
Para obter mais informações sobre o que você está obtendo, você pode navegar pelas imagens pré-construídas do Docker.
Pré-requisitos: Docker e Docker Compose.
Se você estiver usando o Docker Desktop, ambos já deverão estar instalados.
Se você preferir o Docker Engine no Linux, siga o guia de instalação.
Fornecemos suporte para a versão mais recente do Docker, conforme mostrado acima. Se você estiver usando Linux e o pacote Docker que acompanha seu gerenciador de pacotes, provavelmente também funcionará, mas o suporte será apenas o melhor esforço.
Atualizar o Docker da versão do gerenciador de pacotes para o upstream requer que você desinstale as versões antigas, conforme visto em seus manuais para Ubuntu, Fedora e outros. Seus dados do Docker (contêineres, imagens, volumes, etc.) não devem ser afetados, mas caso você tenha algum problema, informe o Docker e use os mecanismos de pesquisa nesse meio tempo.
Então, para começar:
Execute docker version
e docker compose version
para ver se o Docker e o Docker Compose estão instalados corretamente. Você deverá poder ver suas versões na saída.
Por exemplo:
>>> 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
Se você não vir nada ou receber um erro de comando não encontrado, siga os pré-requisitos para configurar o Docker e o Docker Compose.
Clone ou baixe este repositório e extraia (veja Download).
Abra um terminal de sua escolha e mude seu diretório de trabalho para esta pasta ( DVWA
).
Execute docker compose up -d
.
DVWA agora está disponível em http://localhost:4280
.
Observe que para executar o DVWA em contêineres, o servidor web está escutando na porta 4280 em vez da porta 80 normal. Para obter mais informações sobre esta decisão, consulte Quero executar o DVWA em uma porta diferente.
Se você fez alterações locais e deseja construir o projeto a partir do local, vá para compose.yml
e altere pull_policy: always
para pull_policy: build
.
A execução docker compose up -d
deve acionar o Docker para construir uma imagem local, independentemente do que estiver disponível no registro.
Veja também: pull_policy
.
Idealmente, você deve usar a versão estável mais recente do PHP, pois é nessa versão que este aplicativo será desenvolvido e testado.
Não será dado suporte para quem tentar usar o PHP 5.x.
Versões inferiores a 7.3 têm problemas conhecidos que causarão problemas, a maior parte do aplicativo funcionará, mas coisas aleatórias talvez não. A menos que você tenha um bom motivo para usar uma versão tão antiga, o suporte não será fornecido.
Se você estiver usando uma distribuição Linux baseada em Debian, você precisará instalar os seguintes pacotes (ou equivalentes) :
apache2
libapache2-mod-php
servidor mariadb
cliente mariadb
php php-mysqli
php-gd
Eu recomendaria fazer uma atualização antes disso, apenas para ter certeza de que obterá a versão mais recente de tudo.
atualização adequada apt install -y apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php
O site funcionará com MySQL em vez de MariaDB, mas recomendamos fortemente o MariaDB, pois funciona imediatamente, enquanto você precisa fazer alterações para que o MySQL funcione corretamente.
O DVWA vem com uma cópia fictícia de seu arquivo de configuração que você precisará copiar e fazer as alterações apropriadas. No Linux, supondo que você esteja no diretório DVWA, isso pode ser feito da seguinte forma:
cp config/config.inc.php.dist config/config.inc.php
No Windows, isso pode ser um pouco mais difícil se você estiver ocultando extensões de arquivo. Se não tiver certeza sobre isso, esta postagem do blog explica mais sobre isso:
Como fazer o Windows mostrar extensões de arquivo
Em vez de modificar o arquivo de configuração, você também pode definir a maioria das configurações usando variáveis de ambiente. Em uma implantação do Docker ou Kubernetes, isso permite modificar a configuração sem criar uma nova imagem do Docker. Você encontrará as variáveis no arquivo config/config.inc.php.dist.
Se você deseja definir o nível de segurança padrão como "baixo", basta adicionar a seguinte linha ao arquivo compose.yml:
ambiente: -DB_SERVER=db - DEFAULT_SECURITY_LEVEL=baixo
Para configurar o banco de dados, basta clicar no botão Setup DVWA
no menu principal e, em seguida, clicar no botão Create / Reset Database
. Isso criará/redefinirá o banco de dados para você com alguns dados.
Se você receber um erro ao tentar criar seu banco de dados, certifique-se de que suas credenciais de banco de dados estejam corretas em ./config/config.inc.php
. Isso difere de config.inc.php.dist, que é um arquivo de exemplo.
As variáveis são definidas como a seguir por padrão:
$_DVWA[ 'db_server'] = '127.0.0.1';$_DVWA[ 'db_port'] = '3306';$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd ';$_DVWA[ 'db_database' ] = 'dvwa';
Observe que se você estiver usando MariaDB em vez de MySQL (MariaDB é o padrão no Kali), então você não pode usar o usuário root do banco de dados, você deve criar um novo usuário de banco de dados. Para fazer isso, conecte-se ao banco de dados como usuário root e use os seguintes 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)
Algumas ferramentas não funcionam bem com autenticação, portanto não podem ser usadas com DVWA. Para contornar isso, existe uma opção de configuração para desabilitar a verificação de autenticação. Para fazer isso, basta definir o seguinte no arquivo de configuração:
$_DVWA[ 'disable_authentication'] = verdadeiro;
Você também precisará definir o nível de segurança apropriado para o teste que deseja fazer:
$_DVWA[ 'default_security_level' ] = 'baixo';
Neste estado, você pode acessar todos os recursos sem precisar fazer login e definir cookies.
./hackable/uploads/
- Precisa ser gravável pelo serviço da web (para upload de arquivo).
Em sistemas Linux, provavelmente encontrado em /etc/php/xx/fpm/php.ini
ou /etc/php/xx/apache2/php.ini
.
Para permitir inclusões remotas de arquivos (RFI):
allow_url_include = on
[allow_url_include]
allow_url_fopen = on
[allow_url_fopen]
Para garantir que o PHP mostre todas as mensagens de erro:
display_errors = on
[display_errors]
display_startup_errors = on
[display_startup_errors]
Certifique-se de reiniciar o serviço php ou Apache após fazer as alterações.
Isso só é necessário para o laboratório "Captcha inseguro". Se você não estiver brincando com esse laboratório, poderá ignorar esta seção.
Gerou um par de chaves de API em https://www.google.com/recaptcha/admin/create.
Eles então vão para as seguintes seções de ./config/config.inc.php
:
$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]
Nome de usuário padrão = admin
Senha padrão = password
... pode facilmente ser forçado de forma bruta;)
URL de login: http://127.0.0.1/login.php
Nota: Isso será diferente se você instalou o DVWA em um diretório diferente.
Isso pressupõe que você esteja em uma distribuição baseada em Debian, como Debian, Ubuntu e Kali. Para outras distros, siga em frente, mas atualize o comando quando apropriado.
Se você estiver usando o Docker Desktop, os logs poderão ser acessados a partir do aplicativo gráfico. Alguns pequenos detalhes podem mudar com versões mais recentes, mas o método de acesso deve ser o mesmo.
Os logs também podem ser acessados a partir do terminal.
Abra um terminal e mude seu diretório de trabalho para DVWA
Mostrar os logs mesclados
docker compor logs
Caso você queira exportar os logs para um arquivo, por exemplo, dvwa.log
docker compor logs > dvwa.log
Não usamos a porta 80 por padrão por alguns motivos:
Alguns usuários já podem estar executando algo na porta 80.
Alguns usuários podem estar usando um mecanismo de contêiner sem root (como Podman) e 80 é uma porta privilegiada (<1024). Configuração adicional (por exemplo, configuração net.ipv4.ip_unprivileged_port_start
) é necessária, mas você terá que pesquisar por conta própria.
Você pode expor o DVWA em uma porta diferente alterando a ligação da porta no arquivo compose.yml
. Por exemplo, você pode alterar
portos: -127.0.0.1:4280:80
para
portos: -127.0.0.1:8806:80
DVWA agora está acessível em http://localhost:8806
.
Nos casos em que você deseja que o DVWA não seja acessível exclusivamente a partir do seu próprio dispositivo, mas também na sua rede local (por exemplo, porque você está configurando uma máquina de teste para uma oficina), você pode remover o 127.0.0.1:
da porta mapeamento (ou substitua-o pelo IP da sua LAN). Dessa forma ele ouvirá em todos os dispositivos disponíveis. O padrão seguro deve ser sempre escutar apenas no seu dispositivo de loopback local. Afinal, é um aplicativo web extremamente vulnerável, rodando em sua máquina.
O arquivo compose.yml
incluído executa automaticamente o DVWA e seu banco de dados quando o Docker é iniciado.
Para desabilitar isso, você pode excluir ou comentar as linhas restart: unless-stopped
no arquivo compose.yml
.
Se quiser desabilitar esse comportamento temporariamente, você pode executar docker compose stop
ou usar o Docker Desktop, encontrar dvwa
e clicar em Parar. Além disso, você pode excluir os contêineres ou executar docker compose down
.
Em sistemas Linux, o Apache gera dois arquivos de log por padrão, access.log
e error.log
e em sistemas baseados em Debian, eles geralmente são encontrados em /var/log/apache2/
.
Ao enviar relatórios de erros, problemas, qualquer coisa assim, inclua pelo menos as últimas cinco linhas de cada um desses arquivos. Em sistemas baseados em Debian você pode obter isto assim:
tail -n 5 /var/log/apache2/access.log /var/log/apache2/error.log
Se você estiver tendo esse problema, precisará entender a localização dos arquivos. Por padrão, a raiz do documento Apache (o local onde ele começa a procurar conteúdo da web) é /var/www/html
. Se você colocar o arquivo hello.txt
neste diretório, para acessá-lo você navegaria até http://localhost/hello.txt
.
Se você criou um diretório e colocou o arquivo nele - /var/www/html/mydir/hello.txt
- você precisará navegar até http://localhost/mydir/hello.txt
.
O Linux diferencia maiúsculas de minúsculas por padrão e, portanto, no exemplo acima, se você tentasse navegar para qualquer um deles, obteria um 404 Not Found
:
http://localhost/MyDir/hello.txt
http://localhost/mydir/Hello.txt
http://localhost/MYDIR/hello.txt
Como isso afeta o DVWA? A maioria das pessoas usa git para clonar DVWA em /var/www/html
, isso fornece o diretório /var/www/html/DVWA/
com todos os arquivos DVWA dentro dele. Eles então navegam para http://localhost/
e obtêm uma 404
ou a página de boas-vindas padrão do Apache. Como os arquivos estão em DVWA, você deve navegar até http://localhost/DVWA
.
O outro erro comum é navegar para http://localhost/dvwa
que dará um 404
porque dvwa
não é DVWA
no que diz respeito à correspondência de diretórios do Linux.
Portanto, após a configuração, se você tentar visitar o site e obter um 404
, pense em onde você instalou os arquivos, onde eles estão em relação à raiz do documento e qual é o caso do diretório que você usou.
Geralmente, esse é um problema de configuração que esconde outro problema. Por padrão, o PHP não exibe erros e, portanto, se você esqueceu de ativar a exibição de erros durante o processo de configuração, quaisquer outros problemas, como falha na conexão ao banco de dados, interromperão o carregamento do aplicativo, mas a mensagem informará o que está errado ficará oculto.
Para corrigir isso, certifique-se de definir display_errors
e display_startup_errors
conforme abordado na configuração do PHP e reinicie o Apache.
Se você vir o seguinte ao executar o script de configuração, significa que o nome de usuário ou a senha no arquivo de configuração não correspondem aos configurados no banco de dados:
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).
O erro está informando que você está usando o nome de usuário notdvwa
.
O erro a seguir indica que você apontou o arquivo de configuração para o banco de dados errado.
SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'
Está dizendo que você está usando o usuário dvwa
e tentando se conectar ao banco de dados notdvwa
.
A primeira coisa a fazer é verificar o que você acha que colocou no arquivo de configuração e o que realmente está lá.
Se corresponder ao que você espera, a próxima coisa a fazer é verificar se você pode fazer login como usuário na linha de comando. Supondo que você tenha um usuário de banco de dados dvwa
e uma senha p@ssw0rd
, execute o seguinte comando:
mysql -u dvwa -pp@ssw0rd -D dvwa
Nota: Não há espaço após o -p
Se você vir o seguinte, a senha está correta:
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 você pode se conectar na linha de comando, provavelmente há algo errado no arquivo de configuração, verifique isso e levante um problema se ainda não conseguir fazer as coisas funcionarem.
Se você vir o seguinte, o nome de usuário ou senha que você está usando está errado. Repita as etapas de configuração do banco de dados e certifique-se de usar o mesmo nome de usuário e senha durante todo o processo.
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)
Se você obtiver o seguinte, as credenciais do usuário estão corretas, mas o usuário não tem acesso ao banco de dados. Novamente, repita as etapas de configuração e verifique o nome do banco de dados que você está usando.
ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'
O erro final que você pode obter é este:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Este não é um problema de autenticação, mas indica que o servidor de banco de dados não está em execução. Comece com o seguinte
serviço sudo mysql iniciar
Um erro semelhante 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 seu servidor de banco de dados não está funcionando ou que você possui o endereço IP errado no arquivo de configuração.
Verifique esta linha no arquivo de configuração para ver onde se espera que o servidor de banco de dados esteja:
$_DVWA[ 'servidor_db' ] = '127.0.0.1';
Em seguida, vá para este servidor e verifique se ele está funcionando. No Linux isso pode ser feito com:
status do systemctl mariadb.service
E você está procurando algo assim, o importante é que diz active (running)
.
● mariadb.service - servidor de banco de dados MariaDB 10.5.19 Carregado: carregado (/lib/systemd/system/mariadb.service; ativado; predefinido: ativado) Ativo: ativo (em execução) desde quinta-feira, 14/03/2024, 16:04:25 GMT; 1 semana, 5 dias atrás
Se não estiver em execução, você pode iniciá-lo com:
sudo systemctl pare mariadb.service
Observe o sudo
e certifique-se de inserir sua senha de usuário Linux, se solicitado.
No Windows, verifique o status no console do XAMPP.
Com as versões mais recentes do MySQL, o PHP não consegue mais se comunicar com o banco de dados em sua configuração padrão. Se você tentar executar o script de configuração e receber a seguinte mensagem, significa que você tem configuração.
Database Error #2054: The server requested authentication method unknown to the client.
Você tem duas opções, a mais fácil é desinstalar o MySQL e instalar o MariaDB. A seguir está o guia oficial do projeto MariaDB:
https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-five-steps/
Como alternativa, siga estas etapas:
Como root, edite o seguinte arquivo: /etc/mysql/mysql.conf.d/mysqld.cnf
Abaixo da linha [mysqld]
, adicione o seguinte: default-authentication-plugin=mysql_native_password
Reinicie o banco de dados: sudo service mysql restart
Verifique o método de autenticação do usuário do seu banco de dados:
mysql> selecione Host, Usuário, plugin de mysql.user onde mysql.user.User = 'dvwa';+-----------+-------------- ----+-----------------------+| Anfitrião | Usuário | plug-in |+-----------+------------------+---------------- -------+| host local | dvwa | caching_sha2_password |+-----------+--------------------------------+---------------- -------+1 linhas no conjunto (0,00 seg)
Você provavelmente verá caching_sha2_password
. Se você fizer isso, execute o seguinte comando:
mysql> ALTER USER dvwa@localhost IDENTIFICADO COM mysql_native_password BY 'p@ssw0rd';
Executando novamente a verificação, você deverá ver agora mysql_native_password
.
mysql> selecione Host, Usuário, plugin de mysql.user onde mysql.user.User = 'dvwa';+-----------+------+------- ----------------+| Anfitrião | Usuário | plug-in |+-----------+------+--------------------------+| host local | dvwa | mysql_native_password |+-----------+------+-----------------------+1 linha no conjunto (0,00 seg)
Depois de tudo isso, o processo de configuração deve funcionar normalmente.
Se quiser mais informações consulte a seguinte página: https://www.php.net/manual/en/mysqli.requirements.php.
O servidor de banco de dados não está em execução. Em uma distribuição baseada em Debian, isso pode ser feito com:
serviço sudo mysql iniciar
Existem alguns motivos pelos quais você pode estar recebendo esses erros, mas o mais provável é que a versão do servidor de banco de dados que você está executando não seja compatível com a versão do PHP.
Isso é mais comumente encontrado quando você está executando a versão mais recente do MySQL como PHP e não funciona bem. Melhor conselho, abandone o MySQL e instale o MariaDB, pois isso não é algo que possamos suportar.
Para obter mais informações, consulte:
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-related-errors/
O Apache pode não ter privilégios altos o suficiente para executar comandos no servidor web. Se você estiver executando o DVWA no Linux, certifique-se de estar logado como root. No Windows, faça login como administrador.
Você pode estar tendo problemas com o SELinux. Desative o SELinux ou execute este comando para permitir que o servidor web se comunique com o banco de dados:
setsebool -P httpd_can_network_connect_db 1
Para obter as informações mais recentes sobre solução de problemas, leia os tickets abertos e fechados no repositório git:
https://github.com/digininja/DVWA/issues
Antes de enviar um ticket, certifique-se de estar executando a versão mais recente do código do repositório. Esta não é a versão mais recente, é o código mais recente do branch master.
Ao levantar um ticket, envie pelo menos as seguintes informações:
Sistema operacional
As últimas 5 linhas do log de erros do servidor web diretamente após a ocorrência de qualquer erro que você está relatando
Se for um problema de autenticação de banco de dados, siga as etapas acima e faça uma captura de tela de cada etapa. Envie-os junto com uma captura de tela da seção do arquivo de configuração mostrando o usuário e a senha do banco de dados.
Uma descrição completa do que está errado, o que você espera que aconteça e o que você tentou fazer para consertar. "login quebrado" não é suficiente para entendermos o seu problema e ajudarmos a corrigi-lo.
Vou tentar reunir alguns vídeos tutoriais que abordam algumas das vulnerabilidades e mostram como detectá-las e como explorá-las. Aqui estão os que fiz até agora:
Encontrando e explorando XSS refletido
O suporte para isso é limitado. Antes de levantar problemas, certifique-se de estar preparado para trabalhar na depuração, não diga simplesmente "não funciona".
Por padrão, SQLi e Blind SQLi são feitos no servidor MariaDB/MySQL usado pelo site, mas é possível alternar para fazer o teste SQLi no SQLite3.
Não vou abordar como fazer o SQLite3 funcionar com PHP, mas deve ser um simples caso de instalar o pacote php-sqlite3
e certificar-se de que ele está habilitado.
Para fazer a troca, basta editar o arquivo de configuração e adicionar ou editar estas linhas:
$_DVWA["SQLI_DB"] = "sqlite";$_DVWA["SQLITE_DB"] = "sqli.db";
Por padrão ele usa o arquivo database/sqli.db
, se você errar, basta copiar database/sqli.db.dist
por cima.
Os desafios são exatamente os mesmos do MySQL, apenas executados no SQLite3.
Obrigado por todas as suas contribuições e por manter este projeto atualizado.
Se você tem uma ideia, algum tipo de melhoria ou simplesmente deseja colaborar, fique à vontade para contribuir e participar do Projeto, fique à vontade para enviar seu PR.
Para simplificar, por favor, não faça isso!
Mais ou menos uma vez por ano, alguém enviará um relatório sobre uma vulnerabilidade que encontrou no aplicativo, alguns são bem escritos, às vezes melhores do que vi em relatórios de pen test pagos, alguns são apenas "faltam cabeçalhos, pague meu".
Em 2023, isso foi elevado a um nível totalmente novo quando alguém decidiu solicitar um CVE para uma das vulnerabilidades, recebeu o CVE-2023-39848. Seguiu-se muita hilaridade e tempo foi perdido para corrigir isso.
O aplicativo tem vulnerabilidades, é proposital. A maioria são aquelas bem documentadas que você trabalha como lições, outras são aquelas "ocultas", que você pode encontrar por conta própria. Se você realmente deseja mostrar suas habilidades em encontrar extras ocultos, escreva uma postagem no blog ou crie um vídeo, pois provavelmente há pessoas por aí que estariam interessadas em aprender sobre eles e como você os encontrou. Se você nos enviar o link, poderemos até incluí-lo nas referências.
Página inicial do projeto: https://github.com/digininja/DVWA
Criado pela equipe DVWA