安全测试,从人工挖掘到自动化脚本

Posted 阳光测试在线

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全测试,从人工挖掘到自动化脚本相关的知识,希望对你有一定的参考价值。

01
前言

随着信息和互联网技术的发展,传统金融行业逐步融入并利用信息通讯技术,给用户带来了极大的使用便利。然而由于行业特性,金融行业涉及大量交易及重要个人隐私数据,也成为了黑客攻击的首要目标。同时,由于开发过程重功能轻逻辑、开发频繁迭代,导致系统在业务逻辑层面的安全风险层出不穷。现有的常规的安全检测技术,已经不足以应对不断出现的业务逻辑层面的安全风险,对业务逻辑层的安全测试方法也应运而生,不过在具体实践的过程中,原本设计的人工测试的方法和手段,会面临诸多限制,而且效率低下。如果能够引入工具辅助,使用自动化脚本的方法代替手工安全测试,可以大幅提升效率。

本文将尝试从业务安全测试方法入手,通过对工具的使用讲解,再通过对工具的二次开发,让大家初窥那多变,但又充满趣味的安全测试之路。

02
方法和工具

为了针对业务逻辑的安全测试,安全测试人员对具体的攻击场景总结、归类,形成通用的案例库。通过案例指引,测试工程师试图运用功能测试的方法进行测试,但在实践过程当中前端系统限制太多,远不如使用”抓包工具”对应用层报文抓取,来得方便。对抓取的报文进行篡改、越权、替换、注入、重发、敏感信息查询等安全测试。

Burpsuite是一款出色的渗透测试工具,通过在PC端或者手机端安装burpsuite自签名证书,来欺骗客户端与服务端,从而获得明文的请求、响应包。对请求报文”手动”操作,进行一系列安全测试,”人工”查看响应报文是否满足安全测试要求。

获得的请求报文,可”手动”篡改、越权、替换、注入、重发、敏感信息查询等安全测试:

响应报文,”人工”查看响应的结果是否符合安全要求:

安全测试,从人工挖掘到自动化脚本

03
自动化测试

当然如果只通过手动测试、人工查阅,会导致错测、漏测,以及效率低下等问题。所以,对报文的自动化测试,对响应结果的自动化判断,成为最优的解决方法。如何解决?还是要从强大的burpsuite工具说起。

burpsuite不仅提供了”手动”对报文修改的功能,还提供了大量的开放接口,测试人员可以阅读提供的文档,实现所需的接口、复写函数,二次开发出适合插件,安装到burpsuite。

接口文档:

安全测试,从人工挖掘到自动化脚本

04
开发方案

既然可以开发插件,结合案例库和我们实际的测试经验,对插件的需求是操作简单、自动处理报文并且处理的报文内容可配置、对结果自动判断。根据需求,插件的开发方案如下:

安全测试,从人工挖掘到自动化脚本

2.电脑中已经安装burpsuite工具,SQLTIE数据库。Burpsuite监听ip和端口,获得客户端发来的流量。流量会被Extender(burp插件)获得,自动通过驱动(jdbc.sqlite.jar)连接本地SQLITE数据库。

3.数据库中已经配置好系统中重要的字段,以及攻击负载。

4.将从SQLITE中获得的数据返回给burpsuite插件。插件会自动判断请求报文中是否存在获得的数据,不存在,继续从SQLITE数据库查询数据。如果有,对报文进行篡改、替换、查询等操作。

5.插件组包,发送。

6.通过互联网,发送到服务器。

安全测试,从人工挖掘到自动化脚本

7.服务器响应客户端请求,将流量发送给PC。

8.PC获得的流量,被Burp插件获得,自动通过驱动(jdbc.sqlite.jar)连接本地SQLITE数据库。

9.数据库已经配置好了预期响应结果。将预期的结果返回给插件。

10.Burp插件获得了预期响应结果,查询响应报文中是否包含这个预期结果。如果不存在,再次查询SQLite数据库,直到没有数据,这说明响应报文出错,会将错误结果输入进数据库。如果存在,说明响应报文符合预期,不做任何操作。

11.插件组包,发送。

12.PC通过网络,响应给客户端。

0 5
具体操作

1.设置代理:

安全测试,从人工挖掘到自动化脚本

2.电脑中的burpsuite,设置监听IP和端口:

安全测试,从人工挖掘到自动化脚本

3.电脑中的SQLITE数据库(使用navicat打开),其中是已经配置好的数据。MODIFIED_FIELD(处理POST请求)、MODIFIED_FIELD_GET(处理GET请求)存储的是要处理报文中的哪些字段。如果报文中存在数据库中的字段,进行篡改,篡改成MODIFIED_FIELD_PAYLOAD中对应的值:

安全测试,从人工挖掘到自动化脚本

4.插件的UI界面,分为5个Sheet,分别是敏感信息、篡改信息、替换信息、交易重发、注入,以及请求、响应报文日志。操作简单,勾选篡改开关,选择案例就可以了,插件会自动连接数据库:

安全测试,从人工挖掘到自动化脚本

5.在客户端点击UI界面,插件获得请求流量,自动化对报文处理,篡改一个字段,就组包发送请求,并打印出报文明细:

安全测试,从人工挖掘到自动化脚本

安全测试,从人工挖掘到自动化脚本

6.响应结果如下:查看数据库,会对响应报文结果是否正确的判断。ASSERT_EXPECT存储预期结果,ASSERT_RESULT存储的是报文是否正确的结果。如果和预期结果相同,认为测试结果正确,如果响应报文中无任何预期结果,会打印错误,哪一个字段和url有问题:

安全测试,从人工挖掘到自动化脚本

0 6
总结

开发的插件完全可以满足安全测试工程师的日常工作需求,但是还有很多不足,比如说服务端对报文重发的限制、爬虫方法的缺少,以及修改数据库后还需要手动打开数据库,插件还可以进行不断的优化完善,最终的目的就是实现用”自动化手段”替代”手工”,发现系统存在业务逻辑安全问题,并协助开发团队进行处置。



以上是关于安全测试,从人工挖掘到自动化脚本的主要内容,如果未能解决你的问题,请参考以下文章

“挖掘机”升级路 二篇(04)--分享一个自动配置的脚本

QTP自动化测试从零基础到精通进阶(脚本测试VBS语法描述性编程测试框架)

最全的MonkeyRunner自动化测试从入门到精通

自动化测试基础知识

测试Selenium录制单元测试脚本

从写下第1个脚本到年薪40W,我的自动化测试心路历程