一个简单的"What If"如何帮你发现漏洞
大多数人认为漏洞挖掘深藏在工具和扫描器中。我不这么认为。我认为它存在于代码中——以及一个简单的短语中:“如果……会怎样?”
“如果"的力量
漏洞赏金狩猎不是关于拥有最大的载荷列表;而是关于提出正确的问题。每个漏洞都始于开发者没有问的问题:
- 如果我把这个用户ID改成别人的会怎样?→ IDOR
- 如果我从请求中移除这个令牌会怎样?→ 认证绕过
- 如果我发送意外的输入会怎样?→ 验证失败
在正确时刻提出的一个"如果"问题,可能比任何自动化扫描更快地发现P1漏洞。
真实故事——一个问题,丰厚回报
场景:测试一个Web应用的登录流程。
如果问题:“如果我只是从请求中移除令牌会怎样?”
结果:会话仍然被接受。认证检查被绕过——一个确认的P1漏洞。没有花哨的工具,只是一个问题和快速测试。
教训:开发者经常将"令牌存在"等同于"已授权”。询问当令牌缺失时会发生什么,打破了这种假设。
像黑客一样思考
工具揭示表面级缺陷;问题暴露代码中埋藏的假设。养成这些习惯:
- 质疑开发者的假设:他们假设什么总是为真?
- 移除或修改必需的参数和头部
- 尝试乱序操作或没有预期令牌的操作
- 修改ID、重放请求、发送意外的内容类型
每个漏洞都始于开发者没有考虑的"如果"。
工具是放大器,不是替代品
扫描器很有价值,但它们只遵循你编写的规则。你的大脑——你的好奇心——才是引擎。使用自动化来扩展检查,但要带着问题引领。
你的工具指向表面。你的"如果"深入代码。
触发有用"如果"的快速清单
- 移除认证令牌/ cookies/头部
- 修改ID、UUID和引用
- 改变多步骤流程中的请求顺序
- 发送畸形或意外的数据类型
- 用不同权限重试请求
结论
大多数人用工具狩猎。最好的猎手用一个简单问题审问代码:“如果……会怎样?“这个想法通常就是你找到真正漏洞——有时是P1漏洞——所需要的全部。
如果你对此最实用的编程语言感兴趣,请务必查看我的文章《编程:被忽视的黑客支柱》。