网络安全从入门到精通 (第七章-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容器----再给用户。

  

posted @ 2020-04-19 14:33  TheHIde  阅读(184)  评论(0编辑  收藏  举报