文件上传漏洞-解析、验证、伪造3

946 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

接上一篇内容

IIS6.0解析漏洞(一)

我们现在要讲的第一个是IIS6.0的解析问题: 在这里插入图片描述 iis6.0除了将ASP后缀当成ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx也会当做asp去解析,而严格意思上讲这可以说是iis6的一些特性,只是iis6默认的一些默认配置,文件后缀名字为.asa .cer .cdx之所以也会当做asp去解析,是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx都会调用asp.dll。 当然,如果我们在iis6.0应用程序扩展配置中添加.allblue调用asp.dll可执行文件路径,那么我们也可以通过.allblue后缀来当成asp文件来解析; 接下来我们来看靶场: 在这里插入图片描述 这道题,我们只要通过上传一张图片马,并抓包将后缀改成.asa .cer .cdx其中一种后缀,都会被当成asp文件执行(请注意,我们要解析的是asp文件,所以一句话也要是asp的;也不能再本地直接改后缀名,因为这里会验证文件的文件类型) 我们将图片马上传并抓包改包 在这里插入图片描述 在这里插入图片描述 上传 在这里插入图片描述 上传成功 在这里插入图片描述 通过菜刀文件连接 在这里插入图片描述

IIS6.0解析漏洞(二)

首先说明下,IIS5和IIS7.5无此漏洞! IIS6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞,这一解析漏洞有两种完全不同的利用方式: test.asp;.jpg 会被当做asp进行解析 text.asp/123.jpg 会被当做asp进行解析 假如我们请求/aaa.asp;xxxx.jpg

执行过程:

  1. 从头部查找查找“.”,获得.asp;xxxx.jpg
  2. 查找“;”号,如果有则内存截断
  3. 查找“/”号,如果有则内存截断

最终,将保留下来.asp字符串,从META_SCRIPT_MAP脚本映射表里于扩展名匹配对比,并反馈给asp.dll 在这里插入图片描述

我们先上传图片马 在这里插入图片描述 并改包 在这里插入图片描述 上传 在这里插入图片描述 通过菜刀文件连接 在这里插入图片描述

IIS6.0解析漏洞(三)

在这里插入图片描述 IIS6.0还有一个漏洞,在后缀是.asp的文件夹下,里面的文件里只要有asp代码,只要进行访问,都会当做asp文件执行; 我们先上传图片看看目录: 在这里插入图片描述 我发现他的文件是存放在.asp后缀文件夹下,那我们是不是可以上传一张图片马上去直接来当成asp文件执行呢?我们试下 上传成功 在这里插入图片描述 访问成功 在这里插入图片描述 直接用菜刀连接 在这里插入图片描述

CGI解析漏洞

在这里插入图片描述

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,如果开启了fix_pathinfo选项,name就会触发在PHP中的如下逻辑: PHP会认为SCRIPT_FILENAME(绝对路径)是phpinfo.jpg,而1.php是PATH_INFO,所以就会phpinfo.jpg作为php文件来解析了 这也是一个逻辑问题,所以说我们只需要在正常的jpg后面加/.php就可以成功的绕过解析