网络安全从入门到精通 (第七章-3) 文件上传漏洞 — 解析、验证、伪造(三)
本文内容:
- IIS6.0解析漏洞
- CGI解析漏洞
注意:
菜刀链接200,文件存在,但是菜刀链接不上,原因可能是一句话木马的语言类型不符合。
图片马:asp用sqp马,php用php马,他们之间是不能传,在做测试的时候,一个马连接不上,可以试试别的吗。
1,IIS6.0解析漏洞:
IIS6.0解析漏洞,其实有一些不如说是IIS6.0的一些特性,严格意义上而言,只是一些默认配置并不是漏洞,但是也有一些漏洞。
IIS6.0解析漏洞(1)[不是漏洞,只是默认配置的问题,适合拿来绕过黑名单机制]。
IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa、.cer、.cdx也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx都会调用asp.dll。
解决方法:直接将相应配置删除掉即可。
IIS6.0解析漏洞(2)[IIS5.1和IIS7.5无此漏洞]:
IIS6.在处理含有特殊符合的文件路径是会出现粗偶我,从而造成文件解析漏洞:
text.asp;jpg 它会当做asp进行解析。
很多地方都会用到";"作用是结束。
但是,这个文件的名称依旧是:a.asp;jpg。
IIS6.0解析漏洞(3)[IIS5.1和IIS7.5无此漏洞]:
IIS6.在处理含有特殊符合的文件路径是会出现粗偶我,从而造成文件解析漏洞:
text.asp/123.jpg 它会当做asp进行解析。
请求a.asp/x.jpg
这相当于构建了一个新的文件a.asp,凡是这个文件夹里的文件都会以asp去执行。
2,CGI解析漏洞:
CGI是什么?
简单的说,可以理解为Web服务器和独立程序之间的管家。
服务器将a类型文件,交给CGI,CGI交给处理a类型文件的程序。
Nginx默认是以CGI的方式支持php解析的,普遍的做法是在Nginx配置文件中通过正则匹配设SCRIPT_FILENAME。
当访问www.xx.com/phpinfo.jpg/1.php这个url时,$fastcgi_script_name会被设置"phpinfo.jpg/1.php",然后构造成SCRIPT_FILENAME(绝对路径)传递给PHP CGI,如果开启了cgi.fix_pathinfo=1选项。
CGI一看是php后缀结尾,便给php程序去执行,php去找名字为“phpinfo.jpg”的文件夹,没找到,便去找“phpinfo.jpg”的文件,找到后执行。
这个默认是就是1,所以没有设置过就是开启,那么就会触发在php中的如下逻辑:
php会认为SCRIPT_FILENAME(绝对路径)是phpinfo.jpg,而1.php是path_info,所以就会phpinfo.jpg作为php文件来解析了,
漏洞的本质:
少了再次检测的环节。
这是一个逻辑问题,所以说我们只需在正常的.jpg后加/.php就可以成功绕过解析。
这不是Nginx特有的漏洞,在IIS7.0、IIS7.5、Lighttpd等Web容器中也经常会出现这样的解析漏洞。
可以通过云悉资产、微步社区等平台,判断是什么Web容器。
用户发送请求----Web容器----php----CGI----交给php代码去执行----返回Web容器----再给用户。