phpcms前台任意代码执行(有php版本限制)

漏洞概要

缺陷编号:WooYun-2015-0104157

漏洞标题:phpcms前台任意代码执行(有php版本限制)

相关厂商:PHPCMS

漏洞作者:xcrypt

提交时间:2015-03-27 14:40

公开时间:2015-06-25 16:32

漏洞类型:命令执行

危害等级:高

自评Rank:18

漏洞状态:厂商已经确认

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:Insertinto 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外面加上双引号。

漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-03-2716:30

厂商回复:

感谢提出

最新状态:

暂无

评价

  1. 2010-01-01 00:00 xsser 白帽子 | Rank:152 漏洞数:17)

    料不少

  2. 2010-01-01 00:00 核心粉木耳 白帽子 | Rank:0 漏洞数:0)

    需不需要登陆 这是个问题。。。。

  3. 2010-01-01 00:00 xsser 白帽子 | Rank:152 漏洞数:17)

    @核心粉木耳 不需要

  4. 2010-01-01 00:00 核心粉木耳 白帽子 | Rank:0 漏洞数:0)

    mark

  5. 2010-01-01 00:00 roker 白帽子 | Rank:138 漏洞数:14)

    卧槽。

  6. 2010-01-01 00:00 pandas 白帽子 | Rank:504 漏洞数:39)

    关注下

  7. 2010-01-01 00:00 f4ckbaidu 白帽子 | Rank:215 漏洞数:21)

    @finger 漏洞求审核http://www.wooyun.org/bugs/wooyun-2015-098828/trace/ad7d391ea57be3e37014046a5960faa7

  8. 2010-01-01 00:00 忆苦思甜 白帽子 | Rank:35 漏洞数:5)

    mark

  9. 2010-01-01 00:00 秋风 白帽子 | Rank:372 漏洞数:32)

    NB!

  10. 2010-01-01 00:00 Black Angel 白帽子 | Rank:115 漏洞数:22)

    不会是投票那个吧?!这就给放出来了?

  11. 2010-01-01 00:00 Azui 白帽子 | Rank:25 漏洞数:3)

    无需会员中心= =..

  12. 2010-01-01 00:00 Black Angel 白帽子 | Rank:115 漏洞数:22)

    我知道了 就是投票那个.. php需低于5.3

  13. 2010-01-01 00:00 xcrypt 白帽子 | Rank:61 漏洞数:6)

    @Black Angel 其他地方有相关细节?

  14. 2010-01-01 00:00 Black Angel 白帽子 | Rank:115 漏洞数:22)

    @xcrypt 我不知道,,我啥都不知道~

  15. 2010-01-01 00:00 岩少 白帽子 | Rank:139 漏洞数:10)

    又掀起不小的风波

  16. 2010-01-01 00:00 saline 白帽子 | Rank:204 漏洞数:22)

    @Black Angel 气死就是咯~

  17. 2010-01-01 00:00 牛肉包子 白帽子 | Rank:190 漏洞数:17)

    为啥php版本要低于5.3

  18. 2010-01-01 00:00 微尘 白帽子 | Rank:144 漏洞数:29)

    mark~~

  19. 2010-01-01 00:00 明月影 白帽子 | Rank:0 漏洞数:1)

    料多来的