本文目录导读:

- 基础复现与确认(避免“假阳性”)
- 日志与监控分析(后端排查核心)
- 断点调试与动态分析(代码级排查)
- 安全漏洞专项排查(渗透测试思路)
- 逻辑漏洞排查(业务测试核心)
- 自动化工具辅助排查(提升效率)
- 建立“漏洞画像”(信息整合)
- 一套通用的排查流程
在软件测试或安全测试领域,排查漏洞(Bug)通常遵循发现问题 → 定位根源 → 确认影响 → 修复验证的闭环流程,以下是测试技能排查漏洞的详细方法,按不同阶段和类型分类:
基础复现与确认(避免“假阳性”)
- 精确步骤记录:不要只写“点按钮报错”,记录准确的输入数据、前置条件、浏览器/设备型号、网络环境、操作顺序。
- 边界值测试:看是否只在特定极端值(如空值、超长字符串、负数、特殊字符)下出现,还是普遍存在。
- 对比实验:在相同的测试环境中,对比正确版本与错误版本,或使用不同账号(管理员 vs 普通用户)验证。
日志与监控分析(后端排查核心)
- 查看应用日志:后端测试必备,关注
ERROR、WARN级别日志,搜索报错时间点的异常栈(Stack Trace),可以快速定位代码行号、SQL语法错误、空指针异常等。- 技巧:使用
tail -f实时监控日志,或grep关键词过滤。
- 技巧:使用
- 数据库日志:检查慢SQL日志、死锁日志、事务回滚记录,看是否有数据库连接池泄漏、索引失效。
- 网络抓包:接口测试必用,使用 Fiddler、Charles 或 Wireshark。
- 对比请求/响应:看实际发送的请求参数是否与预期一致;看服务器返回的HTTP状态码(4xx/5xx)和响应体中的具体错误信息。
- 检查请求顺序:模拟攻击时,是否按正常流程(如先登录、后下单),还是可以直接跳过验证(如未登录直接访问接口)。
断点调试与动态分析(代码级排查)
- 前端断点(Chrome DevTools):
- 在 Sources 面板打断点,单步执行JS代码,查看变量值、网络请求的 Payload、响应数据格式错误。
- Console 面板:直接输入代码测试函数方法,查看报错信息。
- 后端断点(IDE):作为测试人员,如果允许访问代码或开发配合,可以在怀疑有问题的代码行打断点,观察变量值和逻辑流。
安全漏洞专项排查(渗透测试思路)
安全漏洞通常需要更主动的攻击思维:
- XSS(跨站脚本攻击):
- 在输入框提交
<script>alert(1)</script>,看是否弹出提示框;或查看HTML源码,看输入内容是否被原样输出到<script>或onerror属性中。
- 在输入框提交
- SQL注入:
- 在搜索框输入
1' or '1'='1或1' and 1=2,观察页面返回是否异常(如返回所有数据 vs 无数据)。
- 在搜索框输入
- 权限绕过/越权:
- 修改Cookie或Token(如用低权限用户的Session访问高权限API);直接修改URL中的用户ID参数(如
/user/1001改为/user/1002),看能否访问他人数据。
- 修改Cookie或Token(如用低权限用户的Session访问高权限API);直接修改URL中的用户ID参数(如
- 文件上传漏洞:
- 尝试上传
.php、.jsp、.exe文件,或修改Content-Type为image/jpeg,看服务器是否直接返回文件路径。
- 尝试上传
逻辑漏洞排查(业务测试核心)
这类漏洞通常不报错,但导致业务异常:
- 支付漏洞:修改支付金额(如-1元或极大值)、重复提交订单、先创建订单再篡改价格。
- 验证码绕过:尝试抓包重放验证码请求、直接删除验证码参数、使用万能验证码(如0000)。
- 时序漏洞:检查并发操作(如同时点赞多次、同时转账)、超时未释放资源(如库存扣减后未支付导致库存冻结)。
- 流程倒置:尝试跳过某些步骤(如不选择支付方式直接调用支付接口)。
自动化工具辅助排查(提升效率)
- 接口测试工具:
- Postman:手动构造异常参数(如JSON格式错误、字段类型错误)。
- JMeter/Locust:进行并发压力测试,看系统在高负载下是否出现内存溢出、死锁、数据不一致等难以在单次测试中发现的漏洞。
- 安全扫描工具:
- Burp Suite(专业版):自动扫描SQL注入、XSS、CSRF等常见Web漏洞。
- OWASP ZAP:开源扫描器,可集成到CI/CD。
- 静态代码扫描:SonarQube 可以快速发现未关闭的IO流、硬编码密码、危险函数使用等。
建立“漏洞画像”(信息整合)
排查时,持续记录以下信息,有助于快速切换思路:
- 稳定复现性:是必现(每次触发)还是偶现(概率性)?偶现可能与网络延迟、并发、数据量有关。
- 影响范围:是单个用户页面异常,还是全站无法访问?还是特定功能(如导出Excel)。
- 资源异常:是否伴随CPU飙升、内存泄漏、磁盘写满、连接数耗尽。
一套通用的排查流程
复现 -> 2. 截图/抓包 -> 3. 看日志(后端优先) -> 4. 分析请求参数/响应体 -> 5. 尝试边界值(报错)和逻辑绕过(不报错) -> 6. 对比正常与异常环境 -> 7. 提交清晰报告(含复现步骤、影响、日志片段)。
牢记原则:不要只报现象,要尝试判断根因(如:是前端校验缺失?还是后端未校验?还是数据库字段长度不足?),这能极大提升与开发沟通的效率和信任度。