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

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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语法的松散性。

10.jpg


以上代码语法上存在错误,但在php 5.2.17上可以正常运行,在5.3.29和5.4.30上测试失败。所以该漏洞在较高版本的php上暂时没法利用。

漏洞证明:

5.jpg


投票结果展示的关键代码。

11.jpg


$data对应数据库中v9_vote_data表的data字段。正常的值如下

9.jpg


数组的键名可控,来自提交的radio数组,然后经过了array2string函数处理。

13.jpg


构造如下post数据,gbk和utf-8版本利用代码相同。

7.jpg


数据库中的值如下

12.jpg


14.jpg

修复方案:

eval里面的$data外面加上双引号。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-03-27 16:30

厂商回复:

感谢提出

最新状态:

暂无