一、业务安全测试
1、 业务安全测试流程
1.1 测试准备
准备阶段主要包括对业务系统的前期熟悉工作,以了解被测试业务系统的数量、规模和场景等内容。
针对白盒测试,可以结合相关开发文档去熟悉相关系统的业务。
针对黑盒测试,可通过实际操作还原业务流程的方式理解业务。
1.2 业务调研
业务调研阶段主要针对业务系统相关负责人进行访谈调研,了解业务系统的整体情况,包括部署情况、功能模块、业务流程、数据流、业务逻辑以及现有的安全措施等内容。根据以往测试实施经验,在业务调研前可先设计访谈问卷,访谈后可能会随着对客户业务系统具体情况了解的深入而不断调整、更新问卷(黑盒测试此步骤可忽略)。
1.3 业务建模
针对不同行业、不同平台的业务系统,如电商、银行、金融、证券、保险、游戏、社交、招聘等业务系统,识别出其中的高风险业务场景进行建模。
以电商系统为例:
业务场景建模模型图1.4 业务流程梳理
建模完成后需要对重要业务场景的各个业务模块逐一进⾏业务流程梳理,从前台和后台、业务和⽀撑系统等4 个不同维度进⾏分析,识别各业务模块的业务逻辑、业务数据流和功能字段(传参点)等。
业务模块的流程梳理主要遵循以下原则:
1)区分业务主流程和分⽀流程,业务梳理⼯作是围绕主流程进⾏分析的,而主流程一定是核⼼业务流程,业务流程重点梳理的对象⾸先应放在核⼼主流程上,务必梳理出业务关键环节。
2)概括归纳业务分⽀流程,业务分⽀流程往往存在通⽤点,可将具有业务相似性的分⽀流程归纳成某一类型的业务流程,⽆须单独对其进⾏测试。
3)识别业务流程数据信息流,特别是业务数据流在交互⽅双⽅之间传输的先后顺序、路径等。
4)识别业务数据流功能字段,识别数据流中包含的重要程度不等的信息,理解这些字段的含义有助于下阶段⻛险点分析。
下图针对某电商类网站的用户登录功能的业务流程梳理图示例:1.5 业务风险点识别
在完成前期不同维度的业务流程梳理⼯作后,针对前台业务应着重关注⽤⼾界⾯操作每一步可能的逻辑⻛险和技术⻛险;针对后台业务应着重关注数据安全、数据流转及处理的⽇志和审计。
业务⻛险点识别应主要关注以下安全⻛险内容。
1)业务环节存在的安全⻛险,
业务环节存在的安全⻛险指的是业务使⽤者可⻅的业务存在的安全⻛险,如注册、登录和密码找回等⾝份认证环节,是否存在完善的验证码机制、数据一致性校验机制、Session 和Cookie 校验机制等,是否能规避验证码绕过、暴⼒破解和SQL 注⼊等漏洞。
2)⽀持系统存在的安全⻛险,
⽀持系统存在的安全⻛险,如⽤⼾访问控制机制是否完善,是否存在⽔平越权或垂直越权漏洞。系统内加密存储机制是否完善,业务数据是否明⽂传输。系统使⽤的业务接口是否可以未授权访问或调⽤,是否可以调⽤重放、遍历,接口调⽤参数是否可篡改等。
3)业务环节间存在的安全⻛险,
业务环节间存在的安全⻛险,如系统业务流程是否存在乱序,导致某个业务环节可绕过、回退,或某个业务请求可以⽆限重放。业务环节间传输的数据是否有一致性校验机制,是否存在业务数据可被篡改的⻛险。
4)⽀持系统间存在的安全⻛险,
⽀持系统间存在的安全⻛险,如系统间数据传输是否加密、系统间传输的参数是否可篡改。系统间输⼊参数的过滤机制是否完善,是否可能导致SQL 注⼊、XSS 跨站脚本和代码执⾏漏洞。
5)业务环节与⽀持系统间存在的安全⻛险,
业务环节与⽀持系统间存在的⻛险,如数据传输是否加密、加密⽅式是否完善,是否采⽤前端加密、简单MD5 编码等不安全的加密⽅式。系统处理多线程并发请求的机制是否完善,服务端逻辑与数据库读写是否存在时序问题,导致竞争条件漏洞。系统间输⼊参数的过滤机制是否完善。
具体业务风险点识别示例如图1.6 开展测试
对前期业务流程梳理和识别出的⻛险点,进⾏有针对性的测试。
1.7 撰写报告
针对业务安全测试过程中发现的⻛险结果进⾏评价和建议,综合评价利⽤场景的⻛险程度和造成影响的严重程度,最终完成测试报告的编写