![网络攻防实战研究: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=1739371241-TPqB7VslPCcgoViGzJF9q2YvEdHfzyhH-0-54895b44127205e3676b1a71b099559c)
图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=1739371241-jqK5vbxZCnV6mtXxcVYnQRuOR7jQggG3-0-49f57d9032b0bca32d5db5a5f7cda6dd)
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=1739371241-O08q1uO1tNXB7mIax1z6B2NnNYAQ1YMC-0-c9f48b67cea133a3bb2a1389991e7422)
图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=1739371241-YHB1oeUrEy4DQ47CjPwD9XJy5dJGa7N7-0-7e17ec41eaa9d348fca9a99dc6bc17dc)
图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=1739371241-KjSbiD5zcGlpFqXXByL8Sq1ScRBrI3vG-0-2b492420d45fd990cfaa9e38b085ba4d)
(3)搭建平台
停止Apache 2的工作,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_3.jpg?sign=1739371241-bm5qxJnw9i7geltxLlSbWm3U7nTrehoJ-0-6a33889e26a8144f53340033cd2e3567)
赋予dvwa文件夹相应的权限,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_30_4.jpg?sign=1739371241-G1BtrmnqcLAvlo0vA6FJvt3mpqQ1739R-0-50da70d66726b10926b705955938c6f3)
开启MySQL服务,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_1.jpg?sign=1739371241-J3Rp1i1AsVHqmtr91jFv7o8mAbr8snxR-0-6d1522318e957e0fa87a1aee50531927)
如图1-23所示,创建DVWA数据库。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_2.jpg?sign=1739371241-OJgfudYwwoMBIPqaXQTpfTZ8BbZuA62e-0-5e56c73b42289b4001fdaf086be66319)
图1-23 在Kali中创建DVWA数据库
配置php-gd支持,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_3.jpg?sign=1739371241-nCgDpTAOSqTWsgZstSou1P4DtAvSErt4-0-ef5b129a3cbef36c40e41e0f37022684)
修改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=1739371241-bcvkKcMuadQPEAOEZ6pWCCc5wbwfeKoX-0-dd2dfb9e0e5597a513b600e35de39c7f)
生成配置文件config.inc.php,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_31_5.jpg?sign=1739371241-MaxvqaknLbw1Tyyx7B69CcqlMzV8RtL0-0-c1214b6096c4f94b658cd72eef8d1793)
将第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=1739371241-6wqxTzmfFaFJ4lLSyvgXhP7vG7BNuQVS-0-9eda7615201935ef4af720858937df12)
图1-24 修改数据库配置文件
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_2.jpg?sign=1739371241-XuSAQakVfON3kFjwch37aiPcJhEOcsvP-0-5d0bb0080dcbac5598a603d26984000a)
图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=1739371241-yfU1n1eyq93hs2syXR9PVyfDC3gnqMdZ-0-17ee41224063a699ad6a91e64df9f82a)
或者
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_32_4.jpg?sign=1739371241-X5tSYaVVLZxok4sVAn9fuCOpp2RISQSk-0-a6665926b68640cf7e49b3337187ed48)
将下载的压缩包解压并改名为“dvwa”,然后将其复制到/var/www/html文件夹下。
(2)重新配置和安装php-gd
配置php-gd,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_1.jpg?sign=1739371241-ePm2ANYYtRKwidw9jZwF9VV5lt8QRWVS-0-c8a2bb8c2c460b1493ac24f4e15a0625)
查看PHP的版本,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_2.jpg?sign=1739371241-ptdG1NEMoX1ztOXsnFsqhcpn2ynLkNgx-0-678beaf7d55d71a719669a83b24580ed)
执行以上命令,显示结果如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_3.jpg?sign=1739371241-Bbe2gRkq5z00uwKBKauGraWUofw2Q7sF-0-1b89de23b1cf32a69f3522dc70b74c83)
下载DVWA,并将其复制到网站目录下,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_4.jpg?sign=1739371241-baFze2xF3WzmzMA10pIHTR52kFcC2rp6-0-a2cea46a9b9c8df8d31c761d0d0d45dc)
修改/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=1739371241-pzjkl3YSnjkyWHHPwyBdbYNVfiUBS61i-0-a5c0b441f4783faef028bd177005587f)
登录数据库,执行如下命令。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_6.jpg?sign=1739371241-Aw9s779yAICnMuZ4muWpIhdOWsa1cub2-0-a80d5cdbba30f9075362fbbc770c31d6)
修改数据库密码,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_7.jpg?sign=1739371241-95woUCAKJlJF6VqjEyeI0wf0pQt496Zo-0-287b3b3b3b4cd7dffa7466e5112a9ddf)
修改config.inc.php中的数据库配置为实际配置即可。
启动Apache 2和MySQL服务,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_33_8.jpg?sign=1739371241-SA5hKxjCjugDzFOwuAP0gRPSh2JHV04I-0-e90b92dbd41c0bae03cca3073056b0f1)
通过浏览器访问DVWA网站并进行相应的设置。