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服务器。
图1-20 修改php.ini参数
(4)修改DVWA数据库配置文件
将C:\phpstudy\WWW\dvwa\config\下的config.inc.php.dist文件重命名为“config.inc.php”,修改其中的数据库配置为实际的值。在本例中,MySQL数据库的root账户的密码为root,因此修改值如下。
3.安装数据库并进行测试
输入“cmd”和“ipconfig”命令,获取本机IP地址。可以使用本例中的地址http://192.168.157.130/dvwa/setup.php安装DVWA,也可以使用localhost/dvwa/setup.php安装DVWA。如图1-21所示,根据提示信息完成安装。
图1-21 安装DVWA
安装后,系统会自动跳转到登录页面http://192.168.157.130/dvwa/login.php,默认登录账号/密码为admin/password。登录后,需要设置“DVWA Security”安全级别,然后进行漏洞测试。如图1-22所示,选择对应级别后提交即可。
图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,下载命令如下。
(3)搭建平台
停止Apache 2的工作,命令如下。
赋予dvwa文件夹相应的权限,命令如下。
开启MySQL服务,命令如下。
如图1-23所示,创建DVWA数据库。
图1-23 在Kali中创建DVWA数据库
配置php-gd支持,命令如下。
修改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文件的权限设置为可读、可写、可执行。
生成配置文件config.inc.php,命令如下。
将第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平台了。
图1-24 修改数据库配置文件
图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的安装包,命令如下。
或者
将下载的压缩包解压并改名为“dvwa”,然后将其复制到/var/www/html文件夹下。
(2)重新配置和安装php-gd
配置php-gd,命令如下。
查看PHP的版本,命令如下。
执行以上命令,显示结果如下。
下载DVWA,并将其复制到网站目录下,命令如下。
修改/etc/php/7.0/apache2/php.ini文件,使allow_url_include=On(初始设置为allow_url_include=Off)。
赋予dvwa文件夹相应的权限,然后在终端中输入如下命令。
登录数据库,执行如下命令。
修改数据库密码,命令如下。
修改config.inc.php中的数据库配置为实际配置即可。
启动Apache 2和MySQL服务,命令如下。
通过浏览器访问DVWA网站并进行相应的设置。