漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0104157
漏洞标题:phpcms前台任意代码执行(有php版本限制)
相关厂商:phpcms
漏洞作者: xcrypt
提交时间:2015-03-27 14:40
修复时间:2015-06-25 16:32
公开时间:2015-06-25 16:32
漏洞类型:命令执行
危害等级:高
自评Rank:18
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-03-27: 细节已通知厂商并且等待厂商处理中
2015-03-27: 厂商已经确认,细节仅向厂商公开
2015-03-30: 细节向第三方安全合作伙伴开放
2015-05-21: 细节向核心白帽子及相关领域专家公开
2015-05-31: 细节向普通白帽子公开
2015-06-10: 细节向实习白帽子公开
2015-06-25: 细节向公众公开
简要描述:
还是string2array函数,之前有人提到过了,但这次在前台找到了利用方法。20150305的补丁仍没有修复。
详细说明:
在后台利用该函数执行代码比较简单,但前台利用需要使用到mysql和php的2个小特性。
首先利用了mysql的一个特性,mysql在存储数据的时候会根据当前数据库的字符集来校验数据,发现非法数据时会抛弃其后续数据。
当表的字符集是utf8_general_ci时,测试SQL:Insert into table values (concat('ab', 0x80, 'cd')),因为0x80不是有效的UTF-8字符,所以只有ab被写入数据库中,cd会被截断。
当表的字符集是gbk_chinese_ci时,测试SQL:Insert into table values (concat('ab', 0x8027, 'cd')),因为0x8027不是有效的gbk字符,所以只有ab被写入数据库中,cd会被截断。
第二个是利用了php语法的松散性。
以上代码语法上存在错误,但在php 5.2.17上可以正常运行,在5.3.29和5.4.30上测试失败。所以该漏洞在较高版本的php上暂时没法利用。
漏洞证明:
投票结果展示的关键代码。
$data对应数据库中v9_vote_data表的data字段。正常的值如下
数组的键名可控,来自提交的radio数组,然后经过了array2string函数处理。
构造如下post数据,gbk和utf-8版本利用代码相同。
数据库中的值如下
修复方案:
eval里面的$data外面加上双引号。
版权声明:转载请注明来源 xcrypt@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2015-03-27 16:30
厂商回复:
感谢提出
最新状态:
暂无