作者:京东物流 陈维

一、引言

本文我们将以围绕系统安全质量提升为目标,讲述在功能安全测试&安全渗透测试上实践过程。

希望通过此篇文章,帮助大家更深入、透彻地了解安全测试。

二、安全渗透测试实践

安全前置扫描主要是识别白盒漏洞、黑盒漏洞问题,针对JSRC类问题,需要通过渗透测试进行漏洞发现。

1.安全测试类别

安全测试根据开展的阶段不同,测试对象不同,可以分为:功能安全测试、安全渗透测试

以下是两者定义、两者的区别:

两者定义功能安全测试在安全开发生命周期(SDL)的测试验证阶段,对应用系统进行检验,验证是否符合安全需求定义和产品质量标准的过程 。
安全渗透测试在功能安全测试完成后和产品正式上线发布前,以黑客视角对应用系统的可以被利用的安全漏洞进行发现和检查,以保护资产和重要数据的机密性、完整性和可用性。
功能安全测试安全渗透测试
两者区别出发点不同以发现系统所有可能的安全隐患为出发点以成功入侵系统,证明系统存在安全问题为出发点
视角不同站在防护者角度思考问题,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复渗透测试是以攻击者的角度来看待和思考问题
思考域不同以系统所具有的功能为思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等

具体内容:

功能安全测试:

在功能测试阶段进行,由各业务线测试工程师进行,主要包括以下几个方面:

• 人员权限设置,是否满足需求文档中的说明:

1). 是否初始化好所有的角色;

2). 每个角色是否按最小权限进行功能配置;

•权限测试:水平越权、垂直越权、交叉越权;

•敏感信息处理是否符合规范;

1). 加密存储;

2). 显示屏蔽;

3). 脱敏导出;

4). 操作安全日志记录;

安全渗透测试:

逻辑安全测试登录逻辑安全测试主要测试登录验证逻辑是否可以绕过,是否存在验证码、是否可以撞库和暴力破解
修改密码逻辑安全测试针对修改密码逻辑顺序绕过问题测试,针对修改密码中短信、邮件发送逻辑和其中验证码逻辑做相关测试
验证码逻辑测试对验证码复杂度和验证码验证顺序逻辑、验证码验证重放攻击做安全测试
认证模块测试对手机短信、ca证书等强认证模块的绕过测试
客户端安全测试XSS测试用户输入畸形脚本及标签过滤转义
CSRF测试验证服务器是否添加会话TOKEN及验证referer
JSON挟持测试检测json格式变化及是否验证referer
XSIO测试测试是否限制图片postion为absolute
基础认证钓鱼测试检查是否可以修改img标签的src属性构造基础钓鱼页面
URL跳转测试检测用户能否修改应用的url参数使页面跳转到指定页面
Flash安全测试(客户端)测试Flash配置中allowscriptaccess、allowNetworking是否合理配置
cookie安全测试测试重点cookie是否使用了HttpOnly
CRLF测试检查用户输入在HTTP头中返回,并且没有过滤%0a%0d
服务端安全测试SQL注入测试在数据库交互操作的输入点,输入sql语句测试是否可以执行
上传漏洞测试在上传功能点,测试服务端是否对上传文件类型进行有效限制
信息泄露测试测试应用是否对系统报错、测试页面等进行有效处理,是否会泄露系统敏感信息
文件下载安全测试在文件下载或者读取功能上,测试功能设计是否合理,是否文件名称和路径用户可控
HTTP头测试HTTP头代理伪造、HTTP头PUT请求等畸形数据测试
远程代码执行测试提交特定的代码,测试代码是否会被应用执行
路径遍历测试访问各个路径,测试是否可以显示路径下文件信息
垂直权限测试检测普通用户是否能进入当前用户权限不能进入的功能,执行高权限操作
Flash安全测试(服务端)检查配置文件crossdomain.xml是否配置合理
水平权限测试测试用户是否只能操作自己当前用户的资源,是否能够操作其他相同权限用户的资源
SSRF漏洞测试相关服务是否存在对内部网络探测
框架安全测试struts框架安全测试针对struts2表达式代码执行漏洞进行测试
springMVC框架安全测试针对springMVC标签多个代码执行漏洞进行测试
openssl安全测试针对openssl“心脏出血”等漏洞进行测试

1.功能安全测试(1)开展功能安全测试

Step1:确定项目是否需要安全评审

参考标准(来源安全部):

•公司重点战略项目

•外网新系统

•大量外部人员使用的内网系统(建议15人以上)

•含重大商业机密,特殊敏感性的系统;

•新采购的乙方项目或外包项目;

•上面几类系统在重大升级时。

Step2:依托SDL流程开展安全测试:

Step3:测试阶段的功能安全测试:

安全用例设计->测试执行->漏洞报告

Step4:上线前的提交渗透测试

(2)功能安全在项目中开展

SDL测试阶段开展功能安全测试:

①确定测试方案:功能安全测试、安全渗透测试、代码白盒扫描、应用黑盒扫描。

②安全用例设计

③功能安全用例: 基于功能点,从权限控制、越权类、数据类 维度进行用例设计。

SDL上线前提交安全渗透测试.

2.安全渗透测试(1)开展渗透测试

Step1:使用测试工具:

•BurpSuite安装:

下载地址:https://portswigger.net/burp/communitydownload

Proxy SwitchyOmega(代理插件):代理插件下载地址

•浏览器代理配置:

•BurpSuite -Proxy监听配置:

•BurpSuite使用:

浏览器启用Proxy进行代理,通过BurpSuite进行数据抓取:

Proxy-Repeater进行请求包的重发:

Proxy-Intruder进行暴力爆破:

选定变量参数–参数化–批量重发请求–结果获取分析。

Step2:测试执行

Step3:整理报告

(2)常见漏洞测试权限绕过

定义:指权限控制功能不严谨,系统用户可以访问或者操作未授权的功能或者数据。

水平越权场景:当系统存在多个相同权限的用户时,A用户越权访问或操作到B用户的资源。

垂直越权场景:当系统存在不同权限的用户时,低权限用户越权访问或操作到高权限用户的资源。

未授权访问:用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问的页面或者信息。

提交了大量的举证单信息:

SSRF(服务端请求伪造)

定义:由攻击者构造请求,由服务端发起请求的安全漏洞,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。

存储XSS漏洞

定义:跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。允许恶意用户将代码注入网页,其他用户在浏览网页时会受到影响。恶意用户利用XSS代码攻击成功后,很可能获得很高的权限。

XSS分为:反射型,存储型,DOM型。

三、总结

本文主要讲述了功能安全测试&安全渗透测试 的定义、区别、开展方案,以及实践举例。

这两中安全测试既可在项目开展SDL流程的过程中开展,同时也可将安全渗透测试单独拿出来,针对组内外网系统,专项进行渗透测试。

通过这样的测试,可以降低遗漏到JSRC外部白帽问题数。