CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。一般来说,CSRF是除XSS外最常见一种漏洞,也是一大刷分利器。 有关CSRF的具体利用,CEO早在 08年就给我们详细介绍了,大家可以去膜拜下:
文章链接http://blog.csdn.net/lake2/Article/details/2245754

下面分享下我个人在测CSRF漏洞时绕过防御的一些主要经验,希望能和大家一起交流下。目前腾讯百度等站点防御CSRF漏洞的主要方法是添加
token(一般参数名为g_tk,bdtoken)与referer验证,相信大家在很多时候抓包一看有token或者删除referer重新发包报错
了就会觉得这里不会有csrf漏洞了,可实际情况可不一定。还有一种常见情况就是使用验证码,这种情况我暂时没找到什么方法,查阅了一些网络资料,目前识
别验证码的方法都无法直接利用到绕过CSRF防御上来,所以不考虑用户体验的话,验证码是防御CSRF攻击的最有效的方法。如果有大牛有其它思路绕过的话
希望能分享给大家一起讨论下。

情况A:
无token无referer验证这种情况现在比较少了,一般出现在一些新上线的业务。我一般测试时都是用Firefox的Live
Http
Headers插件先抓取一个正常请求的数据包,如果没token的话,先去掉referer字段再重新提交看返回值。如果没报错的话,那就可以直接写一
个表单(POST型)或者构造个链接(GET型)重新测试了,一般都会成功;但有些通过ajax提交的是行不通的,因为ajax无法跨域。
如下图1:

情况B: 
无token有referer验证这种情况比较常见,也许我们抓包发现无token正庆幸时,删除referer重新提交一看发现报错了,难道就这样放弃了么?当然NO。。。 
一.我们可以试试空referer:即删除header中的referer的值,如果服务器只是验证了是否存在referer没验证referer值
的话,我们重新提交会发现一个CSRF漏洞又被发现了~因为所有跨协议传递的请求都是不会送referer的,如https->http,(这个利
用成本有点高)还有javascript->http,data->http.如下面两个例子: 
1.javascript->http <img
src=http://hiphotos.baidu.com/aullik5/pic/item/b2cdb444a5ea4402cffca317.jpeg
/> <script> window.sc="<img
src='http://www.businessinfo.co.uk/labs/hackvertor/images/logo.gif?"+Math.random()+"'>"; </script> <iframe
src="javascript:parent.sc"></iframe> 2.data->http
<iframe
src="data:text/html;
base64,PGltZyBzcmM9aHR0cDovL2hpcGhvdG9zLmJhaWR1LmNvbS9hdWxsaWs1L3BpYy9pdGVtL2IyY2RiNDQ0YTVlYTQ0MDJjZmZjYTMxNy5qcGVnIC8+" ></iframe> //base64
加密的部分实际上就是我们构造的CSRF链接

二.我们可以试试修改referer值:如果原referer值为Referer:
t.qq.com/xxxx 话,我们可以试试修改为Referer:
t.qq.com.baidu.com/xxx。如果服务器只是验证了referer是否存在qq.com或者t.qq.com等关键词的话,争对前一种
情况,我们可以在腾讯某子站点(http://xx.qq.com)发个帖子将图片地址修改为我们构造的csrf链接或者写好CSRF表单后将地址发布在
微博上等待其它用户点击,针对后一种情况我们可以建立个t.qq.com.yourdomain.com的域名存放CSRF表单来绕过REFERER检
测; 
三.伪造referer(具体方法我也没测试过,可自行百度) 
如下图2,图3:

CSRF手工测试方法的更多相关文章

  1. Python自动单元测试框架

    原文链接:http://www.ibm.com/developerworks/cn/linux/l-pyunit/ 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写 ...

  2. [转] Python自动单元测试框架

    一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software ...

  3. 在Python中进行自动化单元测试的教程

    From: https://www.jb51.net/article/64119.htm 一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必 ...

  4. ssd a

    Alpha版本测试报告 (1)测试计划 测试人员 工作安排 瞿煌人 制定测试计划,撰写测试报告 周建峰 执行测试,撰写测试报告 注:测试结果Y表示通过测试,N表示未通过测试. 功能 描述 效果 测试结 ...

  5. Python之自动单元测试之一(unittest使用实例)

    软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作.既然如此,为什么不让程序员在编写软 ...

  6. [转载]手工安全测试方法&修改建议

    转载自: Web安全测试(一)-手工安全测试方法&修改建议 1.XSS(Cross-Site Script)跨站脚本攻击 XSS(Cross-Site Script):跨站脚本攻击. 它指的是 ...

  7. Web安全测试(一)-手工安全测试方法&修改建议

    常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...

  8. Web安全测试 — 手工安全测试方法&修改建议

    常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...

  9. 转:初学者,手工注入测试方法小节 (出处:: 51Testing软件测试网--jie)

    1.加入单引号 ’提交,  结果:如果出现错误提示,则该网站可能就存在注入漏洞.    2.数字型判断是否有注入; 语句:and 1=1 ;and 1=2 (经典).' and '1'=1(字符型)  ...

随机推荐

  1. IIS服务器应用程序不可用的解决办法

    转载:http://www.cnblogs.com/caicainiao/archive/2010/11/29/1891085.html 这个问题见了好几次,在.net下 Microsoft visu ...

  2. Red Hat Enterprise Linux 5安装序列号

    为了保证安装的组件和订阅相匹配,红帽企业 Linux 5 需要输入一个安装号.它被用来配置安装程序来提供正确的软件包.安装号码包含在你的订阅里. 如果您没有输入安装号码,只有核心服务器或 Deskto ...

  3. 关于MySql entity framework 6 执行like查询问题解决方案

    原文:关于MySql entity framework 6 执行like查询问题解决方案 本人不善于言辞,直接开门见山 环境:EF6.0.0.0+MySQL Server5.6+MySqlConnec ...

  4. jQuery 自定义事件的学习笔记

    jquery中提供了两种方法可以绑定自定义事件: bind()和one()而绑定的自定义事件的触发,必须得用jquery中的trigger()方法才能触发. 我们先来看on事件  代码如下 复制代码 ...

  5. 非Page类使用session(Httpcontext.session和page.session区别)

    ASP.NET中Session高级使用技巧 在开发Aspx .NET软件时,有时需要把常用的东西封装到一个非PAGE类中,文章介绍在非Page类中使用Session的方法. 一.PAGE参数法: 1. ...

  6. 20分钟入门Redux

    Redux就是个数据中心,不依附于任何框架在哪使用都行.但是和它最搭配的应该就是React了,而且大家学习它的动力大多也是解决React状态管理的问题.都说Redux文档详尽清晰,但我感觉并不友好,它 ...

  7. 问题解决:引入com.sun.management.OperatingSystemMXBean 出错

    不能import  com.sun.management.OperatingSystemMXBean 解决: Eclipse默认把这些受访问限制的API设成了ERROR.只要把Windows-Pref ...

  8. Oracle创建新用户

    1.以DBA身份登录 $ sqlplus sys/eastcom@ORCL as sysdba(在命令窗口下) 也可以使用PL/SQL 2.创建临时表空间 create temporary table ...

  9. GDI+

    1, 编译error的话一般是却 #include <comdef.h>#include <Windows.h> Windows.h内会包含Windows.h,但是因为在std ...

  10. 《C#高级编程》

    <C#高级编程>是一本真正的C#技术"字典",长达36章.1200页的内容-涵盖了C#..NET各个方面的基础内容. 当然这本书我没有真正的看过一遍,只是在需要的时候才 ...