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. .net中判断该应用程序是否已经启动,防止重复启动,监控程序启动是否正常

    //获取配置文件中的需要监控项 private static string MonitorServe = ConfigurationSettings.AppSettings["Monitor ...

  2. 32位和64位Ghost版Win8.1系统大全下载最新版

    Ghost版Win8.1系统企业版,下载完成后一定要使用校验工具验证GHO文件MD5值,如果不符请不要安装,不然安装失败后果自负.GHO文件路径一定不要带中文,否则无法安装.安装完成第一次进入桌面会黑 ...

  3. ListView控件的用法

    listView是一个可以用来显示视图列表的控件. 它使用适配器来为之提供数据和资源. ListView使用的基本步骤 得到ListView类型的对象mListView 生成适配器对象mListVie ...

  4. Objective-C调用Swift

    如果已经有了一个老的iOS应用,它是使用Objective-C编写的,而它的一些新功能需要采用Swift来编写,这时就可以从Objective-C调用Swift. Objective-C调用Swift ...

  5. VPN怎么连?

    VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”.VPN是通过特殊的加密的通讯协议在连接在互联网上的位于不同地方的两个或多个内部网之间建立一条专有的通 ...

  6. block的动态传值例子

    /*  写一个block传值  ,让两个数进行相除和相乘,在运行时动态决定采用哪种计算方式 */ #import <Foundation/Foundation.h> int main(in ...

  7. pthread 实现生产者消费者问题

    经典的生产者消费者问题,在这里用信号量和互斥量来实现生产和消费者模型   #include<cstdlib> #include<cstdio> #include<unis ...

  8. PHP 反射 ReflectionClass

    今天遇到了这样一个问题,如下代码: classA.php <?php class ClassA{ public function funcAa(){ } public function func ...

  9. [DOM]有一种节点叫做文本节点

    HTML可以看成是由节点(node)组成的树结构 我们一般都是在<p>节点里面写字符串. 在上图中,<p>节点和字符串之间有一个text, 这个text就是文本节点. 我们可以 ...

  10. ECSHOP购物流程收货人信息详细地址显示省市区

    方法一: 1.在flow.php中的 elseif ($_REQUEST['step'] == 'checkout') 中 $_SESSION['flow_consignee'] = $consign ...