Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1198801
  • 博文数量: 272
  • 博客积分: 3899
  • 博客等级: 中校
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-15 14:53
文章分类

全部博文(272)

文章存档

2012年(272)

分类: 网络与安全

2012-06-15 17:12:14

注:版权所有,转载请注明出处。

今天是双休日,回来的有点晚,把今天的漏洞补上。

CSRF跨站点请求伪造的全称,估计很多程序员了解注射,了解跨站,但却还不了解CSRF

定义如下:
即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL,或者欺骗性的表单,从而修改用户数据。

为了帮助大家理解,漏洞演示如下:

CSRF漏洞1: 删除任意好友漏洞
测试用户有如下好友:
然后我们在某个第三方网站上构造一个恶意html页面,诱使该用户打开这个页面。
该页面将向baidu提交请求,删除这个好友.

请注意url,是在一个第三方网站。

当正常用户看完这个页面后,发现自己的好友被删除了

实际上,该恶意页面就是构造了一个表单向百度服务器提交,源代码如下:
post" action="" >
Commit" >
3" >
29" >
aullik5" >

testuser" >

parent.DEL_FRD_CALLBACK" >






" >

如上,由于baidu区分了POST和GET,所以需要构造一个表单后post到服务器,在这里是使用js自动提交:fvck.submit();

baidu的一个事件调用过程,好像还有类似回调函数一样的东西,所以最后用了个img标签来GET一个请求,最终完成了这次CSRF的过程。

由于CSRF需要用到session cookie,而Baidu的cookie有两种,一种是session cookie,只在当前浏览器有效;一种是可以保存在本地的永久cookie,在登录时候可选
所以,为了新开浏览器访问第三方恶意页面时候,也能够成功CSRF,请在登录时候选择“记住我的登录状态

分析上面的表单,可以看到,其中没有任何token或者hash一类的字段,就是说,全部都是固定的或是可预测的,这就为CSRF提供了可能。

事实上,baidu在防止重复提交方面还是做了很多工作的。比如陌生人发表评论时候的验证码,除了防止spam外,也可以防止csrf;
另外,baidu还有个spvcode的是用来防止重复提交的,这个hash值是每次都会随机生成的,所以在无法获取这个hash值的情况下,是无法成功CSRF的。当然如果被XSS了从而获得hash,又是另外一回事了。

但是情况是当是空间owner自己的时候,好像这个spvcode是不会出现在表单里的,就是说,如果某个用户处于登录状态,我们是可以放心的去CSRF他的。

除了删除好友外,经过测试,非常多的功能都存在这些缺陷:没有token,参数可预知或指定
包括: 添加好友、发表文章、修改自己的资料、修改空间title之类,当然还有更多功能,都可以根据我提供的表单来进行类似的测试。

想想在你不知情的情况下,自己的资料就被修改了,是多么可怕的事情。

在Baidu空间,将会非常容易发起一个CSRF Worm

预知后事如何,且听下回分解!


PS:本次活动仅仅是个人行为,与任何组织或集体无关。

明天将发布一个非常猥琐的漏洞,敬请关注。
阅读(1051) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~