文件上传漏洞

文件上传漏洞

As we all know ,在我们访问的网页中会有图片发布,上传压缩包,上传文件等,只要这个网站允许上传,就有可能出现文件上传漏洞。


1. 编程语言如何实现文件上传

php语言: form表单 -> tmp临时目录 $_FILE -> 判断文件信息(临时文件放入想要放的位置) -> 移动临时文件

2. 为什么会有文件上传漏洞

1.服务器配置不当
2.开源编辑器上传漏洞
3.本地文件上传限制被绕过
4.过滤不严或被绕过
5.文件解析漏洞导致文件执行
6.文件上传路径

3. 哪里存在文件上传漏洞

1.前段解析脚本语言
2.允许上传脚本文件
3.有上传文件的位置,目录


解析漏洞

攻击者在利用上传文件漏洞时,会与解析漏洞配合一起,常见的web容器有IIS、Nginx、Apache、Tomcat。


一、IIS解析漏洞
IIS 6.0中有两个漏洞(显示结果都为当前的日期)
- 当建立.asa、.asp格式的文件时,其目录下的任意文件都会被当做asp文件进行解析。
eg:创建一个名字为abc.asp的文件夹,文件夹内新建test.txt的文档,内容为<%=NOW()%>。
- 当文件为*.asp;1.jpg时,IIS 6.0同样会以ASP脚本来执行,如:新建文件 test.asp;1.jpg,内容为<%=NOW()%>。


二、Apache解析漏洞
在Apache 1.x 和 Apache 2.x中存在解析漏洞
eg: 在根目录下创建名为1.php.rar,内容为 的文件。访问1.php.rar,正常情况下应该弹出一个文件下载,但是他这里直接显示了phpinfo()里的内容。
- Apache在解析文件时有一个原则,当碰见不认识的扩展名,会从后向前解析,直到碰见认识的扩展名,在进行解析。如果都不认识,直接显示文件里的源代码。
eg:abc.rar.ss.aa,这里Apache会先解析aa扩展名,不认识,在解析ss扩展名,不认识,在解析rar,认识,解析成功。

  • Apache所能识别的扩展名在Apache安装目录下“/conf/mime.types”

三、PHP CGI 解析漏洞(Nginx漏洞)
Nginx是通常作为php的解析容器,比如访问http://127.0.0.1/1.jpg/1.php,会被解析成1.jpg,这个漏洞可以理解为1.hpg后面的1.php可以随意更改,在1.jpg后面加上“/XXXX.php”,可获得webshell。


利用漏洞(绕过上传漏洞)

工具

  1. 火狐浏览器插件:Firebug(新版火狐没有)

    它可以在网页上调试HTML、AJAX、CSS前端脚本代码。下面是构造的html界面。
    文件上传漏洞_第1张图片
    在网页中查看你写的代码,找到from表单,把onsubmit事件删除。

  2. Burp Suite
    这里我们开了burp Suite的代理,在burp Suite中我们找到上传的文件名,更改文件名后缀。

  3. 中国菜刀+一句话木马

    • 中国菜刀支持的服务器脚本PHP、ASP、ASP.NET、JSP,支持连接HTTPS网站安全链接。
    • PHP:
    • ASP:<%eval request("123")>
    • ASP.NET:<%@ Page Language="Jscript"%><%eval(Request.Item["chopper"],"unsafe");%>

-

防御手段

服务端检测

  1. 黑名单过滤(不建议)
    黑名单过滤是定义不安全的扩展名,服务器接受文件后进行文件对比,对比一样,则文件不合法,不让上传。为什么说不建议使用呢,因为攻击人可以找黑名单中忽略的扩展名,例如:php%00.jpg,1.php%00,1.php3,1.cer,1.asp.。windows下文件以“.”或者空格作为结尾,系统会自动去除“.”也可以绕过黑名单。
  2. 白名单过滤
    白名单过滤是定义允许上传的扩展名,服务器接受文件后,对比文件,相同则文件允许上传。
  3. MIME验证(不建议)
    web浏览器就是通过MIME类型来判断文件是GIF图片,还PostScript文件。web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,;浏览器会自动使用指定的应用程序来打开。GIF图片MIME为image/gif,CSS文件MIME类型为text/css。上传php文件时,使用Burp Suit拦截查看MIME类型。

  4. 目录验证
    目录过滤不严,攻击者可能建立畸形目录。

上传文件漏洞主要在于过滤

第一要接受文件及其临时路径,
第二获取扩展名对比白名单,
第三对文件进行重命名

此文章是本人通过学习整理出来,如有错误,请多指教

你可能感兴趣的:(文件上传漏洞)