1.任意文件上传漏洞原理
文件上传漏洞,指攻击者利用程序缺陷绕过系统对文件的验证与处理策略将恶意程序上传到服务器并获得执行服务器端命令的能力。
这个漏洞其实非常简单,就是攻击者给服务器上传了恶意的木马程序,然后利用此木马程序执行操作系统命令,从而获得服务器权限,造成严重的安全隐患。
比如一个JAVA系统本来需要上传身份证图片进行用户实名认证,结果恶意用户上传了jsp木马文件,之后利用这个文件执行系统命令,再以这个系统为据点,对内网其他互通的系统进行攻击,这样将导致整个内网系统的沦陷。
2.任意文件上传漏洞测试
2.1普通文件上传
普通文件上传,主要是利用程序的上传点上传恶意程序,即webshell。这些功能一般出现在用户图像上传、身份证图片上传、人脸识别图像上传、APP运行日志上传(有的系统会上传客户端日志到服务端)、投诉建议处图片上传、excel数据导入、HTML脚本上传等诸多功能。
总之使用burp抓取数据包,发现有文件上传的请求包,都需要进行测试。我们可以尝试着对文件名进行修改,根据响应包的返回情况来进行判断。
在真实的环境中,可以分为三种情况:
(1)完全未校验:系统无任何保护措施,处于裸奔状态,这种直接测试即可。
(2)前端校验:系统有校验,但是只在前端校验,我们在客户端抓取数据包到BURP后,直接在BURP修改文件后缀即可绕过前端校验。
(3)后端校验:系统在后端校验,但是依然可能出现问题。主要包括系统校验不严格,允许上传的文件类型过于广泛;系统使用黑名单校验(即不允许上传某某类型),但是考虑不周全,没有彻底杜绝,值得一提的是黑名单校验是非常不好的一种方式,因为你难以考虑周全,正确的做法应该是使用白名单(即只允许某某类型上传)。
2.2利用编辑器的漏洞上传文件
利用编辑器的漏洞上传文件,如eWebEditor编辑器、Fckeditor编辑器。
很多编辑器由于本身存在漏洞,或者开发者配置不当,导致了攻击者可以在编辑器位置上传恶意文件。
2.3利用解析漏洞上传文件
解析漏洞指的是常用的中间件,如IIS、Apache、Tomcat、Nginx等。我们可以利用解析漏洞来上传图片等文件,之后构造webshell。
(1)Apache解析漏洞
apache1.x和apache2.x存在解析漏洞,Apache是从右到左开始解析文件后缀的,如果最右侧的扩展名不可以识别,它会继续往左解析,直到遇到认识的为止,如果都不认识,则会暴露其源码。
这时候攻击者就可以利用1.php.xxxx来上传配合解析漏洞获取webshell。
(2)IIS6.0解析漏洞
常见组合:server 2003+IIS6.0。
正常解析格式包括:asp、asa、cer。还可以解析 1.asp;.jpg | 1.asa;.jpg | 1.cer;.jpg | 1.asp;xxxx.pdf。
IIS6.0解析文件时有两个解析漏洞:
a.当文件目录是以*.asp(或者*.asa)这种格式命名时,则目录下的任意文件都会被IIS当作asp文件执行。
b.当文件为*.asp;.jpg时,IIS6.0一样会以asp文件来执行。
(3)PHP CGI解析漏洞
常出现的版本:IIS7.0/7.5 Nginx<8.03
在php配置文件中有一个cgi.fi: x_pathinfo,当其开启时,访问如下URL:www.xxx.com/test.jpg/1.php
1.php为不存在的文件,php将会向前解析,从而将test.jpg按照php文件解析。
2.4利用HTTP危险方法上传文件
通过PUT方法上传,通过MOVE或者COPY方法来改名。
参考Apache Tomcat PUT方法任意文件上传漏洞
3.任意文件上传漏洞绕过
系统绕过:
(1)前端校验绕过:前端验证一般都是通过编写js脚本对后缀名校验。绕过一般就burpsuuit截断修改后缀名即可。
(2)黑名单绕过:系统使用黑名单校验,这个时候我们可以尝试大量的文件后缀,查看哪些可以绕过,如禁止jsp文件,我们可以尝试jspx等文件。
(3)文件类型绕过:有的开发者会在后端校验文件类型。通过抓包,将content-typd字段改为image/gif即可。
(4)空格绕过:在文件名的后面加多个空格或者敲回车键,然后上传到服务器,可能绕过后端校验。
(5)文件内容头绕过:有的开发会校验文件内容头,我们可以在木马内容的基础上可以加一些图片等文件信息。
(6)配合解析漏洞,实在绕不过系统校验,可以尝试是否可以配合解析漏洞。
(7)配合文件包含漏洞,实在绕不过系统校验,可以尝试是否可以配合文件包含漏洞。
安全设备绕过:
(1)垃圾数据。
(2)在数据包加多个文件字段名,可能绕过某些安全设备。
(3)利用waf本身缺陷,删除实体里的content-type字段。
(4)有的waf规则是只校验数据包为POST类型,此种可以抓包将POST改为GRT。
(5)分块传输。
(6)条件竞争绕过。
4.任意文件上传漏洞修复
(1)在服务端对文件名进行白名单校验,只允许白名单内文件后缀上传。
(2)对上传文件名进行重命名。
(3)将上传文件存放在非WEB目录下。
版权归原作者 午夜观星河 所有, 如有侵权,请联系我们删除。