安全领域各种资源,学习文档,以及工具分享、前沿信息分享、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)
自动化检测方案:
动态流量标记检测 (Burp Suite + AuthZ插件)
- 用不同账号(普通用户/管理员)抓取相同请求
- 对比响应差异(如200状态码或敏感数据泄露)
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}")`
自动化渗透工具链 :
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()); } }`
四、防御体系设计原则
权限校验黄金法则
- 所有请求默认拒绝,显式声明所需权限
- 资源操作必校验数据归属权(非仅角色)
三层防御架构
mermaid`graph TB A[网关层] -->|强制认证| B[业务层] B -->|RBAC模型| C[数据层] C -->|Owner字段校验| D[(数据库)]`
安全编码规范
- 使用声明式鉴权(如Spring Security
@PreAuthorize("hasRole('ADMIN')")
)- 禁止前端传递用户ID(从Session获取)
漏洞修复成本对比:
- 设计阶段引入权限框架:0.5人日
- 上线后修复越权漏洞:平均12人日/漏洞 (含回归测试)
据NIST统计,业务逻辑漏洞占高危漏洞的31% ,其中越权类占比68%,早期防控至关重要。