近年来,随着信息化技术的迅速发展和全球一体化进程的不断加快,计算机和网络已经成为与所有人都息息相关的工具和媒介,个人的工作、生活和娱乐,企业的管理乃至国家的发展和改革都无处其外。信息和互联网带来的不仅仅是便利和高效,大量隐私、敏感和高价值的信息数据和资产,成为恶意攻击者攻击和威胁的主要目标,从早期以极客为核心的黑客黄金时代,到现在利益链驱动的庞大黑色产业,网络安全已经成为任何个人、企业、组织和国家所必须面临的重要问题。"网络安全和信息化是事关国家安全和国家发展、事关广大人民群众工作生活的重大战略问题,没有网络安全就没有国家安全,没有信息化就没有现代化!"
随着互联网+的的发展,经济形态不断地发生演变。众多传统行业逐步地融入互联网并利用信息通信技术以及互联网平台进行着频繁的商务活动,这些平台(如银行、保险、证券、电商、P2P、020、游戏、社交、招聘、航空等)由于涉及大量的金钱、个人信息、交易等重要隐私数据,成为了黑客攻击的首要目标,而因为开发人员安全意识淡薄(只注重实现功能而忽略了在用户使用过程中个人的行为对web应用程序的业务逻辑功能的安全性影响)、开发代码频繁迭代导致这些平台业务逻辑层面的安全风险层出不穷(业务逻辑漏洞主要是开发人员业务流程设计的缺陷,不仅限于网络层、系统层、代码层等。比如登录验证的绕过、交易中的数据篡改、接口的恶意调用等,都属于业务逻辑漏洞)。
一方面随着社会和科技的发展,购物、社交、P2P、020、游戏、招聘等业务纷纷具备了在线支付功能。如电商支付系统保存了用户手机号、姓名、家庭住址,包括支付的银行卡信息、支付密码信息等,这些都是黑客感兴趣的敏感信息。攻击者可以利用程序员的设计缺陷进行交易数据篡改、敏感信息盗窃、资产的窃取等操作。 现在的黑客不在以炫耀技能为主要目的,而主要以经济利益为目的,攻击的目的逐渐转变为趋利化。
另一方面,如今的业务系统对于传统安全漏洞防护的技术和设备越来越成熟,基于传统漏洞入侵也变得越来越困难,增加了黑客攻击的成本。而业务逻辑漏洞可以逃逸各种安全防护,至今为止没有很好的解决方法。这也是为什么黑客偏好使用业务逻辑漏洞攻击的一个原因。另外,代码审计也很难防御业务安全逻辑漏洞。例如星巴克由于优惠券引发的经济损失。
准备阶段主要包括对业务系统的前期熟悉工作。针对白盒性质的测试,可以结合相关开发文档去熟悉相关系统业务;针对黑盒测试,可通过实际操作还原业务流程的方式理解业务。
业务调研阶段主要针对业务系统相关负责人进行访谈调研,了解业务系统的整体情况,包括部署情况、功能模块、业务流程、数据流、业务逻辑以及现有的安全措施等内容。根据以往测试实施经验,在业务调研前可先设计访谈问卷,访谈后可能会随着对客户业务系统具体情况了解的深入而不断调整、更新问卷(黑盒测试此步骤可忽略)
以上两个阶段的目的主要是帮助测试人员去熟悉业务系统
针对不同行业、不同平台的业务系统,如电商(登录、注册、交易、积分、优惠券等)、银行(登录、注册、交易、积分等)、金融、证券、保险、游戏、社交(登录、注册、留言板等)、招聘等业务系统,识别出其中的高风险业务场景进行建模
建模完成后,需要对重要业务场景的各个业务模块逐一进行业务流程梳理。
建模完成后需要对重要业务场景的各个业务模块逐一进行业务流程梳理,从前台和后台、业务和支撑系统等4个不同维度进行分析,目的是识别各业务模块的业务逻辑、业务数据流和功能字段等。
业务模块的流程梳理注意遵循以下原则:
区分业务的主要流程和分支流程,业务流程梳理工作主要围绕主流程进行分析,而主流程一定是核心业务流程,因此业务流程重点梳理的对象应该放在核心主流程上,务必梳理出业务的关键环节。
概括归纳业务分支流程,业务分支流程往往存在通用点,可将具有业务相似性的分支流程归纳成某一类型的业务流程,无需单独对其进行测试。
识别业务流程数据信息流,特别是业务数据流在交互方双方之间传输的先后顺序、路径等;
识别业务数据流功能字段,识别数据流中包含的重要程度不等的信息,理解这些字段的含义有助于下阶段风险点分析。
例如:商城用户登录流程图。
通过业务流程的各个阶段梳理出业务流程各个关键环节点。
在完成前期不同维度的业务流程梳理工作后,针对前台业务应着重关注用户界面操作每一步可能的逻辑风险和技术风险;针对后台业务应着重关注数据安全、数据流转以及处理的日志和审计。
业务风险点识别应主要关注以下安全风险内容。
业务环节存在的安全风险
业务环节存在的安全风险指的是业务使用者可见的业务存在的安全风险,如注册、登录和密码找回等身份认证环节,是否在完善的验证码机制、数据一致性校验机制,Session和Cookie校验机制等,是否能规避验证码绕过、暴力破解和SQL注入等漏洞。
支持系统存在的安全风险
支持系统存在的安全风险,如用户访问控制机制是否完善,是否存在水平越权或垂直越权漏洞。系统内加密存储机制是否完善,业务数据是否明文传输。系统使用的业务接口是否可以未授权访问/调用,是否可以调用重放、遍历,接口调用参数是否可篡改等。
业务环节间存在的安全风险
业务环节间存在的安全风险,如系统业务流程是否存在乱序,导致某个业务环节可绕过、回退,或某个业务请求可以无限重放。业务环节间传输的数据是否有一致性校验机制,是否存在业务数据可被篡改的风险。
支持系统间存在的安全风险
支持系统间存在的安全风险,如系统间数据传输是否加密、系统间传输的参数是否可篡改。系统间输入参数的过滤机制是否完善,是否可能导致SQL注入、XSS跨站脚本和代码执行漏洞。
业务环节与支持系统间存在的安全风险
业务环节与支持系统间存在的风险,如数据传输是否加密、加密方式是否完善,是否采用前端加密、简单MD5编码等不安全的加密方式。系统处理多线程并发请求的机制是否完善,服务器端逻辑与数据库读写是否存在时序问题,导致竞争条件(如QQ刷钻漏洞)。系统间输入参数的过滤机制是否完善。
tips:
关于身份验证与访问控制:
失效的身份验证是指验证身份时出错(可能是被攻击者如何绕过或欺骗);
失效的访问控制是指用户没有欺骗行为而系统在判断其是否能访问目标资源时出错。
对前期业务流程梳理和识别出的风险点,进行有针对性的测试
针对业务安全测试过程中发现的风险结果进行评价和建议,综合评价利用场景的风险程度和造成影响的严重程度,最终完成测试报告的编写