漏洞概要 关注数(37) 关注此漏洞
缺陷编号: WooYun-2013-20439
漏洞标题: PHPCMS 2008 最新漏洞(第一季)
相关厂商: phpcms
漏洞作者: 西毒
提交时间: 2013-03-21 22:47
公开时间: 2013-05-05 22:47
漏洞类型: SQL注射漏洞
危害等级: 中
自评Rank: 15
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 第三方不可信程序 php+字符类型注射 参数未过滤 phpcms php源码审核 php源码分析 白盒测试 Referer
漏洞详情
披露状态:
2013-03-21: 细节已通知厂商并且等待厂商处理中
2013-03-24: 厂商已经确认,细节仅向厂商公开
2013-04-03: 细节向核心白帽子及相关领域专家公开
2013-04-13: 细节向普通白帽子公开
2013-04-23: 细节向实习白帽子公开
2013-05-05: 细节向公众公开
简要描述:
先放第一季吧
详细说明:
在include/common.inc.php中 ,这是phpcms的全局要加载的配置文件
这里的话首先实例化了这个数据库,产生了一个$db资源句柄,他是用来操作数据库的
然后就是将我们传进来的参数进行变量化
这里有一些小过滤,自己可以看,所以这里传进来的参数就作为了变量
但是接下来这行呢?
看看这里?这里的QUERY_STRING来自前面
这里有个过滤,但是不影响
如果我们在这里进行覆盖这个db变量呢
因为这里 parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1]));
可以将我们传进去的/ - 进行替换
所以我们如果提交如下字符
http://localhost/phpcms/index.php?db-5/gid-xd.html
他由于这个db被覆盖就会出错,所以物理路径就爆出来了
在c.php中
注意这里的HTTP_REFERER这个常量
这里的常量是通过前面的common.inc.php定义好的
define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
没有经过任何过滤操作,所以你懂的,我估计很多同学已经发现了,只是没去公布了,所以俺就替你们xxoo了,哈哈...别骂我
然后
$db->insert($table, $info);
我们来看一下它这里的操作
所以你懂的
所以就可以xxoo了,很简单,exp已经写好了
暂时还只看一部分,可能一季一季的放吧
exp 我就放到https://forum.90sec.org 以及www.linux520.com里面去
大家去里面找
漏洞证明:
修复方案:
这个自己过滤吧!
版权声明:转载请注明来源 西毒@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2013-03-24 15:57
厂商回复:
希望还在使用08的朋友们尽快升级到v9。感谢提交问题。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值