![网络攻防实战研究:MySQL数据库安全](https://wfqqreader-1252317822.image.myqcloud.com/cover/600/34171600/b_34171600.jpg)
1.2 搭建DVWA渗透测试平台
在进行MySQL安全研究时,可以选择一些漏洞测试平台进行演练,笔者推荐DVWA和sqli-labs(见链接1-1)。
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用程序,旨在为安全人员测试自己的专业技能和工具提供合法的环境,帮助Web开发者更好地理解Web应用安全防范的过程,提供安全的Web应用程序学习环境。DVWA的官方网站见链接1-2,代码下载地址见链接1-3。
DVWA共有十个模块,具体如下。
· Brute Force:暴力破解。
· Command Injection:命令行注入。
· CSRF:跨站请求伪造。
· File Inclusion:文件包含。
· File Upload:文件上传。
· Insecure CAPTCHA:不安全的验证码,需要Google支持。
· SQL Injection:SQL注入。
· SQL Injection(Blind):SQL盲注。
· XSS(Reflected):反射型跨站脚本。
· XSS(Stored):存储型跨站脚本。
需要注意的是,DVWA 1.9的代码分为Low、Medium、High和Impossible四种安全级别,初学者可以通过比较四种级别的代码,了解一些与PHP代码审计有关的内容。本书着重推荐DVWA,下面分别对在Windows和Kali上安装DVWA进行介绍。
1.2.1 在Windows上搭建DVWA渗透测试平台
1.准备工作
(1)下载DVWA
见链接1-4。
(2)下载phpStudy
见链接1-5、链接1-6。
可以下载phpStudy 2016版本,也可以下载phpStudy 2017及以上版本。phpStudy 2017及以上版本可以在Windows 10中使用。
2.安装软件
(1)安装phpStudy
按照软件提示信息即可安装phpStudy。既可以按照默认的方式安装,也可以自定义安装。
(2)解压和复制
将解压的DVWA文件复制到安装phpStudy时指定的www文件夹下。
(3)设置php.ini参数
运行phpStudy,根据操作系统平台选择相应的架构。例如,本例使用的是Windows服务器操作系统,则选择Apache+PHP 5.45。单击“运行模式”→“切换版本”选项,就可以选择架构了。然后,选择对应的PHP版本所在的目录,如图1-20所示,找到php.ini文件,将参数由“allow_url_include=Off”修改为“allow_url_include=On”,以便对本地文件包含漏洞进行测试。保存修改,重启Apache服务器。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_29_1.jpg?sign=1738839888-teH9J2PzfladbGGE950ITNf0LSoDfrSt-0-2b509749b772cbbc70ddb3c6305550d6)
图1-20 修改php.ini参数
(4)修改DVWA数据库配置文件
将C:\phpstudy\WWW\dvwa\config\下的config.inc.php.dist文件重命名为“config.inc.php”,修改其中的数据库配置为实际的值。在本例中,MySQL数据库的root账户的密码为root,因此修改值如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_29_2.jpg?sign=1738839888-9KsbFfaCVlrYZIKgPkEcbzJfYo4e0sEq-0-7b2c5b9f89a4167f04c7602dc0acb630)
3.安装数据库并进行测试
输入“cmd”和“ipconfig”命令,获取本机IP地址。可以使用本例中的地址http://192.168.157.130/dvwa/setup.php安装DVWA,也可以使用localhost/dvwa/setup.php安装DVWA。如图1-21所示,根据提示信息完成安装。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_29_3.jpg?sign=1738839888-HKHQHmXXV13Jh9UYKY1hVLQZrX45S5sp-0-b41b4c1e12f7d3459fac5e91fa72b305)
图1-21 安装DVWA
安装后,系统会自动跳转到登录页面http://192.168.157.130/dvwa/login.php,默认登录账号/密码为admin/password。登录后,需要设置“DVWA Security”安全级别,然后进行漏洞测试。如图1-22所示,选择对应级别后提交即可。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_1.jpg?sign=1738839888-6zsK10FXHWyebPCfOu2Rm56QmA9LHziz-0-3cd75173eb8ae012e9972012e9874261)
图1-22 选择安全级别进行测试
1.2.2 在Kali上安装DVWA渗透测试平台
1.在Kali 2016上安装DVWA渗透测试平台
在Kali 2017及以上版本上安装DVWA时会遇到一些问题:因为其默认使用PHP 7.0版本,所以与DVWA环境有些不匹配(在Kali 2016中则可以匹配)。下面介绍如何在Kali 2016上安装DVWA渗透测试平台。
(1)下载Kali Linux 2.0
如果时间比较充裕,你可以自己练习,先安装虚拟机,再安装Kali Linux 2.0。如果你已经熟练掌握虚拟机的安装,使用现成的虚拟机是一个不错的选择。Kali官方网站目前已经不提供Kali Linux 2.0的下载服务了。可以访问btdig网站搜索并下载Kali Linux,见链接1-7、链接1-8。
下载后进行解压,然后通过VMware打开该虚拟机,即可使用。
(2)下载DVWA
DVWA较新的稳定版本为1.90,下载命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_2.jpg?sign=1738839888-WXO7ILqOlfp0518eFtYqmt5iq6IeK6hq-0-b5243af3522bc2dd98755d644660528c)
(3)搭建平台
停止Apache 2的工作,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_3.jpg?sign=1738839888-wVtE58HlqFJcCDON248lySrAl7L0lclb-0-457ec9c2d8b8104642fe07c785492f09)
赋予dvwa文件夹相应的权限,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_4.jpg?sign=1738839888-lkzdmt8DBJAAQaAbJGOXavfXMgq78tGv-0-a1bded25b5658b41cc92d0955601411d)
开启MySQL服务,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_1.jpg?sign=1738839888-FnqUa3kabFbuGtV3ipQnFn3MYKqAZlf9-0-b0e45f3ea1c81806e129c94bac52741c)
如图1-23所示,创建DVWA数据库。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_2.jpg?sign=1738839888-SHGdh5NNCB1WAEE1LBuEICuATJ64RUD7-0-1455c115fd552f609e0a13dfd54bd252)
图1-23 在Kali中创建DVWA数据库
配置php-gd支持,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_3.jpg?sign=1738839888-RscLBtDgOBXEYD9MqgMBFiyKEWnCln10-0-88d199dacdc4bbb2ec0fa54c403a8431)
修改php.ini中的参数值allow_url_include。编辑/etc/php/7.0/apache2/php.ini文件,将第812行“allow_url_include=Off”修改为“allow_url_include=On”,保存后退出。这里有一个Vim编辑技巧:按“Esc”键,输入“:”,然后输入“wq!”。
接下来,配置 DVWA。打开终端,输入如下命令,进入 dvwa 文件夹,将 uploads 文件夹和phpids_log.txt文件的权限设置为可读、可写、可执行。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_4.jpg?sign=1738839888-RQuZvSm97OCufIhXqadryCX3jFsD0dK9-0-df8340e5f6b9231e66cadab1fb5035fa)
生成配置文件config.inc.php,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_5.jpg?sign=1738839888-ydz56OoGAhsRpdOZW1LnOvWgzwsMjRaF-0-21cc31fe3638cac1e60b05a7e287ccea)
将第18行中的“db_password='p@ssw0rd'”修改为实际的密码值,在本例中设置为空值,如图1-24所示。
(4)访问并创建DVWA平台
打开浏览器,在地址栏中输入“http://192.168.2.132/dvwa/setup.php”,如图1-25所示(验证码为“Missing”),单击“Create/Reset Database”按钮,完成所有配置。
配置成功后,就可以像在Windows中一样在Kali中使用使用DVWA平台了。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_1.jpg?sign=1738839888-wAQrd7gKJVGZv9ETXhTTh8o7LxsCXs26-0-d8de6d76c25608b6870e0f61dbc7783a)
图1-24 修改数据库配置文件
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_2.jpg?sign=1738839888-iaBk2ZsMzEkQRVcdSAm6p9qasQZd5GIJ-0-b4f18be00f99d571d0d25eb0520ff18e)
图1-25 DVWA配置成功
2.在Kali 2017及以上版本上安装DVWA渗透测试平台
前面提到过,在Kali 2017及以上版本上安装DVWA时会遇到一些问题。有研究发现,在Kali 2017及以上版本上安装DVWA后出现的无法使用问题是由MySQL授权问题导致的,按照下面的方法即可解决。
(1)准备工作
下载Kali Linux的新版本。读者如果有时间,可以先安装虚拟机,再安装Kali Linux 2.x。也可以使用Kali提供的虚拟机打包文件,其下载地址见链接1-11、链接1-12。
可以根据个人计算机的实际配置和平台选择下载。下载后,在本地将文件解压,使用 VMware打开即可。
下载DVWA的新版本。访问GitHub,下载DVWA 1.90的安装包,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_3.jpg?sign=1738839888-yDcQFRTdm6bi1QfUexuTA8MS1dPG762y-0-d630398fc7dee596a98dd506afa0881a)
或者
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_4.jpg?sign=1738839888-Da9hK0128rSCN5xRnDSkZPNappMYR24Z-0-0865e33aec1a0853cf8c14dcf181ac2e)
将下载的压缩包解压并改名为“dvwa”,然后将其复制到/var/www/html文件夹下。
(2)重新配置和安装php-gd
配置php-gd,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_1.jpg?sign=1738839888-cT4HOUkbEZKCb6YjFSwz6Rr7gbsEvV4x-0-3f1d48ac0d5e02b4786aded35cc7381c)
查看PHP的版本,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_2.jpg?sign=1738839888-DyYUq9hLXv6xyZUjbgmyADIAGGkJwPN4-0-824aeca19c26d6bcdea0a1a5401ee27b)
执行以上命令,显示结果如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_3.jpg?sign=1738839888-YkVjY9fNQYGKlRmA32LSSwOaeop3QmHU-0-c685dffb26a29a45d1635be6ba03fb2f)
下载DVWA,并将其复制到网站目录下,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_4.jpg?sign=1738839888-IX9JPWEXk1Ip0Gb1bntLGVAQL9FuyGOK-0-2abec4925ca33823f84dd9a31fdfcb0e)
修改/etc/php/7.0/apache2/php.ini文件,使allow_url_include=On(初始设置为allow_url_include=Off)。
赋予dvwa文件夹相应的权限,然后在终端中输入如下命令。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_5.jpg?sign=1738839888-vwdOjyoTTsfd9LD8haDtvIrvrGPBPfdL-0-3fb250efdaaf9c0b9a1d6fc50bb05ede)
登录数据库,执行如下命令。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_6.jpg?sign=1738839888-3C2MHbfbmzI9t4jJ9iKKVHsK0X93YlQq-0-4830a206f524f79eccfda4a321b81b76)
修改数据库密码,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_7.jpg?sign=1738839888-47PtKUestDPkNrw1S0ZgxPEWopSziXtg-0-fb2170d155064d1aae6c8cec1210a698)
修改config.inc.php中的数据库配置为实际配置即可。
启动Apache 2和MySQL服务,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_8.jpg?sign=1738839888-YEbA3xG7wB1E8SX5dSkqe0dLBZUWYWnn-0-300288c68e8e63f9fdb6f71d394ab13a)
通过浏览器访问DVWA网站并进行相应的设置。