注:版权所有,转载请注明出处。今天是双休日,回来的有点晚,把今天的漏洞补上。CSRF是跨站点请求伪造的全称,估计很多程序员了解注射,了解跨站,但却还不了解CSRF定义如下:即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL,或者欺骗性的表单,从而修改用户数据。为了帮助大家理解,漏洞演示如下:CSRF漏洞1: 删除任意好友漏洞测试用户有如下好友:然后我们在某个第三方网站上构造一个恶意html页面,诱使该用户打开这个页面。
该页面将向baidu提交请求,删除这个好友.
请注意url,是在一个第三方网站。
当正常用户看完这个页面后,发现自己的好友被删除了
实际上,该恶意页面就是构造了一个表单向百度服务器提交,源代码如下:window.location.href = document.getElementById("fvck").spurl.value;alert(document.getElementById("fvck").spurl.value);alert("/CSRF Baidu!/");fvck.submit();" >
如上,由于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:本次活动仅仅是个人行为,与任何组织或集体无关。
明天将发布一个非常猥琐的漏洞,敬请关注。
阅读(1066) | 评论(0) | 转发(0) |