【技术分享】做网站应该做到防火、防盗、防 @蟋蟀哥哥

红薯 发布于 2012/10/03 14:38
阅读 6K+
收藏 63

敬请注意:此为技术分享贴,非吐槽贴!

副标题:由一群鹅引发的网站安全问题讨论(动弹详情):

@蟋蟀哥哥 要求与我分享这群鹅,我没有理会,于是他故伎重演,为什么说故伎重演呢,因为这事情以前他干过,而后消停了一段时间。

下面进入纯技术分析阶段:

OSC 上有很多操作都是通过一些固定的链接来调用,举两个最具代表意义的链接:

注销: http://www.oschina.net/action/user/logout
顶贴: http://www.oschina.net/action/question/vote?id=xxxx&vote=up
踩贴: http://www.oschina.net/action/question/vote?id=xxxx&vote=down

只要在浏览器访问 http://www.oschina.net/action/user/logout 这个链接,已登录的用户就会退出登录状态;同理,只要访问下面两个链接就会有相应的顶和踩的动作。

国庆期间 @蟋蟀哥哥 主要是针对下面两个链接搞鬼。

搞鬼的手段如下:

1. 利用自己的网站生成一个跳转页面,跳转到上述几个 OSC 的地址
2. 随便到微博或者其他短网站服务上为自己的页面生成一个短链接(此步可选)
3. 在 OSC 上发动弹或者是其他形式的方法贴出前两步生成的链接
    可以采用一些吸引人的词汇,例如 苍井空高清无码之类的。

就这么挖了一个坑,因为 @蟋蟀哥哥 在 OSC 很活跃,很多人都晓得,于是也就相信了他发的链接,个个往坑里跳。于是乎就出现了:

1. 怎么点了个链接后就退出登录啊
2. 点了个链接就踩了某个贴或者顶了某个贴

这两天,@蟋蟀哥哥 用这种方法让很多人顶了他发的代码(不过他发的代码是挺好的),然后用同样的方法踩了我发的贴。

以上姑且称为漏洞分析,的确是 OSC 存在的不足,有问题不怕,解决的方法如下:

1. 将以上链接改为只允许通过 POST 方法才能访问
2. 给这些操作链接增加校验参数

请大家将鼠标移到页面顶部的“退出”链接上(不要点),浏览器会在底部显示该链接对应的 URL 地址,形如:

http://www.oschina.net/action/user/logout?session=d51b7f2fbd1429059494&goto_page=http%3A%2F%2Fmy.oschina.net%2Fjavayou

其中这个 session 参数就是我们加入的校验参数,它只跟当前访客用户有关,每个人都不同的。当点击此链接时,我们在服务器端的程序会判断取当前登录用户的资料,并比较资料中的 session 值和通过 URL 传递过来的 session 是否一致,如果一致则退出登录,否则不做任何处理。

@蟋蟀哥哥 是无法知晓你们的 session 值,因此他已经无法再伪造一个链接让你们点了就退出登录。

这个 session 值是在用户注册的时候随机生成的一个字符串。

这种方法稍微复杂了些,我们还可以将 session 简化为只传递当前登录用户的id,例如将顶贴链接修改为:

http://www.oschina.net/action/question/vote?id=xxxx&vote=up&user=xxxx

在生成此链接时 xxxx 替换为当前登录用户的 id,于是每个人看到的链接地址都是不同的,蟋蟀就只能生成针对某个人才有效的链接。

不管怎么说,蟋蟀这招挺损的,这种问题在多用户的各种社区中存在应该是比较普遍的,而且关键是要修复这个问题需要修改不少代码,而且涉及的地方也比较多。

而且 OSC 还存在不少此类的问题,看来需要做一次地毯式搜索一次性解决。

@蟋蟀哥哥 我祝你这个国庆过得真TMD的好啊!不过鹅呢,我们家决定留着自己吃

加载中
1
Lunar_Lin
明月惊鹊
明月惊鹊
陈毅是个好同志,这句鸟话救了他一命。O(∩_∩)O哈哈~
红尘一人
红尘一人
怎么让我想起 恩来是个好同志
1
mallon
mallon
学习了,其实严格讲这是欺骗不是漏洞,呵呵
汉唐
汉唐
回复 @蟋蟀哥哥 : 学习了这个名词,嘿嘿
蟋蟀哥哥
蟋蟀哥哥
是漏洞的。这种漏洞统一叫做csrf
1
leo108
leo108
CSRF嘛,加token处理
蟋蟀哥哥
蟋蟀哥哥
+1,是的。csrf..脚本在:http://www.oschina.net/code/snippet_130291_14287
0
Sephiroth
Sephiroth
这个很正常的,只要没有恶意利用的漏洞,一般不会产生太大问题;社工的方法,在哪里都适用,这个是防不住的。
0
布谷鸟
布谷鸟
矮油,还能这样搞哦。这种干坏事的方式怎么扫一眼就学会了,奇了个怪
0
蟋蟀哥哥
蟋蟀哥哥

@红薯 我晕啊。。你们怎么发现的。。。很隐蔽的啊。。。再说我也没有搞“退出登录的啊”。。

那个踩贴是无意中发现的。。而且发现@红薯 自己改数据库。。不让别人“踩”他帖子。。本来被踩了。。自己又改数据改回来。。。太损了。。。。

蟋蟀哥哥
蟋蟀哥哥
@红薯 你现在是真人还是AI
红薯
红薯
没改就没改,真人不说假话
铂金小猪
铂金小猪
回复 @蟋蟀哥哥 : 别扯上我呀。。。
蟋蟀哥哥
蟋蟀哥哥
回复 @红薯 : 咱可是有人证的。抵赖不了
铂金小猪
铂金小猪
回复 @红薯 : 肯定改过,不是你就是AI
下一页
0
蟋蟀哥哥
蟋蟀哥哥

把这里利用OSCHINA漏洞的PHP脚本分享出来了。。大家继续找。。继续利用:

OSChina.NET刷积分代码

利用效果:

0
中山野鬼
中山野鬼
哈。。。@红薯@蟋蟀哥哥 给你免费搞测试还是很不错的啊 。你应该奖励他开源比基尼。。
疯人院主任
疯人院主任
你们这家伙对这种器械挺在行的。
蟋蟀哥哥
蟋蟀哥哥
@中山野鬼 电动棒你去找@红薯 要。。不过多半是他自己用过的。你要用的话需要先消毒。
中山野鬼
中山野鬼
回复 @蟋蟀哥哥 : 就怕缩水成一个干电池。。哈。
蟋蟀哥哥
蟋蟀哥哥
@中山野鬼 你可以得一个电动棒
中山野鬼
中山野鬼
回复 @蟋蟀哥哥 : 。。。莫非我可以得到个 开源皮筋?哈。
下一页
0
leo108
leo108

引用来自“蟋蟀哥哥”的答案

把这里利用OSCHINA漏洞的PHP脚本分享出来了。。大家继续找。。继续利用:

OSChina.NET刷积分代码

利用效果:

其实根本不需要这些代码,执行csrf只要一个img标签就够了,还不需要用户点击连接,访问即中

<img src="http://www.oschina.net/action/user/logout"/>

 

蟋蟀哥哥
蟋蟀哥哥
回复 @leo108 : 我日。。别告诉他。。等我多玩会
leo108
leo108
回复 @蟋蟀哥哥 : 你个坑爹货,代码分享那的收藏也有,@红薯
蟋蟀哥哥
蟋蟀哥哥
回复 @leo108 : 因为顶两下会取消掉,所以我用了random。。这样的效果会好得多
leo108
leo108
好吧,没认真看你代码,效果是一样的
0
Fred
Fred

这种漏洞其实很古老了。最早见到有人用在CPS上。发几个帖子,别人点开以后相当于点击了cps的链接。 现在还是有不少电商的CPS存在这种问题。

打开天涯、猫扑、百度贴吧如果看到图片打红叉,在用chrome看看请求地址。就会发现大量CPS的地址。

蟋蟀哥哥
蟋蟀哥哥
是的。但是很好玩
返回顶部
顶部