黑客那些事之非法文件上传漏洞攻击破解(一)

何知非
15566     

在互联网高速发展的现今,大部分网站都会有文件上传功能,而文件上传往往是会被黑客利用的途径之一。本文通过一系列常见文件上传漏洞利用方式的说明,以及如何防范这些漏洞,将文件上传这一可能会受到攻击的入口,变成坚不可摧的堡垒。

【上传技术基础】

在本文的开始,我们先了解一下上传过程中经常出现的安全隐患,因为黑客们经常可以通过这些漏洞来入侵网站的服务器。

1、前端验证绕过

首先,需判断下在文件上传时验证机制是否在本地。例如很多情况下感觉速度较快的返回信息则认为有可能是本地验证,但是有的时候需要根据抓报以及跟踪上传代码来分析出是否为本地验证。

接下来,我们可以通过firebug工具选中页面上的上传模块,如找到下图所在位置:

在往上些的地方,会找到类似onsubm:t=”return checkFile()”的部分,即是用于验证的框架,可以将它删除并编辑保存。如下图:

验证框架的代码进行删除之后,页面不会对我们上传文件的类型进行检测。这时候就可以把“一句话木马”文件进行上传了。

 

除了以上方法外,还有一种办法是通过Firebug来查看代码,如果看到限制语句,就可以判断为js前端验证。如下图:

在Firebug中修改JS代码绕过本地验证上传WEBShell。单击Firebug中的编辑功能,修改或者在类型后面加上PHP或ASP、JSP等,让JS代码允许上传文件类型,也可以达到绕过上传的目的。

 

2、MIME类型绕过漏洞

MIME为浏览器与服务端通信中头部信息组成的一部分,它是服务器用来判断浏览器传递文件格式的重要标记项。由于其为浏览器也就是客户端传递出去的,那么恶意用户就可以修改MIME以达到控制服务器的权限。

这里我们以burpsuite抓包为例,比较jpg和php上传时的MIME信息(Content-type)是不同的:如以下两张图:

这时我们只要把上传的一句话木马文件的MIME篡改为image/pjpeg,就有可能达到绕过并上传的目的。

3、文件扩展名绕过漏洞

通常客户端或服务端会对文件扩展名进行检测,但是如果没有此类检测或检测不完善的话,也可能造成被绕过的风险。例如对于php设计的网站,除了可以解析以php为后缀的文件,还可以解析php2、php3、php4、php5这些后缀的文件。不同的服务器,可以上传的文件类型也不同,所以需要进行逐个排除。在此就不一一例举了。

4、文件内容检测绕过类上传漏洞

通常客户端或服务端会对文件内容进行检测,但是如果没有此类检测或检测不完善的话,我们就可能通过修改文件内容来绕过上传。

例如针对服务器端通过文件内容来进行判断验证的情况,就可以通过抓包,然后在末尾加上几个空格后,粘贴一句话木马的代码并进行上传。

这里有两点注意事项:

一是空格的作用主要用于隔开图片文件和一句话,避免一句话解析混乱。

二是需要修改尾缀为可执行的代码文件,如php、asp或jsp等。若上传上去的文件仍然是.jpg,则仍以.jpg解析,那么就无法执行脚本了。

5、空字节截断目录路径检测绕过类上传漏洞

这类绕过上传文件的主要攻击点在于对路径的篡改和忽略欺骗。

以php为例,首先我们把一句话木马文件的后缀改为.jpg并进行上传提交。

通过抓包,我们找到文件名所在的位置,然后对其进行篡改。比如原来的文件名为“1.jpg”,我们把它改为“1.php .jpg”。

最后,在Hex找到“1.php .jpg”这个被修改过的代码,找到同一行的数字20,改为00 按一下回车,返回。

返回Raw,看到“1.php .jpg”变成“1.php□.jpg”,原本的文件服务器保存路径从uploadimg/yijuhua.jpg变为uploadimg/1.php。

 “20”是空格字符的16进制,改成“00”也就是一个截断字符的16进制。这样一来。截断字符后面的都会被截断,也就是忽略掉了,所以uploadimg/1.php .jpg 就变成了uploadimg/1.php 。达到了我们上传PHP文件的目的。如图:

 

【解析导致的上传漏洞】

不同的服务器配置可能导致不同的上传文件解析漏洞,服务器中间件的安全性也会导致程序存在不安全隐患,所以我们需要通过对这些漏洞进行分析学习,了解黑客的攻击手段以防御自身的服务器安全。

1、IIS6.0站上的目录路径检测解析绕过上传漏洞

当我们使用的服务器都是Windows2003,并且使用的服务为IIS6.0时,就可能存在如本节所描述的漏洞。

以asp为例,先准备好一句话木马文件,然后通过burpsuite进行抓包:

查看数据包:

其中Content-Disposition:form-data;name=”path”下面的一行为服务保存文件的相对路径,我们把原本的 uploadimg/改为uploadimg/1.asp/;,filename="yijuhua.asp"修改为filename="yijuhua.asp/1.jpg"。如图:

本例的知识点在于利用了IIS6.0目录路径检测解析,文件的名字为“yijuhua.asp/1.jpg”,也同样会被IIS当作ASP文件来解析并执行。

首先我们请求/yijuhua.asp/1.jpg,服务器会从头部查找查找"."号,获得.asp/1.jpg。然后查找"/",如果有则内存截断,所以/yijuhua.asp/1.jpg会当做/yijuhua.asp进行解析。

上传成功后,通过response我们可以查看到得到的文件名信息为“1.asp;14127900008.asp”,那么就可以在前面添加上uploadimg/,从而构造访问地址为:“http://www.test.com/uploadimg/1.asp;14127900008.asp”,并通过菜刀类的工具进行访问了。

2、IIS6.0站上的解析缺陷绕过上传漏洞

此类方法与上面讲的目录解析有点类似,不同点在于是利用文件解析来达到绕过上传的目的。

以php为例,同样是准备好一句话木马文件后通过burpsuite进行抓包。

查看数据包:

其中Content-Disposition:form-data;name=”path”下面的一行为服务保存文件的相对路径,我们把原本的 uploadimg/ 改为 uploadimg/1.php; ,filename="yijuhua.php"修改为filename="yijuhua.jpg"。

本例中的知识点在于利用了IIS6.0目录路径检测解析,文件的名字为“1.php;yijuhua.jpg”,也同样会被IIS当作PHP文件来解析并执行

首先我们请求/1.php;yijuhua.jpg,然后服务器会从头部查找查找"."号,获得.php;yijuhua.jpg。接着查找到";",有则内存截断,所以/1.php;yijuhua.jpg会当做/1.php进行解析。

最后类似上一节那样,通过response我们可以查看到得到的文件名信息为“1.php;14127900008.php”,在前面添加上uploadimg/,从而构造访问地址为:“http://www.test.com/uploadimg/1.php;14127900008.php”,并通过菜刀类的工具进行访问。

3、Apache站上的解析缺陷绕过上传漏洞

Apache的解析漏洞主要特性为Apache是从后面开始检查后缀,按最后一个合法后缀执行,整个漏洞的关键就是Apache的合法后缀到底是哪些,不是合法后缀的都可以被利用,所以将木马的后缀进行修改为允许上传的类型后,即可成功绕过验证,最终拿到权限。


例如新建完要上传的一句话木马文件后命名为yijuhua.php,然后我们在文件后缀处添加上7z,就有可能绕过验证上传成功。也可以修改后缀名为cab、zip、bmp等,只要是允许的上传类型都可能被上传成功。最后通过菜刀类工具访问即可。

4、htaccess文件上传解析漏洞

有些服务器在上传认证时没有拦截.htaccess文件上传,就会造成恶意用户利用上传.htaccess文件解析漏洞,来绕过验证进行上传WEBShell,从而达到控制网站服务器的目的。


首先我们编写一个.htaccess文件。打开记事本,编写代码“AddType application/x-httpd-php .jpg”,然后点击文件选中另存为,编写文件名为.htaccess,选择保存类型为所有文件。然后将其进行上传。因为.htaccess是apache服务器中的一个配置文件,不在上传的文件的黑名单之内,所以.htaccess文件是可以上传成功。


接下来我们制造一个一句话木马文件,如取名为yijuhua.php。因为之前上传成功到服务器的.htaccess文件里的代码可以让 .jpg后缀名文件格式的文件名以php格式解析,因此达到了可执行的效果。所以我们把yijuhua.php文件的后缀名改为.jpg格式,让.htaccess文件解析yijuhua.jpg文件里的php代码,从而使木马上传成功并达到可执行的目的。


版权所有 侵权必究

如需转载请联系

0571-28829811


 

未经授权禁止转载,详情见转载须知

联系我们

恒 生 技 术 之 眼