WSTG v4.2解读之--WSTG-INFO-07 映射应用程序执行路径

1. 章节定位

对应OWASP TOP 10:信息收集是所有漏洞测试的基础,直接影响A1注入、A5访问控制等核心风险的覆盖完整性。本章节聚焦于建立应用执行路径的全面视图,确保后续测试无盲区。

2. 测试原理

路径盲区导致安全漏洞

未映射路径
未测试功能模块
隐藏漏洞留存
生产环境被利用

现代Web应用通常包含:

  1. 显式路径:导航菜单、页面链接等可见入口点
  2. 隐式路径:需特定参数触发的API端点、权限校验分支等
  3. 动态路径:JS/AJAX异步加载的接口和功能
    未覆盖的路径如同未上锁的房间,攻击者可利用未测试的代码路径实施注入、越权等攻击。

3. 测试方法

3.1 自动爬取(基础覆盖)

  1. 启动ZAP爬虫

    • 目标URL输入https://target.com
    • 右键菜单选择Attack > Spider
      ZAP爬虫启动位置
      图示:红框标注爬虫操作菜单位置
  2. 处理动态内容

    • 启用AJAX Spider插件(需安装)
    • 配置浏览器代理为ZAP的监听端口(默认8080)
    • 执行用户操作(登录、表单提交等)
  3. 导出路径清单

    • Sites面板右键导出URLs in Context为CSV

3.2 代码覆盖率分析(深度验证)

JaCoCo集成步骤

  • 挂载代理启动被测应用:
java -javaagent:jacocoagent.jar=destfile=/reports/jacoco.exec -jar app.jar
  • 执行ZAP自动化扫描:

    • 导入爬取发现的URL列表
    • 启用主动扫描策略
  • 生成覆盖率报告:

java -jar jacococli.jar report /reports/jacoco.exec \
  --classfiles target/classes --html /reports/coverage

报告关键指标

覆盖率类型安全意义达标阈值
行覆盖率基础执行路径覆盖≥80%
分支覆盖率条件判断逻辑覆盖≥70%
方法覆盖率关键功能模块调用覆盖≥90%

3.3 人工路径探索

  1. 业务流程映射

    密码登录
    短信登录
    游客访问
    登录页面
    认证方式
    主面板
    验证码校验
    敏感操作
  2. 特权路径探测

    • 修改URL参数:/user/profile?id=100/admin/config
    • 测试非常规入口:/api/v1/export?format=pdf

4. 修复建议

4.1 开发层优化

结构化URL设计

// 反例:动态路径难以追踪
@GetMapping("/doAction")
public Response action(@RequestParam String cmd) {
  switch(cmd) {
    case "create": return createItem();
    case "delete": return deleteItem(); // 易被忽略的分支
  }
}

// 正例:RESTful风格明确路径
@PostMapping("/items")
public Item createItem() {...}

@DeleteMapping("/items/{id}")
public void deleteItem(@PathVariable String id) {...}

JaCoCo集成到CI/CD

<!-- Maven配置示例 -->
<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>report</id>
      <phase>test</phase>
      <goals>
        <goal>report</goal> <!-- 生成HTML报告 -->
      </goals>
    </execution>
  </executions>
</plugin>

4.2 运维层加固

  1. 路由监控

    • 部署ELK收集Nginx访问日志
    • 设置告警规则:未登记路径的访问请求 > 5次/分钟
  2. 自动化路径验证

    # 定期对比生产路径与测试覆盖报告
    awk '{print $7}' access.log | sort | uniq > prod_paths.txt
    comm -23 prod_paths.txt tested_paths.txt > uncovered_paths.txt
    

持续改进闭环

代码提交
CI运行测试+覆盖率采集
覆盖率达标?
部署生产
生成路径差异报告
补充测试用例

通过将路径映射纳入DevSecOps流程,确保每次迭代均验证关键安全路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值