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

全部博文(272)

文章存档

2012年(272)

分类: 网络与安全

2012-06-15 15:57:54

这两天hi群里在讨论关于csrf实现条件的问题,茄子指出了在IE环境下,csrf只是针对session cookie有效,而本地保存的stored cookie在变成当前IEsession cookie前,跨域提交是会被IE阻断的。

通俗来讲就是如果浏览器进程中没有缓存过第三方站点,没访问过,那么使用img/ iframe 标签等跨域访问第三方站点是会被阻断发送cookie的。 这时候的CSRF就会仅仅只是get或者post请求,而不会发送cookie,那么很多需要 验证的提交都会失败。

实际上这里是浏览器的一个cookie安全机制,不光是img iframe等标签,直接 跨域 post或者 get都可能出现这种问题 (使用session cookie stored cookie的区别)。 

我以前做的一个xss测试, xss成功了3000多次,但 csrf 的一个跨子域的请求却只成功了 100多次, 当时总找不到原因,以为是payload稳定性的问题,现在想来应该就是这个跨域提交被阻断cookie的原因了。

那么根据设想,为了提高csrf的成功率,我们可以在xss后使用一次 window.open(),让用户开个小窗先访问下需要csrf的域,刷出来 一个session cookie,然后就可以csrf了。 不过这个想法还需要测试,而且也不够隐蔽。

PS: Firefox不存在这种阻断cookie的机制


茄子的tips
http://xss.betaslife.com/blog/?p=24

阅读(2647) | 评论(0) | 转发(0) |
0

上一篇:一个有点扯淡的PPT

下一篇:关于ASLR的绕过

给主人留下些什么吧!~~