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/。