IIS PHP fastcgi模式 pathinfo取值错误任意代码执行漏洞修复方法


    描述:
    目标存在任意代码执行漏洞。
    漏洞形成原因:PHP默认配置有误,IS+PHP fastcgi模式在解析PHP文件时存在缺陷,导致任意文件会被服务器以PHP格式解析,从而导致任意代码执行。
    验证方式:打开目标页面后在原URL后添加/test.php
    示例:在http://www.xxx.com/123.jpg后输入/test.php并回车,使用抓包工具查看响应头信息,如果包含PHP/x.x.x即可证明漏洞存在。
    
    部分浏览器免费抓包工具:
    360浏览器:工具-->开发人员工具
    IE浏览器:工具-->F12开发人员工具
    Firefox:搜索下载Firebug插件-->F12呼出
    Chrome:点击右上角的菜单-->工具-->开发者工具
    危害:
    攻击者可以利用该漏洞直接在网站执行任意代码,可能直接控制网站服务器,盗取网站数据,影响网站的正常运营。
    最近360提示这个IIS+PHP fastcgi模式 pathinfo取值错误任意代码执行漏洞,这里根据提示修复了漏洞,具体方法如下
    以下是360给出的解决方案
    一、更换PHP默认的Fastcgi模式为ISAPI模式(只能运行于Windows环境)
    1.下载PHP的ZIP文件包,下载地址http://www.php.net(注意版本要对应)
    2.将sapi目录中的:php4isapi.dll复制到c:\php目录中
    3.进入虚拟主机管理平台的"网站管理"-"虚拟主机"--服务器设置中,修改PHP的影射,将原来的:
    .php,C:\PHP\php.exe,5,GET,HEAD,POST,TRACE|
    改成:
    .php,C:\PHP\php4isapi.dll,5,GET,HEAD,POST,TRACE|
    4.(IIS 6才需要)打开IIS管理器,点击Web服务扩展,点击php的属性,“要求的文件”---添中--选中“C:\PHP\php4isapi.dll”,确定后,PHP就可以调用。
    电脑手机教程网小编评语:
    一般不建议变更为ISAPI模式,效率很低.2003 php5.2.17可以使用isapi方式,2008 则建议直接修改php.ini配置文件把cgi.fix_pathinfo值改为0 就行了.
    二、在条件允许的情况下(咨询网站工程师),更改php.ini中的配置参数cgi.fix_pathinfo值为0
    建议用这个,但需要用服务器管理权限的,一般是vps或主机
    电脑手机教程网小编评语:
    推荐这种方式,不论iis还是apache、nginx都很方便
    三、针对iis的解决方案
    此处客户的环境是windows server 2008R2的IIS,这里我在‘处理程序映射’里找到php的双击进入此界面
    
    进入‘请求限制’
    
    确定后就可以了。
    测试:
    在服务器上根目录新建一个phpinfo()的JPG文件test.jpg,访问http://www.xxx.com/test.jpg/1.php(test.jpg后面的php名字随便写),如果有漏洞则可以看到phpinfo()的信息,反之会返回404错误。
    四、使用360网站卫士
    Nginx pathinfo取值错误任意代码执行漏洞
    漏洞形成原因:由于Nginx默认配置有误,从而导致了一个任意代码执行漏洞.
    受影响版本:
    nginx 0.5.*
    nginx 0.6.*
    nginx 0.7 <= 0.7.65
    nginx 0.8 <= 0.8.37
    危害:
    黑客可以利用该漏洞直接在网站执行任意代码,从而有可能直接控制网站服务器,盗取网站数据,影响网站的正常运营。
    解决方案:
    升级Nginx至最新版本,官方网站:http://nginx.org/。