黑掉Github之我见, 漏洞Vs钓鱼

看了酷壳的这篇帖子: http://coolshell.cn/articles/11021.html (从黑掉 github 学web安全开发)

觉得有几点需要学习或者了解:

1. ff/chrome 都认为 <img src=”///attackersite.com”> 这个是一个绝对路径, 最终会转换为 <img src=”attackersite.com”> , 但是server的开发可能会用正则匹配,认为这个是一个相对路径。赞呀~~就我个人开发而言,我一般看到 开头是 “/”, 就认为是一个相对路径,当然还会做一个补刀操作就是在 “/” 之前加入自己网站的sheme, 整个域,port, web content path等。 例如 ** ///attackersite.com ** 就会补为:http://chillyc.info ** ///attackersite.com ** , 然后我估计就跳转到一个404的页面了。大家可以试试。

2. Referer 漏洞。 这个观念应该加强。 主要原因是,如果有外域的图片或者其他的什么信息,当前的url路径就会变为 reference 送给外域。特别是喜欢在 url中加入特殊认证信息的地方。例如sid啥的。 这里有两点可以规避, 第一是内域使用Https, 对于外域一般使用http,这样隐秘信息就不会通过reference 发送给外域。当然浏览器的某些版本也可能会禁止访问从Https页面发送给http页面的请求。第二个就是在HTML5, 使用, 标签可以加入 noreferer 这个属性,表示点击这个链接不会有Referer header发送。但是酷壳这篇文中使用的是 img 标签, 并且还是个内域的。这就无能为力了。

3. 对于 Oauth2 协议而言,其实只需要限制域名就可以。有时候限制callback URL 会让API的使用者非常难受。

4. 看完Oauth2攻击的那篇帖子,其实也就是只针对github中的gist这个东西产生了奇妙的漏洞。token都放在callback url中一起传。一般access token 是有server端获取code之后,使用consumer_secret来获取的。也就是如果没有应用的consumer_secret, 只有access token是没有用的。其实最简易的攻击就是自己做个应用,直接从server端获取access_token.这个比上面那些漏洞更加靠谱。所以做钓鱼应用就好了,嗯嗯,就是这样。