1. 漏洞挖掘入门:从零开始的认知框架
第一次接触漏洞挖掘时,我完全被各种术语和工具淹没了。直到在某个深夜调试SQL注入漏洞时突然开窍:原来所有漏洞挖掘本质上都是在寻找程序处理数据时的"非预期行为"。这个认知转变让我从盲目工具使用者成长为有方法论的研究者。
漏洞挖掘的核心在于理解三个基本问题:
- 程序如何接收输入?(入口点)
- 程序如何处理这些输入?(处理逻辑)
- 处理结果如何影响系统状态?(影响范围)
以最常见的Web漏洞为例,下图展示了典型的数据流路径:
用户输入 → 前端过滤 → 网络传输 → 后端处理 → 数据库操作 → 结果返回每个箭头代表一个可能的漏洞触发点。新手常犯的错误是只关注明显的注入点(如登录框),而忽略Cookie、HTTP头、文件元数据等隐蔽入口。
关键认知:漏洞挖掘不是"碰运气",而是系统性地验证程序对各类输入的容错能力
2. SQL注入实战:从基础到绕过技巧
2.1 基础注入原理与检测
还记得我第一次成功注入时的场景:在一个简单的用户搜索功能中,输入单引号导致服务器返回了数据库错误信息。这个报错直接暴露了后端使用MySQL且未做参数化查询。
基础检测流程:
- 寻找可能拼接SQL的输入点(URL参数、表单字段等)
- 尝试触发语法错误(输入
'、"、\等特殊字符) - 观察响应差异(错误信息、延迟、空白页等)
经典检测payload:
' AND 1=1 -- ' AND 1=2 -- " OR ""="2.2 高级绕过技术实战
现代WAF(Web应用防火墙)让基础注入越来越难成功。去年在某次渗透测试中,我遇到了一个过滤了所有常见关键词的防御系统。最终通过以下方式绕过:
- 大小写混淆:
SeLeCt * fRoM users- 注释分割:
SEL/*xxx*/ECT user/*yyy*/name FROM admin- 等价函数替换:
CONCAT('ad','min') 代替 'admin'- 编码绕过:
%53%45%4C%45%43%54 (SELECT的URL编码)实战心得:永远准备三套方案 - 基础payload用于快速检测,混淆payload用于绕过,备用方案应对突发情况
3. XSS攻防:从弹窗到实际危害
3.1 三种XSS类型对比
在一次企业SRC项目中,我通过存储型XSS拿到了管理员cookie。这个漏洞存在于富文本编辑器,允许插入未过滤的HTML标签:
| 类型 | 触发场景 | 持久性 | 危害等级 |
|---|---|---|---|
| 反射型 | URL参数即时响应 | 临时 | 中 |
| 存储型 | 数据库存储后展示 | 永久 | 高 |
| DOM型 | 前端JS处理不当 | 依赖环境 | 中高 |
3.2 现代前端环境下的绕过技巧
随着前端框架的普及,传统<script>alert(1)</script>越来越难生效。最新实战中有效的技巧:
- 事件处理器绕过:
<img src=x onerror=alert(1)>- SVG向量利用:
<svg><script>alert(1)</script></svg>- 模板字符串注入:
${alert(1)}- AngularJS沙箱逃逸:
{{constructor.constructor('alert(1)')()}}重要发现:在React/Vue项目中,尝试通过
javascript:协议或eval相关函数寻找突破口
4. 文件上传漏洞的深度利用
4.1 绕过前端验证的三种方式
某次攻防演练中,目标系统前端检查了文件扩展名,但后端处理存在缺陷:
Burp拦截修改:
- 上传.jpg文件 → 拦截请求 → 修改为.php
双扩展名绕过:
- shell.php.jpg
- shell.jpg.php
大小写变异:
- SHELL.PHp
- shell.PhP
4.2 后端解析漏洞实战
更危险的是服务器自身的解析漏洞:
Apache解析缺陷:
- shell.php.xxx(配置错误时会执行php代码)
IIS6.0分号漏洞:
- shell.asp;.jpg
Nginx错误配置:
- /uploads/1.jpg/1.php(配合目录穿越)
文件内容检测绕过技巧:在图片EXIF中插入PHP代码,或使用GIF头+PHP代码的混合文件
5. 漏洞挖掘方法论与工具链
5.1 系统化挖掘流程
根据多年经验总结的漏洞挖掘SOP:
信息收集阶段
- 子域名枚举(assetfinder、amass)
- 目录扫描(dirsearch、gobuster)
- 技术指纹识别(wappalyzer)
自动化扫描阶段
- 基础漏洞扫描(nmap、nikto)
- 专项检测(sqlmap、XSStrike)
手工验证阶段
- 业务逻辑测试
- 非常规输入测试
漏洞利用阶段
- 编写PoC
- 权限提升尝试
5.2 必备工具清单
| 工具类型 | 推荐工具 | 适用场景 |
|---|---|---|
| 代理工具 | Burp Suite Pro、Charles | 请求拦截与重放 |
| 扫描器 | sqlmap、nuclei | 自动化漏洞检测 |
| 开发辅助 | Postman、CyberChef | 数据构造与转换 |
| 信息收集 | theHarvester、shodan-cli | 目标资产发现 |
| 漏洞利用 | metasploit、Cobalt Strike | 后期渗透 |
6. 新手常见误区与进阶建议
6.1 必须避免的五个错误
过度依赖工具:
- 案例:sqlmap跑不出结果就放弃,没尝试手工注入
忽略业务上下文:
- 案例:在JSON API端点测试传统表单XSS payload
测试姿势不当:
- 案例:生产环境直接使用
rm -rf类危险命令
- 案例:生产环境直接使用
报告描述不清:
- 案例:只说"存在SQL注入",不提供具体参数和重现步骤
法律意识薄弱:
- 案例:未经授权测试非自己负责的系统
6.2 能力提升路线图
根据带新人的经验,建议分阶段成长:
第一阶段(1-3个月):
- 掌握OWASP Top 10漏洞原理
- 熟练使用Burp Suite基础功能
- 能复现简单靶场漏洞
第二阶段(3-6个月):
- 理解WAF工作原理及绕过方法
- 能独立完成完整渗透测试流程
- 开始关注业务逻辑漏洞
第三阶段(6-12个月):
- 具备代码审计能力
- 能开发自定义漏洞利用工具
- 形成个人方法论
最后分享一个真实案例:在某次审计中,通过仔细分析分页排序参数,发现了基于ORDER BY的SQL注入。这个漏洞被多人忽略,因为常规扫描器不会测试排序功能。这提醒我们:优秀的漏洞猎手需要工具辅助,但更需要独立思考的能力。