2025年渗透测试面试题总结-06(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

逻辑漏洞

一、三大高危业务逻辑漏洞及修复方案

[1. 订单金额篡改(参数操纵)](#1. 订单金额篡改(参数操纵))

[2. 重复操作滥用(资源耗尽)](#2. 重复操作滥用(资源耗尽))

[3. 业务流程绕过(顺序校验缺失)](#3. 业务流程绕过(顺序校验缺失))

二、越权访问的三大类型深度对比

三、越权自动化检测技术栈

[1. 静态代码分析(SAST)](#1. 静态代码分析(SAST))

[2. 动态渗透测试(DAST)](#2. 动态渗透测试(DAST))

[3. 智能模糊测试(IAST)](#3. 智能模糊测试(IAST))

四、防御体系设计原则

逻辑漏洞

复制代码
说出至少三种业务逻辑漏洞,以及修复方式?
越权访问(水平/垂直/未授权)
谈谈水平/垂直/未授权越权访问的区别?
越权问题如何自动化检测?

一、三大高危业务逻辑漏洞及修复方案

1. 订单金额篡改(参数操纵)
  • 漏洞场景
    前端校验订单金额,攻击者抓包修改price=0.01支付购买高价商品

  • 修复方案

    复制代码
    java`// 服务端重新计算金额(不可信前端数据) BigDecimal realPrice = productService.getPrice(request.getProductId()); if (realPrice.compareTo(request.getPaidPrice()) != 0) { throw new IllegalOrderException("金额被篡改"); }`
2. 重复操作滥用(资源耗尽)
  • 漏洞场景
    无防重放机制时,攻击者重复提交优惠券领取请求清库存

  • 修复方案

    复制代码
    sql`-- 数据库层防重(MySQL示例) ALTER TABLE coupons ADD UNIQUE KEY uk_user_coupon (user_id, coupon_type);`

    业务层加分布式锁:

    复制代码
    java`if (redis.setnx("lock:coupon:"+userId, 1, 30, SECONDS)) { try { grantCoupon(userId); } finally { redis.del(key); } }`
3. 业务流程绕过(顺序校验缺失)
  • 漏洞场景
    跳过短信验证步骤直接访问/confirmOrder接口完成交易

  • 修复方案

    复制代码
    java`// 使用状态机校验流程完整性 OrderState currentState = order.getState(); if (currentState != OrderState.SMS_VERIFIED) { throw new IllegalStateException("请先完成短信验证"); }`

二、越权访问的三大类型深度对比

类型 本质差异 典型案例 防御核心
水平越权 同角色访问他人数据 修改/getOrder?orderId=123遍历他人订单 资源归属校验:order.getUserId() == currentUser
垂直越权 低权限用户执行高权限操作 普通用户访问/admin/deleteUser接口 角色权限树校验:RBAC.hasPermission(role, "user:delete")
未授权访问 完全跳过认证环节 直接访问内部API无需登录 拦截器全局认证:@Interceptor(LoginCheck.class)

自动化检测方案

  1. 动态流量标记检测 (Burp Suite + AuthZ插件)

    • 用不同账号(普通用户/管理员)抓取相同请求
    • 对比响应差异(如200状态码或敏感数据泄露)
  2. API扫描脚本 (Python示例)

    复制代码
    python`def check_unauthorized(url): resp = requests.get(url, cookies={"session": "attacker_session"}) if resp.status_code == 200 and "admin_dashboard" in resp.text: report_vulnerability(f"垂直越权: {url}")`
  3. 自动化渗透工具链
    OWASP ZAP → 配置越权检测策略 → 生成风险报告


三、越权自动化检测技术栈

1. 静态代码分析(SAST)
复制代码
mermaid`graph LR A[扫描代码] --> B{检测危险模式} B -->|发现| C[未校验用户权限的Controller] B -->|发现| D[SQL查询直接拼接用户输入] C --> E[标记漏洞位置] D --> E`
  • 工具:SonarQube + FindSecBugs规则集
  • 规则示例 :检测@PreAuthorize注解缺失
2. 动态渗透测试(DAST)
  • 工作流
    爬取所有API → 替换Cookie/Token → 重放请求 → 分析响应
  • 关键指标
    • 相同请求不同账号的响应相似度(余弦算法)
    • 未授权接口的HTTP状态码分布
3. 智能模糊测试(IAST)
  • 插桩技术 :在Java Agent中注入权限校验探针

    复制代码
    java`public void checkPermission(Method method) { if (!method.isAnnotationPresent(RequiresRole.class)) { SecurityLogger.warn(" 未授权方法: " + method.getName()); } }`

四、防御体系设计原则

  1. 权限校验黄金法则

    • 所有请求默认拒绝,显式声明所需权限
    • 资源操作必校验数据归属权(非仅角色)
  2. 三层防御架构

    复制代码
    mermaid`graph TB A[网关层] -->|强制认证| B[业务层] B -->|RBAC模型| C[数据层] C -->|Owner字段校验| D[(数据库)]`
  3. 安全编码规范

    • 使用声明式鉴权(如Spring Security @PreAuthorize("hasRole('ADMIN')")
    • 禁止前端传递用户ID(从Session获取)

漏洞修复成本对比

  • 设计阶段引入权限框架:0.5人日
  • 上线后修复越权漏洞:平均12人日/漏洞 (含回归测试)
    据NIST统计,业务逻辑漏洞占高危漏洞的31% ,其中越权类占比68%,早期防控至关重要。