当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(1) 关注此漏洞

缺陷编号: WooYun-2011-01376

漏洞标题: 盛大网站漏洞修复方案不完整导致可能代码执行

相关厂商: 盛大网络

漏洞作者: BNE

提交时间: 2011-02-21

公开时间: 2011-03-23

漏洞类型: 命令执行

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经确认

漏洞来源: http://www.wooyun.org

Tags标签: nginx解析漏洞 安全意识不足 文件上传 逻辑缺陷 代码执行


漏洞详情

披露状态:

2011-02-21: 细节已通知厂商并且等待厂商处理中
2011-02-21: 厂商已经确认,细节仅向厂商公开
2011-03-03: 细节向核心白帽子及相关领域专家公开
2011-03-13: 细节向普通白帽子公开
2011-03-23: 细节向实习白帽子公开
2011-04-07: 细节向公众公开

简要描述:

盛大网站由于对漏洞理解有所偏差,没有按照实际情况进行漏洞修复,导致修复方案可以被绕过而失效。

详细说明:

之前盛大出过因为nginx+fastcgi-php造成的代码执行漏洞。后续盛大依照80sec的漏洞公告上的解决方案,对漏洞进行了简单修补:

if ( $fastcgi_script_name ~ \..*\/.*php ) {
	return 403;
    }



然而实际上,盛大的网站php fastcgi设置则不光是扩展名为php才能访问。
我们随便一个sdo的网站做一下实验:

http://forum.dev.sdo.com/robots.txt/s.
http://forum.dev.sdo.com/robots.txt/s.php
http://forum.dev.sdo.com/robots.txt/s.php5


以上连接均返回:

No input file specified.


而其余的链接则返回标准的http 404错误页面。
这说明只要扩展名为空、php、php5,都会被nginx传入后端的fastcgi进行处理,因此返回的是php-fastcgi的输出结果。
由此我们推测,盛大的php-fastcgi配置如下:

location ~ .*\.(php|php5)?$
	{      
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9001;
      fastcgi_index index.php;
      include fcgi.conf;
    }



如果厂家没有选择关闭cgi.fix_pathinfo的方式进行修补,而只是机械照搬80sec提供的临时性解决方案针对了url中包含php的链接进行了屏蔽,就可以通过以上几种链接方式绕过修复方案重现漏洞。

BTW:实际上这个问题不光是盛大出现,我估计网络上是有个教程之类的东东误导了大家,有很多人的php-fastcgi是配置成"location ~ .*\.(php|php5)?$"形式的。

漏洞证明:

经过测试,果然发现盛大创新园的blog存在问题配置,可以利用:

http://in.sdo.com/wp-content/plugins/tdo-mini-forms/tdomf-style-form.css/s.


修复方案:

使用cgi.fix_pathinfo=0的方式,一劳永逸。
或者根据自己网站的php-fastcgi设置,定制一个url屏蔽列表。

版权声明:转载请注明来源 BNE@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2011-02-21

厂商回复:

多谢BNE提交漏洞信息!

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评论

  1. 2011-02-21 18:32 | xsser (核心白帽子 | Rank:249 漏洞数:17 | 你说这个城市很脏,我觉得你挺有思想)
    0

    牛逼大了

  2. 2011-12-09 09:29 | softbug ( 普通白帽子 | Rank:47 漏洞数:3 | 为人类设计最好的软件,解放人的双手,一起...)
    0

    分析的不错,这才是牛人 BNE 顶! 后面留言的 请依次保持队形!

登录后才能发表评论,请先 登录