SOAtest 的渗透测试可以针对功能测试套件生成并运行各种攻击场景。
本章包含:
配置渗透测试攻击
若要配置 SOAtest 来模拟针对功能测试场景的攻击:
- 请选择 Parasoft> Test Configurations 以打开测试配置管理器。
- 单击 New ,创建新的测试配置。
- 给新的测试配置一个有意义的名称。
- 打开测试配置的 Execution> Security 选项卡。
- 启用 Perform penetration testing。
- 使用规则树指示要运行哪些攻击。
可用攻击
SOAtest 可以模拟以下攻击:
攻击 | 说明 |
---|---|
参数模糊测试 | 当 Web 服务的输入参数没有得到正确验证时,可能会导致底层系统中的漏洞。在本机应用程序中,当未选中输入参数数据大小时,可能会发生缓冲区溢出攻击。这些漏洞可能导致系统崩溃,甚至可能导致未经授权的信息返回给客户机应用程序。 |
SQL 注入 | 当 SQL 语句在软件执行过程中动态创建时,将固定的输入传递到 SQL 语句中,使其成为 SQL 语句的一部分,就有可能出现安全漏洞。这将允许攻击者访问特权数据、在没有正确登录的情况下登录到密码保护区域、删除数据库表、向数据库添加新条目,甚至登录到具有管理特权的应用程序。 |
用户名收获 | 包含错误用户名或密码的请求不应得到指示用户名是否有效的响应;这将使攻击者更容易识别有效的用户名,然后使用它们猜测密码。 |
Xpath 注入 | XPath 注入类似于 SQL 注入,因为它们都是特定形式的代码注入攻击。Xpath 使您能够查询匹配特定标准的节点的 XML 文档。如果使用无效的输入在应用程序代码中动态构造这样的查询(使用字符串连接),那么攻击者可以注入 XPath 查询来检索未经授权的数据。 |
跨站脚本 | 当用户可修改的数据被逐字输出到 HTML 时,会出现跨站点脚本问题。随后,攻击者可以提交带有恶意代码的脚本标记,然后在客户机浏览器上执行这些标记。这允许攻击者破坏站点,窃取合法用户的凭证,并获得对私有数据的访问权。 |
XML 炸弹 | 当在 XML 文档中使用 DTD(文档类型定义)时,可以通过定义递归实体声明来执行拒绝服务攻击,这种递归实体声明在解析后可以迅速以指数级增长为大量 XML 元素。这会消耗 XML 解析器资源,导致拒绝服务。 |
外部实体 | XML 能够通过指向实际数据所在的 URI 动态构建数据。攻击者可以用恶意数据替换正在收集的数据。这个 URI 可以指向本地文件系统上 Web 服务 XML 文件的 XML 解析器读取大量数据,窃取机密信息,或启动 DoS 攻击其他服务器通过妥协系统表现为攻击者通过指定其他服务器的 URL。 |
XML 模式无效 | 格式良好的文档不一定是有效的文档。 如果不引用 DTD 或模式,就无法验证 XML 文档是否有效。 因此,必须采取措施确保 XML 文档确实引用 DTD 或模式。 |
大型 XML 文档 | 大型有效负载可用两种方式攻击 Web 服务。 首先,Web 服务代理可以通过在 SOAP 请求中发送一个巨大的 XML 有效负载来阻塞,特别是当请求是一个格式良好的 SOAP 请求并且它根据模式进行验证时。其次,发送特定的请求查询也可以导致较大的响应,从而导致较大的有效负载。 |
异常 URL: | 包含格式错误、不可接受或意外内容的 XML 元素可能导致服务失败。 |
攻击字符串定制
若要定制用于各种攻击的攻击字符串,请在 [SOAtest_install_dir]/plugins/com.parasoft.xtest.libs.web_[version]\root\security
中修改 .csv 文件。
为混合安全性分析配置运行时错误检测
如果应用程序有一个 Java 后端,并且您希望应用运行时错误检测,以便确定这些攻击是否会导致安全漏洞或其他运行时缺陷,那么您还应该按照 执行运行时错误检测中的描述配置运行时错误检测。
请确保配置这两个:
- 服务器。
- 将用于执行渗透测试的测试配置(请查阅 Configuring Penetration Testing Attacks)。
执行测试
若要进行渗透测试:
- 请选择要攻击的测试套件。
- 运行为渗透测试设计的测试配置(请查阅 Configuring Penetration Testing Attacks)。
审查和验证结果
结果将在 SOAtest 选项卡和生成的任何报告中报告。
双击该消息(或者右键单击,并选择 View Details)将打开有关哪个攻击导致失败的信息。
启用运行时错误检测
如果您执行混合分析(穿透测试 + 运行时错误检测),检测到的错误将报告如下:
同样的细节也将在报告中提供。
注意,SOAtest 将每个报告的错误与检测到错误时正在运行的功能测试关联起来。违规行为和功能测试之间的这种关联允许您跟踪每个报告的错误到针对应用程序的特定用例。
其他验证
可以应用其他验证策略来满足您的需求。例如,您可以将编码标准、搜索或 XML 验证器工具链接到测试套件,手动检查服务器日志,或者运行脚本来解析这些日志。
查看攻击流量
每个测试的流量查看器允许您查看攻击流量。使用可用的 Attacks 和 Iteration 控件,您可以显示所有攻击或特定攻击类型的流量,也可以关注特定攻击值的流量。
配置可攻击的参数
默认情况下,SOAtest 将尝试攻击所选测试套件的 SOAP 客户机、REST 客户机、消息传递客户机和浏览器回放工具中表示的所有可用参数。
若要自定义哪些参数可能受到攻击:
- 请双击要攻击的功能测试的顶级测试套件节点。
- 打开 Security Options 选项卡(在最右边)。
- 使用穿透测试参数树来指示哪些参数可以被攻击。
- 保存测试套件配置更改。