安全测试,从人工挖掘到自动化脚本
Posted 阳光测试在线
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全测试,从人工挖掘到自动化脚本相关的知识,希望对你有一定的参考价值。
随着信息和互联网技术的发展,传统金融行业逐步融入并利用信息通讯技术,给用户带来了极大的使用便利。然而由于行业特性,金融行业涉及大量交易及重要个人隐私数据,也成为了黑客攻击的首要目标。同时,由于开发过程重功能轻逻辑、开发频繁迭代,导致系统在业务逻辑层面的安全风险层出不穷。现有的常规的安全检测技术,已经不足以应对不断出现的业务逻辑层面的安全风险,对业务逻辑层的安全测试方法也应运而生,不过在具体实践的过程中,原本设计的人工测试的方法和手段,会面临诸多限制,而且效率低下。如果能够引入工具辅助,使用自动化脚本的方法代替手工安全测试,可以大幅提升效率。
本文将尝试从业务安全测试方法入手,通过对工具的使用讲解,再通过对工具的二次开发,让大家初窥那多变,但又充满趣味的安全测试之路。
为了针对业务逻辑的安全测试,安全测试人员对具体的攻击场景总结、归类,形成通用的案例库。通过案例指引,测试工程师试图运用功能测试的方法进行测试,但在实践过程当中前端系统限制太多,远不如使用”抓包工具”对应用层报文抓取,来得方便。对抓取的报文进行篡改、越权、替换、注入、重发、敏感信息查询等安全测试。
Burpsuite是一款出色的渗透测试工具,通过在PC端或者手机端安装burpsuite自签名证书,来欺骗客户端与服务端,从而获得明文的请求、响应包。对请求报文”手动”操作,进行一系列安全测试,”人工”查看响应报文是否满足安全测试要求。
获得的请求报文,可”手动”篡改、越权、替换、注入、重发、敏感信息查询等安全测试:
响应报文,”人工”查看响应的结果是否符合安全要求:
当然如果只通过手动测试、人工查阅,会导致错测、漏测,以及效率低下等问题。所以,对报文的自动化测试,对响应结果的自动化判断,成为最优的解决方法。如何解决?还是要从强大的burpsuite工具说起。
burpsuite不仅提供了”手动”对报文修改的功能,还提供了大量的开放接口,测试人员可以阅读提供的文档,实现所需的接口、复写函数,二次开发出适合插件,安装到burpsuite。
接口文档:
既然可以开发插件,结合案例库和我们实际的测试经验,对插件的需求是操作简单、自动处理报文并且处理的报文内容可配置、对结果自动判断。根据需求,插件的开发方案如下:
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通过网络,响应给客户端。
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有问题:
开发的插件完全可以满足安全测试工程师的日常工作需求,但是还有很多不足,比如说服务端对报文重发的限制、爬虫方法的缺少,以及修改数据库后还需要手动打开数据库,插件还可以进行不断的优化完善,最终的目的就是实现用”自动化手段”替代”手工”,发现系统存在业务逻辑安全问题,并协助开发团队进行处置。
以上是关于安全测试,从人工挖掘到自动化脚本的主要内容,如果未能解决你的问题,请参考以下文章