文件上传漏洞

道锋潜鳞
2020-04-06 / 0 评论 / 86 阅读 / 正在检测是否收录...

文件上传漏洞

文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

在了解文件上传漏洞之前先了解什么是Web容器、IIS、文件解析。

什么是web容器?
web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如tomcat、apache、nginx等等。(可以理解为给编程语言提供环境)

中间件:提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。

容器*:给处于其中的应用程序组件(ASP,JSP,PHP)提供一个环境。使处于其中的应用程序组件之间跟容器中的环境变量接口交互,不必关注其他系统问题。

服务器:www服务器或http服务器。提供web信息游览服务。它只需支持http协议、html文档格式以及url,向游览器提供服务的程序。

什么是IIS?


IIS全称是互联网信息服务,包括FTP/FTPS、NNTP、HTTP/HTTPS、SMTP等服务。

.net Framework是基础类库,是程序运行的底层框架。

IIS是架设Web服务器用来提供网页游览服务的,属于系统环境。

一般用ASP.NET开发软件,然后靠IIS对公网提供服务。

么是文件解析?

当服务器接收到一个HTTP请求的时候,IIS首先需要决定如何去处理这个请求(服务器处理.aspx和.html肯定是不一样的),根据的是文件的后缀名。

服务器获取所请求的页面(也可以是文件)的后缀名后接下来会在服务器端寻找可以处理这类后缀名的应用程序,如果IIS找不到可以处理此类文件的应用程序,那么IIS将直接把这个文件返还给客户端。


1 解析漏洞

攻击者在利用上传漏洞时,通常会与Web容器的解析漏洞配合在一起。所以我们首先来了解一下解析漏洞,这样才能更深入地了解上传漏洞,并加以防范。
常见的Web容器有ⅡS、Apache、Nginx、Tomcat等,下面主要讲IIS、Apache容器。


1.1 IIS解析漏洞

IIS 6.0在解析文件时存在以下两个解析漏洞。

当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件来解析。

例如:建立文件夹parsing.asp,在parsing.asp文件夹内新建一个文本文档test.txt,其内容为<%=NOW()%>,然后在浏览器内访问。
“NOWO”是ASP提供获取当前时间的函数,TXT是文本文档格式,IIS是不会去解析此类文件的,应该会直接显示其内容,而在parsing.asp文件夹中,却被当作ASP脚本来解析。

当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如:新建文件test.asp;1.jpg,内容为<%=NOW()%>。

1.2 Apache解析漏洞

Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断,如xxx.php.owf.rar ,”.owf”和”.rar”这两种后缀是apache解析不了的,apache就会把xxx.php.owf.rar解析成php。

怎么去判断是不是合法的后缀就是这个漏洞利用关键,测试时把常见的后缀都写上,去测试是不是合法,任意不识别的后缀,逐级向上识别。

有些程序开发人员在上传文件时,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这时攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,并配合解析漏洞,获取到WebShell。
2 绕过上传漏洞

绕过上传漏洞分以下两种。

客户端检测:客户端使用JavaScript检测,在文件未上传时,就对文件进行验证;

服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,
甚至有些程序员检测文件中是否嵌入恶意代码。

在研究上传漏洞之前,首先来看两个小工具:中国菜刀和一句话图片木马。
“中国菜刀”这款软件是用来管理网站文件的,非常小巧灵活,它仅仅需要一段简短的代码
就可以方便地管理网站。中国菜刀现在已经成为安全研究者手中必备的利器,其官方网站为:http://www.maicaidao.com。

该软件提供的服务器端文件仅有一行代码。目前支持的服务器端脚本包括:PHP、ASP、ASP.NET、JSP等,并且支持HTTPS安全连接的网站。常见的代码如下:

Asp一句话:<%eval request(“xxx”)%>
Php 一句话:<%php @eval($_POST[xxx]);?>
Aspx一句话:<%@ Page Languag=”xxx”%><%eval(Request.Item[“xxx”])%>

正因为代码短小精悍,所以被黑客称为一句话木马(一句话后门)。
将<?php @eval(S_POST['xxx']);?>保存为shell.php,上传至PHP主机空间中,配置菜刀进行连接。

IIS6.0的解析漏洞

触发条件:必须是IIS6.0的环境

文件名漏洞 正常命名:as.jpg

触发漏洞的命名方式:as.asp;.jpg

http://192.168.16.128/as.jpg 打开是一张正常的图片。

http://192.168.16.128/as.asp;.jpg 打开已经被解析成asp的源码了。

文件夹名漏洞 正常命名:a/as.jpg

触发解析漏洞的命名:a.asp/as.jpg

http://192.168.16.128/a/as.jpg 打开是一张正常的图片。

http://192.168.16.128/a.asp/as.jpg 同样,打开已经被解析成asp的源码了。

二、IIS7.0、IIS7.5 以及Nginx<8.03 解析漏洞

IIS7.0和IIS7.5的解析漏洞没有IIS6.0那样全面,有时候或许没效果。

还有一点需要注意:IIS7.0、IIS7.5这种解析漏洞只适用于PHP编程语言的网站;不像IIS6.0的解析漏洞,ASP和PHP都可以。

正常的命名:a.jpg

触发解析漏洞的命名:a.jpg/.php

www.*.com/upload/20190622/aa0j4si01j741b2ugpgbgc8t4a. jpg 打开是一张正常的图片。

www.*.com/upload/20190622/aa0j4si01j741b2ugpgbgc8t4a. jpg/.php 同样,打开已经被解析成PHP的源码了。

试想一下,如果这个图片是我的PHP一句话木马呢?是不是说明这个PHP一句话木马已经被解析了。接下来,我们用中国菜刀或中国蚁剑连接就可以轻松获取到webshell了。

三、Apache解析漏洞

apache解析很奇怪,它解析是按照向左解析法来的,虽然说,到目前为止,我还暂时没有碰到过有这种漏洞的网站。

向左解析法:a.jpg.asp.gif.xxx

大概意思是,当Apache碰到 .xxx 不认识的时候,它会向左移找下一个,继续解析 .gif,这里就会以 .gif 来解析后面依次类推主。

a.php.xxx 解析成a.php

b.php.xxx 解析成b.php

四、空格 和 . 绕过上传限制

空格和点在Windows系统下会自己忽略掉。

a.asp 去绕过对上传的限制

a.asp. 去绕过上传限制

五、绕过上传的方法之00截断

00截断就是指用%00;

a.asp%00.jpg 就会变成a.asp,后面的.jpg就会被%00截断了。

0

评论 (0)

取消