文件上传

  “文件上传”功能一方面带来了良好的体验,另一方面也带来的“安全问题”。目前文件上传漏洞已经成为web安全中经常利用到的一种漏洞形式,对于缺少安全防护的web应用,攻击者可以利用提供的文件上传功能将恶意代码植入到服务器中,之后再通过url去访问以执行代码达到攻击的目的。

文件上传漏洞产生的原因:

  1、开源编辅器的上传漏洞
  2、服务器配置不当
  3、本地文件上传限制被绕过
  4、过滤不严或被绕过
  5、文件解析漏洞导致文件执行
  6、文件路径截断
文件上传漏洞利用的条件:
  1、恶意文件可以成功上传
  2、恶意文件上传后的路径
  3、恶意文件可被访问或执行

一、任意文件上传

这个直接上传一个文件就是了,这里上传的文件名为1.txt, 这里可以看到上传成功,说明后台没有做任何限制。

 

 二、JS限制文件上传

当我们再次上传1.txt时提示错误

 

 

 

 提示中说我们不能上传txt文件类型,那么我们试着上传一下它允许的jpg格式的文件(这里是我们用图片格式伪装的木马文件)。

 

 

 利用burpsuite抓包

 

 

将jpg修改成php格式,提示上传成功。(说明成功绕过限制)

 

三、 MIME限制文件上传

 

 

我们上传一个php格式的木马文件点击上传显示上传失败,那么我们利用burpsuite抓包看看。

 实际上MIME验证就是检测Content-type字段值的,直接更改上传数据包中的Content-type即可绕过。

在前面js上传文件中也可以看到此处的内容为图片格式:image/jpeg,将此内容修改为image/jpeg即可。

 

 可以看到木马文件成功绕过限制上传成功!

四、扩展名限制文件上传

先了解下服务端扩展名验证绕过方法:

1、找黑名单扩展名的漏网之鱼 - 比如上面就漏掉了 asa 和 cer 之类

2、可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类

3、特别文件名构造 - 比如发送的 http 包里把文件名改成 help.asp. 或 help.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改, 然后绕过验证后,会被 windows 系统自动去掉后面的点和空格。

4、IIS 或 nginx 文件名解析漏洞,比如 help.asp;.jpg 或 http://www.xx.com/help.jpg/2.php,这里注意网上所谓的 nginx 文件名解析漏洞实际上是 php-fpm 文件名解析漏洞

5、0x00 截断绕过 - 这个是基于一个组合逻辑漏洞造成的

6、双扩展名解析绕过攻击(1) - 基于 web 服务的解析逻辑,比如上传x.php.rar等文件

7、双扩展名解析绕过攻击(2) - 基于 web 服务的解析方式

 

那么知道了这些绕过方法,现在我们现在开始上传木马文件

我们同样上传个php木马文件4.php可以看到显示,上传失败!

 那么我们抓包看一下,发现Content-type字段的值跟前面的一样,那么我们还是修改回来查看上传结果。

 看到前面的绕过方法,修改以下后缀名为.php3显示木马文件上传成功!

 

 修改后缀名为.php.上传成功!

 

 大小写混合绕过,修改后缀名为.pHp上传成功!

 

五、内容限制文件上传

可以通过自己写正则匹配,判断文件头内容是否符合要求,这里举几个常见的文件头对应关系:
(1)_JPEG;_JPE;.JPG,”JPGGraphic File”
(2).gif,”GIF 89a”
(3).zip,”Zip Compressed”
(4).doc;.xls;.xlt;ppt;.apr;”MS Compound Document vl or Lotus Approach APRfile”

这里试了以上四种就只有GIF 89a可以绕过限制。

 

posted @ 2020-03-03 15:44  刘茜茜  阅读(181)  评论(0编辑  收藏  举报