来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 从域外https服务器提交的CSRF导致网易微博用户被动加关注,发微博,发私信,更改一些基本信息等.网易微博检查http header里面的referer信息防止CSRF。然而,如果http header不包含referer,网易...
从域外https服务器提交的CSRF导致网易微博用户被动加关注,发微博,发私信,更改一些基本信息等.
网易微博检查http header里面的referer信息防止CSRF。然而,如果http header不包含referer,网易的代码依然会认为这是一个合法的提交。估计这个处理是为了让某些关闭浏览器referer功能的用户不受影响而设置的。但是,这个做法的直接后果是导致攻击者可以利用这一点继续进行攻击。
什么时候可以让浏览器发出的http请求不带referer? 答案很简单,https向http跳转的时候。攻击者控制一个网易微博域外的https服务器(这个很简单,攻击者可以用自己的机器搭建这么一个服务器,将攻击代码放在这个服务器上,比如attack.php,然后利用 <iframe src="https://xxxxx.xxxxx/attack.php">之类的标签将攻击扩散出去),attack.php里面可以写上:
<form name="form1" action="http://t.163.com/relation.do?action=follow" method="POST">
<input type="hidden" name="userId" value="Attacker ID">
</form>
<script language="javascript">
document.form1.submit()
</script>
用户一旦点击,将会强行关注Attacker ID。当然,还能发微博,更改一些个人信息,我这里就不一一举例子了,希望厂商将所有用户可以提交信息的地方都好好检查一下。
特别说明,弄一个https服务器,需要一个有效的证书。买证书很贵的。。。不过呢,几乎所有的证书提供商都支持试用,一般1个月。浏览器默认支持很多trusted CA,每个提供商,式他一个月,几年就下来了,嘿嘿
当然,如果大量的关注能带来预期的效益,证书这点小钱黑阔还是出的起的,呵呵
受到攻击前:
攻击过程:
受到攻击后:
修复方案:
将referer为空的提交视为非法提交。当然,这样可能一些正常用户会受到影响。建议用加入随机数,authenticity_token的方法,升级整个网站的CSRF检查。
另外,希望厂商也检查下其他网易子站的代码,看是否也受影响
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com