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

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

缺陷编号:wooyun-2015-0146387

漏洞标题:mao10cms多个漏洞打包

相关厂商:mao10.com

漏洞作者: pang0lin

提交时间:2015-10-15 10:54

修复时间:2016-01-17 22:22

公开时间:2016-01-17 22:22

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

包括多个存储型XSS,越权

详细说明:

1.首先来看存储型XSS漏洞,这个漏洞的根源在于mao10cms对于富文本的过滤函数不完善,我们来看mao10cms的过滤策略。

function mc_remove_html($text, $type = 'html') {
if($type=='all') {
$text = nl2br($text);
$text = real_strip_tags($text);
$text = addslashes($text);
$text = trim($text);
} else {
// 无标签格式
$text_tags = '';
//只保留链接
$link_tags = '<a>';
//只保留图片
$image_tags = '<img>';
//只存在字体样式
$font_tags = '<i><b><u><s><em><strong><font><big><small><sup><sub><bdo><h1><h2><h3><h4><h5><h6>';
//标题摘要基本格式
$base_tags = $font_tags . '<p><br><hr><a><img><map><area><pre><code><q><blockquote><acronym><cite><ins><del><center><strike>';
//兼容Form格式
$form_tags = $base_tags . '<form><input><textarea><button><select><optgroup><option><label><fieldset><legend>';
//内容等允许HTML的格式
$html_tags = $base_tags . '<ul><ol><li><dl><dd><dt><table><caption><td><th><tr><thead><tbody><tfoot><col><colgroup><div><span><object><embed><param>';
//专题等全HTML格式
$all_tags = $form_tags . $html_tags . '<!DOCTYPE><meta><html><head><title><body><base><basefont><script><noscript><applet><object><param><style><frame><frameset><noframes><iframe>';
//过滤标签
$text = real_strip_tags($text, ${$type . '_tags'});
// 过滤攻击代码
if ($type != 'all') {
// 过滤危险的属性,如:过滤on事件lang js
while (preg_match('/(<[^><]+)(ondblclick|onclick|onload|onerror|unload|onmouseover|onmouseup|onmouseout|onmousedown|onkeydown|onkeypress|onkeyup|onblur|onchange|onfocus|action|background|codebase|dynsrc|lowsrc)([^><]*)/i', $text, $mat)) {
$text = str_ireplace($mat[0], $mat[1] . $mat[3], $text);
}
while (preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i', $text, $mat)) {
$text = str_ireplace($mat[0], $mat[1] . $mat[3], $text);
}
}
}
return $text;
};


2.可以看出mao10cms过滤了很多危险的标签,事件等。但是对标签和事件的过滤还是不完整,可以用embed和object标签进行绕过。以互动社区----新建话题为例,同样的问题多处存在

1.png


新建话题的过程中,进行抓包。修改其中的content字段为

%3Cobject%20data%3D%22data%3Atext%2fhtml%3Bbase64%2CPHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ%2b%22%3E%3C%2fobject%3E


该段payload,是对object标签进行urlencode编码之后的结果。

3.png


3.然后可以看到添加的话题

2.png


4.再来越权漏洞,定位到文件
do/cart_delete.php文件

<?php  
require 'functions.php';
if(mc_user_id()) :
if($_POST['id']>0 && $_POST['url']) :
$db->where('id',$_POST['id']);
$cart = $db->getOne('rank_to_pro');
if($cart['id']>0) :
if($cart['package']>0) :
$db->where('package',$cart['package']);
else :
$db->where('id',$cart['id']);
endif;
if($db->delete('rank_to_pro')) :
mc_update_stock($cart['pro_id'],$cart['parameter'],1);
$url = $_POST['url'].'&showcart=1&done=删除成功';
else :
$url = $_POST['url'].'&showcart=1&done=删除失败';
endif;
else :
$url = mc_option('site_url').'?done=操作参数有误&showcart=1';
endif;
else :
$url = mc_option('site_url').'?done=操作参数有误&showcart=1';
endif;
else :
$url = mc_option('site_url').'?m=user&a=login&done=请先登录';
endif;
Header("Location:$url");
?>


可以看出这里mao10cms只是验证了是否登录,而没有验证cart是否属于该用于,没有对所有权进行验证。这就有越权删除他人cart的漏洞
5.同样的越权漏洞还有,do/comment_delete.php

<?php  
require 'functions.php';
if(mc_user_id()>0) :
if($_GET['id']>0) :
$db->where('id',$_GET['id']);
$comment = $db->getOne('comments');
if($comment['id']>0) :
$db->where('id',$_GET['id']);
if($db->delete('comments')) :
$url = mc_option('site_url').'?m=shop&a=topic&id='.$comment['topic_id'].'&done=删除成功';
else :
$url = mc_option('site_url').'?m=shop&a=topic&id='.$comment['topic_id'].'&done=删除失败';
endif;
else :
$url = mc_option('site_url').'?done=参数错误';
endif;
else :
$url = mc_option('site_url').'?done=参数错误';
endif;
else :
$url = mc_option('site_url').'?m=user&a=login&done=请先登录';
endif;
Header("Location:$url");
?>


和上面一样,可以越权删除他人的comment。

漏洞证明:

2.png


越权的就不截图的,相信程序员懂得。截图的话不好比较,麻烦

修复方案:

过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-10-19 22:21

厂商回复:

感谢指正

最新状态:

暂无