本期嘉宾:3stoneBrother,京东集团攻防与实验室安全工程师,业务蓝军负责人,熟悉Web渗透测试,长期致力于甲方Web业务安全方向攻击与防御研究。
✎小课堂黑板报
上期我们谈到漏洞挖掘的基本思路,本期将继续和大家探讨,如何根据实际需求开发出提高安全测试效率的工具,以支持漏洞的挖掘。
目前业内不乏优秀的工具,CO2, Logger++, Autorize, XSS Validato都是不错的选择,但通用化的工具不能完全符合Web安全测试人员的特定需求。从实际业务的操作效率方面考虑,独立开发出适用实际业务的插件是必要的。
基于工具开发的基本思路,我们主要从开发环境配置、关键接口讲解和检测插件开发三个方面进行讲解。
基础知识:burpsuite
数据信息在用户端最终是希望展示给使用者的,需要进行明文展现,这种基于用户体验角度的考虑恰好为攻击者提供了机会,现阶段的攻击者更倾向于在用户端利用这类弱点进行攻击。
传统的安全防御设备和防御措施对逻辑漏洞的治理收效甚微,而且逻辑漏洞的种类相当丰富。在实际业务处理中,通用的逻辑漏洞解决方案往往效果不佳,但一个业务层抽象得来的模型,在其自身站点往往具有通用性。
例如,某个URL存在越权,可能该站点的其他URL也存在类似的问题。我们基于该URL的特征,自行独立开发出burpsuite插件,对该站点进行批量扫描,就能更全面的发现同类问题。
Step 1 独立开发环境配置
burpsuite插件的独立开发,需要在某个配置环境下进行。burpsuite支持Java、Python、Ruby三种语言的扩展,下面以python语言环境为例进行讲解。
burpsuite会在java环境下运行,涉及的数据库基本都是java语言的脚本。Python作为开发语言,想要调用Java库就需要借助Jython:
我们以MacOS为例,
代码运行: brew install jython
Jython环境的配置:
Extender-> options -> python Environment -> select file,导入已下载好的jython jar数据包(操作至下图所示即可)
Step 2 插件开发关键接口
burpsuite插件的独立开发环境配置完毕,就需要关注到插件的接口。
下面重点讲几个关键接口的实例:
1. API
或通过以下链接进行查阅:
https://portswigger.net/burp/extender/api/index.html
2. IBurpExtender
4.IExtensionHelpers
IExtensionHelpers接口提供了插件编写扩展中常用的一些通用函数。 如:
IRequestInfo analyzeRequest(byte[] request)analyzeRequest函数
我们通过如上函数可以拿到请求的细节。
IHttpRequestResponse接口包含了每个请求和响应的细节,我们在brupsuite中的每个请求或者响应都是IHttpRequestResponse实例。通过getRequest()可以获取请求和响应的细节信息。
这里需要注意的是,如果我们没有注册,processHttpMessage方法是不会生效的。processHttpMessage是处理请求和响应包的必要插件。代码运行:
processHttpMessage(inttoolFlag,booean messageIsRequest, IHttpRequestResponse messageInfo)
通过messageInfo这个参数,我们可以获取到request和response日志。
下图是个demo,我们在做渗透测试的过程中,会遇到目录字典不全的情况,我们可以将这个URI生成目录字典,为目录爆破做准备。
Step 3 逻辑漏洞检测插件开发
重点的开发接口实现完毕,我们就可以进入到具体的业务场景,例如开发出逻辑漏洞的检测插件,具体步骤如下:
确认哪些是有效的cookie值
a.在burpsuite中拦截数据包进行cookie值的获取(注:cookie指某些网站为了辨别用户身份而储存在用户本地终端上的数据)。
b.获取到cookie值,接着是遍历每个cookie,用单个cookie分别进行请求,根据响应的长度确定哪个cookie是有效cookie,代码运行参考下图:
这样可以检测逻辑漏洞的插件的开发好啦。
AES和DES属于对称加密,即用户端和服务器端都可以找到秘钥,我们找到密钥即可进行逻辑漏洞测试。
运行如下代码获取订单ID密文:
在burpsuite的检测思路小结:
1.遍历明文ID
2.对明文ID进行加密生成字典
3.利用burpsuite的爆破插件进行爆破。
遇到参数加密的情况并不可怕,既然是对称加密,那么我们一定可以在用户端获得密钥,通过对js代码进行分析往往就能够取得密钥。
获取参数列表
若作为插件开发更改AES秘钥即可。
附: 逻辑漏洞检测插件推荐
Broken Access Control
Burplay/Multi Session Replay - Burplay is a Burp Extension allowing for replaying any number of requests using same modifications definition. Its main purpose is to aid in searching for Privilege Escalation issues.
AuthMatrix - AuthMatrix is a Burp Suite extension that provides a simple way to test authorization in web applications and web services.
Autorize - Automatic authorization enforcement detection extension for burp suite written in Jython developed by Barak Tawily in order to ease application security people work and allow them perform an automatic authorization tests.
AutoRepeater - Automated HTTP Request Repeating With Burp Suite.
UUID issues for Burp Suite - UUID issues for Burp Suite.
Authz - Burp plugin to test for authorization flaws.
Paramalyzer - Paramalyzer - Burp extension for parameter analysis of large-scale web application penetration tests.
Q & A
Q : burpsuite 如何对App https抓包?
A : 挂上代理,访问http://burp,下载证书并导入手机,注意手机中只能导入.cer的证书。
小伙伴们
针对本期内容和小课堂课程
如果您有哪些问题和建议,欢迎更多白帽子们
加入 JSRC 安全小课堂。
小课堂开课 QQ 群:464465695
下期预告:
Web安全专题(三)SRC漏洞挖掘技巧:三步走收集高质量信息