利用Rational AppScan定制参数提升脚本的重用性
作者:IBM 发布时间:[ 2017/2/9 10:01:35 ] 推荐标签:软件测试工具 安全测试工具 渗透测试
案例扫描实现
基于上文分析,我们需要在 AppScan 的“参数和 cookie”管理中设置四个参数。其中 resourceid、userid、curtime 为常规参数(AppScan 能自动检测识别这些参数),校验参数需要通过定制参数来检测(因为本案例中这个校验参数的名称会动态变化,对于渗透测试工具而言所有不同名称的参数都是不同的参数,AppScan 提供了定制参数功能,我们可以利用定制参数使 AppScan 识别这些不同名称的参数,并将之统一视为校验参数)。下文将详细介绍 AppScan 脚本的录制过程。
新建扫描文件(暂不进行探索),点击“扫描配置”,进入“参数和 cookie”,添加三个参数:resourceid、userid、curtime,并选中“在扫描过程中跟踪该参数”。其中 resourceid 和 userid 的跟踪类型设置为登录值,curtime 的跟踪类型设置为动态值。通过设置这三个常规参数的跟踪类型,AppScan 即可在在扫描过程中自动检测到这些参数值的变化,并自动更新到相应的 HTTP 请求中。
图 2. 添加常规参数示例
进入“参数和 cookie”的高级定制参数选项卡,为校验参数定制识别模式。由于校验参数的参数名称和参数值都是动态变化的,所以我们需要定义两个定制参数,分别识别校验参数的参数名称和校验参数的参数值。如下图所示。
图 3. 编辑定制参数-校验参数名称
基于上图设置的定制参数,AppScan 能够从 HTTP 响应中通过匹配正则表达式“ input type="hidden" name="([0-9A-Za-z]{8})" value="[0-9A-Za-z]{32}" ”识别出服务器端返回的校验参数的名称,如“ ADCE4375 ”。同时,AppScan 会从 HTTP 请求中通过匹配正则表达式“ ([0-9A-Za-z]{8})=[0-9A-Za-z]{32} ”,识别出 HTTP 请求中的校验参数,并用新的校验参数名称将之替换。
图 4. 编辑定制参数-校验参数值
基于上图设置的定制参数,AppScan 能够从 HTTP 响应中通过正则表达式匹配识别出服务端返回的校验参数的值,譬如“d4be19775b0f346c32453c8be95d39c4”。同理,AppScan 会从录制好的 HTTP 请求中通过正则表达式匹配识别出旧的校验参数值,并用服务器端返回的新校验参数值进行替换。
注:图 3 和图 4 看起来几乎非常相似,这里笔者要强调一下两者的区别:两张图中的模式中的圆括号标示的位置不同,对应的响应模式中也存在类似差别。
进入“参数和 cookie”选项卡,启用上面定制的两个定制参数。分别点击“+”按钮添加新的参数,选择参数类型为“定制参数”,在引用名称处选择前文定制的两个定制参数名称,并选中“在扫描过程中跟踪该参数”。
图 5. 添加定制参数示例
点击“扫描配置-导出为模板”,将以上参数等配置信息导出为 .scant 文件,以备重用。
点击“扫描配置-登录管理”录制未完成授权用户的登录方法,并将之导出为 .login 文件,以备重用。
点击“手工探索”探索需要测试的应用链接,并将手工探索出来的链接清单导出为 .exd 文件,然后点击“仅测试”执行扫描(通常建议利用手工探索需要填写特定表单数据的交互式链接,然后执行完全扫描。本文仅为示范之用,故选择“仅测试”选项,仅测试手工探索出来的链接清单)。
如果需要重新执行该测试,仅需要打开 AppScan,导入扫描模板文件、登录方法文件(由于以前录制的用户测试完成后变为已授权用户,因此需要将登录方法文件中的登录账号信息替换为未完成授权的用户)、手工探索链接清单文件,然后执行“扫描-仅测试”重新扫描。
结论
本文介绍了 Rational AppScan 的定制参数功能,并通过案例的方式跟读者分享了如何利用定制参数提升 AppScan 探索文件的可重用性。掌握定制参数是提升 AppScan 技能的重要前提。利用定制参数,我们可以解决常见 Web 渗透测试所面临的难题,譬如 CSRF 防护令牌、URL Rewriting 等问题。希望本文能够对读者熟悉 AppScan 定制参数有所帮助。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11