【Linux下使用docker安装搭建DVWA】

0x01 关于 DAMN VULNERABLE WEB APPLICATION(DVWA)

  Damn Vulnerable Web Application (DVWA)(译注:可以直译为:"糟糕的"不安全Web应用程序),是一个编码差的、易受攻击的 PHP/MySQL Web应用程序。 它的主要目的是帮助信息安全专业人员在合法的环境中,练习技能和测试工具,帮助 Web 开发人员更好地了解如何加强 Web 应用程序的安全性,并帮助学生和教师在可控的教学环境中了解和学习 Web 安全技术。DVWA的目的是通过简单明了的界面来练习一些最常见的 Web 漏洞,所练习的漏洞具有不同的难度级别。请注意,此软件存在提示和无提示的漏洞。这是特意为止。我们鼓励您依靠自己的能力尝试并发现尽可能多的安全问题。
警告!
  DVWA非常容易被攻击!不要将其上传到您的云服务器上对外公开的 web 文件夹中或任何在公网中的web服务器上,否则服务器可能会被攻击。 建议使用虚拟机安装DVWA(如VirtualBox 或VMware),网络配置为NAT组网。若在windows客户机(guest machine)中,您可以下载并安装 XAMPP 用作搭建DVWA的 Web 服务和数据库服务。
免责声明
  我们不对任何人使用此应用程序 (DVWA) 的方式负责。 我们已经明确了应用程序的目的,该程序以及相关技术不应被恶意使用。 我们已警告并采取相关措施阻止用户将 DVWA 安装到生产环境的 Web 服务器上。 如果您的 Web 服务器因安装 DVWA 而被攻击,这不是我们的责任,而是由上传和安装它的人负责。

0x02 开始安装

  1. 运行docker version和docker compose version,查看是否正确安装了Docker和Docker Compose。您应该能够在输出中看到它们的版本。
>>> 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

如果你没有看到任何输出或得到一个命令未找到错误,请重新检查设置Docker和Docker Compose的安装运行条件。

  1. 克隆或下载此存储库并解压缩。
    虽然有各种版本的DVWA,但唯一支持的版本是来自官方GitHub存储库的最新源代码。您可以从repo中克隆它:
git clone https://github.com/digininja/DVWA.git

或者下载文件的ZIP(https://github.com/digininja/DVWA/archive/master.zip)。

  1. 打开您选择的终端并将其工作目录更改为此文件夹(DVWA)。
  2. 运行docker compose up -d。

DVWA现已在http://localhost:4280中运行。
请注意,在容器中运行DVWA时,Web服务器侦听的是端口4280,而不是通常的端口80。 有关端口设置的详细信息,请参考下文配置DVWA。

0x03 配置 DVWA

1. Config文件
  DVWA附带了其配置文件的虚拟副本,您需要将其复制到位,然后进行适当的更改。在Linux上,假设您位于DVWA目录中,可以按如下方式执行此操作:

cp config/config.inc.php.dist config/config.inc.php

2. 数据库设置

  要设置数据库,只需单击主菜单中的Setup DVWA按钮,然后单击Create / Reset Database按钮。这将为您创建/重置数据库,其中包含一些数据。
如果您在尝试创建数据库时收到错误,请确保您的数据库凭据在./config/config.inc.php中正确。这与config.inc.php.dist不同,后者是一个示例文件。
默认情况下,变量设置如下:

$_DVWA[ 'db_server'] = '127.0.0.1';
$_DVWA[ 'db_port'] = '3306';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'p@ssw0rd';
$_DVWA[ 'db_database' ] = 'dvwa';

  注意,如果你使用的是MariaDB而不是MySQL(MariaDB是Kali中的默认值),那么你不能使用数据库root用户,你必须创建一个新的数据库用户。要执行此操作,请以root用户身份连接到数据库,然后使用以下命令:

mysql> create database dvwa;
Query OK, 1 row affected (0.00 sec)mysql> create user dvwa@localhost identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)mysql> grant all on dvwa.* to dvwa@localhost;
Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3. 禁用身份验证
  有些工具没有很好的身份验证功能,因此不能用于DVWA测试。为了解决这个问题,有一个配置选项可以禁用身份验证检查。要做到这一点,只需在配置文件中设置以下内容:

$_DVWA[ 'disable_authentication' ] = true;

您还需要将安全级别设置为适合您要执行的测试的级别:

$_DVWA[ 'default_security_level' ] = 'low';

在这种状态下,您可以访问所有功能,而无需登录并设置任何Cookie。

4. 文件夹权限
./hackable/uploads/ -需要可由Web服务写入(用于文件上传)。

5. PHP配置
  在Linux系统上,可在/etc/php/x.x/fpm/php.ini或/etc/php/x.x/apache2/php.ini中找到配置文件。
要允许远程文件包含(RFI),请执行以下操作:
allow_url_include = on [allow_url_include]
allow_url_fopen = on [allow_url_fopen]
确保PHP显示所有错误消息:
display_errors = on [display_errors]
display_startup_errors = on [display_startup_errors]

请确保在进行更改后重新启动php服务或Apache。

6. reCAPTCHA
这是只需要为“不安全的验证码”实验设置。已从https://www.google.com/recaptcha/admin/create生成一对API密钥。然后,这些将在./config/config.inc.php的以下部分中进行设置:

$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]

如果连接不上,检查你的网络。

7. 默认登录凭证

默认用户名= admin
默认密码= password
登录网址:http://127.0.0.1/login.php
注意:如果您将DVWA安装到不同的目录中,则情况会有所不同。

0x04 故障排除

  这些假设你是基于Debian的发行版,如Debian,Ubuntu和Kali。对于其他发行版,请在适当的地方更新命令。
1. 容器

想查看日志
  如果您使用Docker Desktop,则可以从图形应用程序访问日志。 一些小细节可能会随着新版本而改变,但访问方法应该是相同的。
也可以从终端访问。打开一个终端并将其工作目录更改为DVWA,显示合并的日志:

docker compose logs

如果您想将日志导出到文件中,例如dvwa.log

docker compose logs >dvwa.log

想在不同的端口上运行DVWA
默认情况下我们不使用端口80,原因如下:
有些用户可能已经在端口80上运行了一些东西。
一些用户可能使用无根容器引擎(如Podman),80是特权端口(1024)。需要额外的配置(例如设置net.ipv4.ip_unprivileged_port_start),但须自行研究。
可以通过更改compose.yml文件中的端口绑定在不同的端口上公开DVWA。 例如,可以更改

ports:- 4280:80

到

ports:- 8806:80

DVWA现在可以在http://localhost:8806访问。

Docker运行时DVWA自动启动
包含的compose.yml文件在Docker启动时自动运行DVWA及其数据库。
要禁用此功能,您可以删除或注释掉restart: unless-stopped文件中的compose.yml行。
如果想暂时禁用此行为,可以运行docker compose stop,或使用Docker Desktop,找到dvwa并单击Stop。 此外,您可以删除容器,或运行docker compose down。

2. 日志文件

  在Linux系统上,Apache默认生成两个日志文件,access.log和error.log,而在基于Debian的系统上,它们通常位于/var/log/apache2/中。当检查错误报告,问题,任何类似的,请检查这些文件。在基于Debian的系统上,你可以像这样得到这些:

tail -n 5 /var/log/apache2/access.log /var/log/apache2/error.log

3. 浏览了一下网站,得到了404

  如果你有这个问题,你需要了解文件的位置。默认情况下,Apache文档根目录(它开始查找Web内容的位置)是/var/www/html。如果你把文件hello.txt放在这个目录中,要访问它,你需要浏览到http://localhost/hello.txt。如果您创建了一个目录并将文件放在其中- /var/www/html/mydir/hello.txt -则需要浏览到http://localhost/mydir/hello.txt。
Linux默认情况下区分大小写,因此在下面的示例中,如果您尝试浏览其中任何一个,您将获得404 Not Found:

    http://localhost/MyDir/hello.txthttp://localhost/mydir/Hello.txthttp://localhost/MYDIR/hello.txt

  大多数人使用git将DVWA导出到/var/www/html,这会给他们目录/var/www/html/DVWA/,其中包含所有DVWA文件。然后他们浏览到http://localhost/并获得404或默认Apache欢迎页面。由于这些文件位于DVWA中,因此您必须浏览到http://localhost/DVWA。
  因此,在安装之后,如果您尝试访问站点并获得404,请考虑您将文件安装到的位置,它们相对于文档根的位置以及您使用的目录的情况。

4. “Access denied”运行安装程序

  如果您在运行安装脚本时看到以下内容,则意味着配置文件中的用户名或密码与数据库中配置的用户名或密码不匹配:

Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).

错误是告诉你你正在使用用户名notdvwa。

下面的错误说明您将配置文件指向了错误的数据库。

SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'

它表示您正在使用用户dvwa并尝试连接到数据库notdvwa。
首先要做的是仔细检查你认为你放在配置文件中的是什么。
如果它符合您的期望,接下来要做的就是检查您是否可以在命令行上以用户身份登录。假设您的数据库用户为dvwa,密码为p@ssw0rd,运行以下命令:

mysql -u dvwa -pp@ssw0rd -D dvwa

注意:-p后面没有空格
如果您看到以下内容,则表明密码正确:

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.10Copyright (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]>

因为你可以在命令行上连接,所以很可能是配置文件中有问题,仔细检查一下。
如果您看到以下内容,则表示您使用的用户名或密码错误。重复数据库设置步骤,并确保在整个过程中使用相同的用户名和密码。

ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)

如果出现以下情况,则用户凭据是正确的,但用户没有访问数据库的权限。再次重复设置步骤并检查您正在使用的数据库名称。

ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'

你可能得到的最后一个错误是这样的:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

这不是身份验证问题,而是告诉您数据库服务没有运行。按以下内容开启

sudo service mysql start

5. 未知身份验证方法Unknown authentication method

在最新版本的MySQL中,PHP不能再与默认配置中的数据库对话。如果您尝试运行安装脚本并获得以下消息,则意味着您已配置。

Database Error #2054: The server requested authentication method unknown to the client.

有两个选择,最简单的是卸载MySQL并安装MariaDB。以下是MariaDB项目的官方指南:

https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-five-steps/

或者,按照以下步骤操作:
以root用户身份编辑以下文件:/etc/mysql/mysql.conf.d/mysqld.cnf
在第1行下,添加以下内容: [mysqld]
重新启动数据库:sudo service mysql restart
检查数据库用户的身份验证方法:

mysql> select Host,User, plugin from mysql.user where mysql.user.User = 'dvwa';
+-----------+------------------+-----------------------+
| Host      | User             | plugin                |
+-----------+------------------+-----------------------+
| localhost | dvwa             | caching_sha2_password |
+-----------+------------------+-----------------------+
1 rows in set (0.00 sec)

你可能会看到caching_sha2_password。如果这样,运行以下命令:

mysql> ALTER USER dvwa@localhost IDENTIFIED WITH mysql_native_password BY 'p@ssw0rd';

重新运行检查,您现在应该看到mysql_native_password。

mysql> select Host,User, plugin from mysql.user where mysql.user.User = 'dvwa';
+-----------+------+-----------------------+
| Host      | User | plugin                |
+-----------+------+-----------------------+
| localhost | dvwa | mysql_native_password |
+-----------+------+-----------------------+
1 row in set (0.00 sec)

在所有这一切之后,设置过程现在应该正常工作。

如果您想了解更多信息,请参阅以下页面:https://www.php.net/manual/en/mysqli.requirements.php。

6. 数据库错误#2002:没有这样的文件或目录(Database Error #2002: No such file or directory.)。

数据库服务器未运行。在基于Debian的发行版中,这可以通过以下方式完成:

sudo service mysql start

7. 错误“MySQL服务器已经断开”和“数据包的乱序”(MySQL server has gone away)(Packets out of order)

有几个原因可能会导致这些错误,但最有可能的是您运行的数据库服务器版本与PHP版本不兼容。
这是最常见的,当你为PHP运行最新版本的MySQL作数据库,它没有得到很好兼容。最好的建议,抛弃MySQL并安装MariaDB。
有关详细信息,请参阅:

https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-related-errors/

8. 命令注入不起作用

Apache可能没有足够高的权限在Web服务器上运行命令。如果您在Linux下运行DVWA,请确保以root身份登录。在Windows下以管理员身份登录。

9. 为什么数据库不能在CentOS上连接?

可能会遇到SELinux的问题。 禁用SELinux或运行此命令以允许Web服务器与数据库对话:

setsebool -P httpd_can_network_connect_db 1

10. 其他排查

对比操作系统
任何错误发生之后,检查Web服务器错误日志的最后5行
如果是数据库身份验证问题,请执行上述步骤并对每个步骤检查。沿着配置文件中显示数据库用户和密码的部分的检查。
一个完整检查是什么出了问题,思考你已经尝试做了什么来修复它。

11. SQLite3

默认情况下,SQLi和Blind SQLi是针对网站使用的MariaDB/MySQL服务器进行的,但也可以切换到针对SQLite3进行SQLi测试。
我不打算介绍如何让SQLite3与PHP一起工作,但它应该是一个安装php-sqlite3包并确保它被启用的简单案例。
要进行切换,只需编辑配置文件并添加或编辑以下行:

$_DVWA["SQLI_DB"] = "sqlite";
$_DVWA["SQLITE_DB"] = "sqli.db";

默认情况下,它使用文件database/sqli.db,如果出现错误了,只需复制database/sqli.db.dist重新覆盖初始设置。
实验与MySQL完全相同,它们只是针对SQLite3运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/597523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页在线预览编辑Office,支持doc/docx、xls/xlsx、ppt/pptx、pdf等格式

随着互联网技术的不断发展,越来越多的企业开始采用在线办公模式,微软Office Word 是最好用的文档编辑工具,然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的,如果可以实现Web在线预览编辑Of…

flink如何写入es

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、写入到Elasticsearch5二、写入到Elasticsearch7总结 前言 Flink sink 流数据写入到es5和es7的简单示例。 一、写入到Elasticsearch5 pom maven依赖 <d…

SpringBean的生命周期

SpringBean Bean的生命周期 1、首先需要明确bean对象与普通对象的区别: 对于普通的 Java 对象&#xff0c;当 new 的时候创建对象&#xff0c;然后该对象就能够使用了。一旦该对象不再被使用&#xff0c;则由 Java 自动进行垃圾回收。 而 Spring 中的对象是 bean&#xff0c;…

Gin 项目引入热加载

Gin 项目引入热加载 文章目录 Gin 项目引入热加载一、什么是热加载二、Air2.1 介绍2.2 特性特性&#xff1a;2.3 相关文档2.4 安装推荐使用 install.sh使用 go install 2.5 配置环境变量2.6 使用 三、Fresh3.1 介绍3.2 相关文档3.3 安装与使用 四、bee4.1 介绍4.2 相关文档4.3 …

天翼GPU-A10云主机安装英伟达CUDA12.2驱动并共享镜像

一、英伟达环境安装主要流程 1、下载安装对应系统版本nVidia驱动程序安装验证 2、CUDA开发套件安装验证 3、深度学习框架安装验证 4、容器化CUDA环境安装验证 5、制作天翼云主机私有镜像 6、分享镜像给其他用户&#xff0c;实现天翼云A10显卡英伟达驱动环境共享 二、详细…

Python 模块和包(1)

模块&#xff08;Modules&#xff09;&#xff0c;可以理解为是对代码更高级的封装&#xff0c;即把能够实现某一特定功能的代码编写在同一个文件中&#xff0c;其后缀名是.py。并将其作为一个独立的模块&#xff0c;这样既可以方便其它程序或脚本导入并使用&#xff0c;同时还…

WPF DatePicker与Calendar的使用和样式修改

什么是DatePicker&#xff0c;Calendar Calendar&#xff1a;日历&#xff08;显示年月日视图控件&#xff09;DatePicker&#xff1a;日期选择器&#xff08;是一个更小的控件&#xff0c;点击控件时才会弹出一个日历&#xff09; Calendar使用 常用属性 DisplayMode&#…

Linux_CentOS_7.9配置时区及NTPdate同步之简易记录

前言&#xff1a;ntpdate命令来自英文词组”NTPdate“的拼写&#xff0c;其功能是用于设置日期和时间。ntpdate命令能够基于NTP协议设置Linux系统的本地日期和时间&#xff0c;利用NTP服务的时钟过滤器来选择最优方案&#xff0c;大大提高了可靠性和精度&#xff0c;让系统时间…

2024,清洁家电卷向“全、智、廉、拓”与“出海”

文 | 智能相对论 作者 | 佘凯文 岁末&#xff0c;又到了一年一度盘点全年、筹划未来的重要节点。在今年经济大环境整体趋向稳定的背景中&#xff0c;许多行业都交还算过得去的成绩单&#xff0c;清洁家电正是其中一员。 特别是在整体家电大环境依旧严峻的前提下&#xff0c;…

Spring 面试题学习笔记整理

Spring 面试题学习笔记整理 Spring的理解IOC读取 xml注入 配置过程解析注解注入过程 高频 &#xff1a;IOC 理解 及原理 底层实现IoC的底层实现高频&#xff1a;Bean的生命周期&#xff08;图解&#xff09;高频&#xff1a;Bean的生命周期&#xff08;文解&#xff09;扩展知识…

【单片机项目实战】温度控制系统

本项目的主要作用是实现温度调控&#xff0c;通过设定一个预定的温度值&#xff0c;实现实时检测外界温度&#xff0c;当外界温度小于预定值时&#xff0c;电机正转&#xff0c;实现降温效果&#xff1b;当外界温度大于预定值时&#xff0c;电机反转&#xff0c;实现升温效果&a…

有详细一些的考研数学真题解析吗?

考研数学真题解析可以写得很详细&#xff0c;但是纸质资料可能受限于篇幅与排版等原因&#xff0c;没有把过程写得很详细。 但是&#xff0c;如果解析步骤不够详细的话&#xff0c;可能读者在看的时候就会因为其中某一个被省略的步骤而“卡壳”&#xff0c;进而需要花费很多额…

Linux驱动开发笔记(六):用户层与内核层进行数据传递的原理和Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/135384355 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

市场复盘总结 20240104

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: 方法一:指标选股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240104;方法二:趋势选股法 1、最低价持续3日上涨 2、均价…

YOLOv8改进 | 2023Neck篇 | 利用Gold-YOLO改进YOLOv8对小目标检测

一、本文介绍 本文给大家带来的改进机制是Gold-YOLO利用其Neck改进v8的Neck,GoLd-YOLO引入了一种新的机制——信息聚集-分发(Gather-and-Distribute, GD)。这个机制通过全局融合不同层次的特征并将融合后的全局信息注入到各个层级中,从而实现更高效的信息交互和融合。这种…

Spring之强大的DefaultListableBeanFactory

系列文章目录 如何查看类继承结构参考这里 文章目录 系列文章目录一、DefaultListableBeanFactory的类继承实现结构二、实现接口 一、DefaultListableBeanFactory的类继承实现结构 二、实现接口 AliasRegistry&#xff1a;支持别名功能&#xff0c;一个名字可以对应多个别名B…

【React系列】受控非受控组件

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. refs 的使用 在React的开发模式中&#xff0c;通常情况下不需要、也不建议直接操作DOM原生&#xff0c;但是某些…

在pycharm中执行 os.makedirs 提示用户名或密码不正确

问题&#xff1a;在pycharm中运行脚本&#xff0c;在 \10.0.21.249\share 共享目录下创建目录提示错误 发现&#xff1a;手动在该目录下创建目录没有问题。 解决方法&#xff1a; 切换到cmd 命令行运行该脚本成功创建 猜测&#xff1a;感觉应该是pycharm中使用的用户名和密码存…

蚂蚁矿机AntMiner T9+引出IO定义

这个板子只有s9的原理图参考&#xff0c;大部分一样但是也有很多改动。 下面是自己测出来的IO。全部为PL&#xff0c;没有PS引出。 共计56个引脚可用&#xff0c;但是不是都是完整的差分对&#xff0c;而且显然有些走线没办法高速跑。 测试方法 万用表先区分VCC GND和IO(对地…

python opencv怎么安装

1、安装python 注意&#xff1a;windows10 安装时强烈建议不用使用 Windows Store 安装。避免后期python运行时牵扯权限相关问题。 具体步骤&#xff1a; 1、前往python官网下载windows python 安装包 2、双击运行安装&#xff08;强力建议自定义安装&#xff0c;勾选pip&#…