Article Learn

基于burp插件的安全测试

Post by ECHO at 2016-10-25 16:27:55

注:本文为“小米安全中心”原创,转载请联系“小米安全中心”

上期回顾:证书检测二三事

前言

burp是很多web安全爱好者都会用到的神器,burp专业版集成了代理、fuzzing、重放、扫描等功能,对于自动化扫描功能来说,里面的poc都是官方集成好的,很难增加自己的特殊poc代码,最新版开放了burp的开发api,利用api可以很简单的集成自己的扫描poc,针对特定的站点进行针对性的扫描。

相对于其他扫描器,基于burp的自动化扫描可以不用考虑登入、cookie的处理问题,以及不用考虑爬虫爬不到的链接,只要你点击站点所有的页面后,burp的代理功能都会记录下请求来,设置不用考虑poc的插入位置问题,burp默认会对所有的位置进行poc的插入测试,连url里面的path路径都会涉及到。

基本知识

burp在extender标签中,可以增加自己的插件代码,支持python、ruby、java,在测试中发现,java的效率是最高的,并且开发起来,在ide中导入jar包很容易开发,比起python、ruby还需要第三方插件的支持,并且效率比起java还是比较慢。

在BAPP Store中有很多开发好的插件代码,可以下载下来,安装后,在指定的目录下面会有相应的python代码或者jar包存在,这些都是很好的学习代码,推荐几个比较好用的插件:

  • JSON Decoder,可以将json数据格式化,比较方便查看。

  • Active Scan++ 增加了一些本身自动化扫描没有的漏洞检查。

在APIs中是burp提供的api接口,自己没有接触过java代码,看起来比较费劲,可以先不用管他,可以在编写插件的时候了解到怎么使用和功能等等。

下面的save,可以将这些api文件保存起来,后面编写java代码直接调用相应的接口。

Options里面是一些设置,主要是设置一些运行环境,比如你想用python写插件的话,就需要安装jython第三方包了。

sql注入插件开发

开发插件使用的是IDEA,创建一个新工程,创建一个新的package,注意这里命名为burp,将我们下载好的api包导入这个package中,后面需要创建插件的主要代码程序,这里还需要注意,这个代码文件的命名需要是BurpExtender,这个是必须的。

这里我们做一个基于时间延时的sql注入扫描,sqlmap里面也有,但是sqlmap跑起来太慢,burp的自动化扫描,针对时间的sql注入扫描并不是很好用,poc比较少。

由于我们这个插件主要做的就是把参数后面增加poc或者替换参数值为poc再去访问,判断执行时间是否有延时。

看了Active Scan++的源码,在IScannerCheck接口中有自动化的扫描函数:doActiveScan,并且会自动化的把poc插入到每一个测试点中,我们做的就是把poc给他,然后访问,看访问执行到访问结束的时间。

给出简单代码:

这就是基于time延时的扫描插件,很简单的几行代码就能结合burp本身的优势将我们的poc增加到自动化扫描里面。

我自己结合cloudeye增加了命令执行的检查,简单的用curl,将当前有命令执行的请求传递到cloudeye的日志里面,测试过程中发现见有几个产生了dns请求,没有执行curl,没有访问日志。

AES加解密插件开发

在测试的过程中还需要一个问题,很多android在数据传输的时候对数据进行了加密处理,在测试的时候没有办法增加自己的poc来对进行测试,但是反编译app能发现AES的私钥硬编码在app中 。

这样可以在流量通过burp的时候对流量进行解密再增加poc再加密发送出去进行测试。

这个大牛们写过这方面的文章,自己也是在参考他们的基础上完成的。

这个AES的加解密插件只要针对不同的加密密钥更改就行,可以很方面的解密出app中传递的参数,有的app还有增加sign校验值,只要反编译app获取算法后一样可以增加到插件中,这样就能对加密和增加校验值的进行web测试了。

插件扫描结果

在测试新浪的服务的时候,直接打开自动扫描,可以把burp内置的扫描关闭掉,这样速度还是可以的,只要浏览sina的页面,插件自动进行扫描,结果发现sina的两处sql注入问题,这个要感谢川神的支持。


当然测试中针对不同的网站特定进行手工的测试,总结出通用的poc之后加入到插件中去,直接在访问页面的时候就可以发现漏洞了。

AES加解密的插件,利用起来可以查看一个乌云的一个案例Zealer_android客户端安全检测(请见参考资料1)。

TODO

  1. 学习java代码,优化插件

  2. 增加更多的扫描插件,需要更对测试,获取每个网站业务特定漏洞poc,后续可以集成到自己的一个插件框架下面,在burp下面增加可以增加poc的输入框。

总结

自己在java方面算是入门级别,这些也都是是参考各位大牛的基础上写的,过程中感觉很大一部分简单的知道java调用就行,主要是api的使用,当然会java的应该会编写出更加牛叉的测试插件,burp是个神器,在神器作为平台开发插件可以介绍很多工作量和避免很多坑。

有很多的神器都是提供插件的集成的,网页浏览chrome本身就是一个框架,可以自己写chrome插件,端口扫描神器nmap也可以自定义插件扫描,移动安全方面,android hook方面有xposed框架,应用安全检测方面有drozer框架,自己开发插件集成可以玩出很多花样。

—   联系我们   —

新浪微博

公众号