热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【技术分享】使用Burp的intruder功能测试有csrf保护的应用程序

作者:王松_Striker & Jess_喵预估稿费:170RMB(不服你也来投稿啊!)投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿前言很多Web应用会有防止跨站请求伪造的策略

http://p6.qhimg.com/t0163d747c2dd42b17e.png

作者:王松_Striker & Jess_喵

预估稿费:170RMB(不服你也来投稿啊!)

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

很多Web应用会有防止跨站请求伪造的策略,比如通过request请求传一个当前页面有效或者当前会话有效的参数(如果他们没有,那就很值得研究)。这些参数用来证明这个请求是从预定用户发出的,而不是攻击者那里。

这些参数,用来防止用户因为被劫持而发出伪造的请求。企业的安全顾问来评估这些参数,过程非常繁琐。传统的扫描器和其他自动化工具不能够准确的提交这些参数,也因此变得不那么理想。

这篇文章将展示如何使用Burp的intruder的Recursive Grep  payload功能来自动提交有csrf保护的token的方法。


使用场景

我们使用一个自己开发的程序来展示这个例子。这个程序是一个带有防御csrf的token的简单搜索表单

我们的目的是通过这个搜索功能来查看是否有XSS漏洞。

当我们第一次加载这个页面,我们看到这个页面的源代码有一个hidden的输入框,name是csrf_token。每次刷新这个页面时,这个token都会改变。

http://p1.qhimg.com/t01a8318d2d6f4240d6.jpg

为了自动测试,我们需要一种在每次发送request请求时都能提交正确的csrf_token的方法。提交任何不匹配的数据都会导致报错或者在服务器端显示错误日志。


Recursive Grep功能

Burp工具提供了一个名叫recursive grep的payload,能够让你从攻击的前一个请求的返回包中提取出每个payload,我们可以利用这个功能从html中提取出csrf_token,重放到下一次请求中,以便进行自动化的fuzz攻击。

我们安装了一个burp的扩展,我们叫它xssValidator,用来自动测试xss漏洞。

我们可以使用burp的Recursive grep payload去提取csrf_token的值,结合使用xssvalidator payloads去自动发现应用中的有csrf保护的xss漏洞。

操作示范

像平时使用的一样,向intruder发送一个请求,定义这个你想要fuzz的插入点,定义了所有你需要的插入点后,找到http请求中发送csrf token的地方,然后也定义为一个payload。请记住这个payload的位置(position number),因为对于下一步来讲这很重要。

http://p3.qhimg.com/t016461c8c9ee1c8409.jpg

定义了所有payload之后,我们需要设置攻击方式,这个例子中,我们使用pitchfork方式。

我们从给COOKIE头配置csrf_token参数这个payload开始,在这个例子中,它在第一个位置。定义这个payload的类型为Recursive grep,如下图:

http://p5.qhimg.com/t015ccaa4982a596bce.jpg

下一步,我们需要定义这个payload需要从http返回包中提取的参数的位置,切换到options tab,浏览 grep-extract面板。

http://p3.qhimg.com/t01bf7690f9fc5ce20d.jpg

点击添加按钮,会展示出一个可以用来定义需要提取grep item的面板,有一些可选参数:用来定义开始和结束位置,或者使用正则来提取。这个例子中我们使用定义开始和结束位置的方法。

为了定义这个位置,只要简单的在http返回包中高亮选择这个区域即可。这个区域可以在header和body中。

http://p7.qhimg.com/t01dbf322d97ca08a55.jpg

在高亮显示这个所需区域后,你可以看到这个态势和结束选择被自动填写了,点击OK,现在你可以在grep-extract面板看到一个条目。

http://p1.qhimg.com/t018b096be4a89d9452.jpg

注意:burp默认的抓取长度是100个字符。在很多情况下太少了,别忘了配置一下。

Recursive grep payload 要求intruder 进行单线程攻击。以确保payload被正确重放,切换导航到request engine面板,设置线程为1。

http://p0.qhimg.com/t0150dd6fc66ae4cf06.jpg

这个时候,我们需要完成配置这个payload。切换回payload tab,到Recursive grep payload设置。在payload选项中,你现在可以看到一个列表中有一个extract  grep  条目可以选择,确定这个被选择了。在这个例子中,你将看到我们提供了一个初始的payload值。很多时候,我们当测试csrf防御的应用时,第一次请求需要是一个有效的token,来确保不会由于发送非法token而触发任何反csrf的功能。

到这里我们已经完成了对Recursive grep payload的定义可以继续定义其他的payloads了。

例子中的应用有两个位置:search和csrf_token。我们试图注入搜索参数。这个csrf_token参数则是需要从其他地方获取的token。

我们测试这个应用的xss漏洞,因此我们安装了xssValidator扩展去测试position number 2.这个扩展需要利用外部phantomJs服务器通过burp intruder 准确的寻找xss漏洞。 欲了解更多信息,请访问我们的博客文章:使用BurpSuite和PhantomJS精确检测xss漏洞(http://blog.nvisium.com/2014/01/accurate-xss-detection-with-burpsuite.html)。

在位置3 我们需要再次提供csrf_token。我们已经在位置1使用burp的Recursive grep获取了token,我们现在可以使用burp的copy other payload 去复制前一个payload定义的值。在我们的例子中,我们让payload的位置1和3有相同时值。

http://p8.qhimg.com/t019f60eb6c787a5b03.jpg


执行攻击

现在我们定义了所有的payload,我们已经为发动这个攻击做好准备。来吧,快活吧~ 在执行过程中,你将会看到burp自动的从前一次的请求中获取csrf_tokenm并把它作为下一次请求的payload中的值。同样,你会注意到我们例子中使用的payload1和payload3具有相同的值。因为我们使用了burp的copy other payload的功能在多个位置传递csrf_token 。

http://p0.qhimg.com/t0138c3760d1c7eaae6.jpg

这个案例中,我们看到有一列名字是fy7sdu…,这列来自xssValidator扩展,当选中的时候,表示这里可能会有xss漏洞。


总结

我们已经证明,仅仅因为一个应用程序有防御csrf的 token, 视图对象或者其他相似的场景,并不意味着无法自动测试。Burp的recursive grep payload是对于测试web应用是非常有用的功能。

如果你想测试一个重定向的页面,定义extract grep item的面板目前不提供跟踪重定向,尽管设置了重定向选项。如果你手动添加这个值,intruder将会在执行payload的过程中按照期望跟踪重定向。PortSwigger发现了这个问题并将会推出相关的修复。

最后,如果你对示例的应用程序有兴趣,你可以访问github上的源代码:https://github.com/mccabe615/sinny。如果对代码不感兴趣,只是想测试,您可以免费使用我们部署的版本:http://sleepy-tor-8086.herokuapp.com/。


参考文献

 [1] http://portswigger.net/burp/help/intruder_payloads_types.html#recursivegrep


推荐阅读
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
author-avatar
mobiledu2502880747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有