1. 漏洞挖掘入门:从零开始的认知框架
第一次接触漏洞挖掘时,我完全被各种术语和工具淹没了。直到在某个深夜调试一个简单的SQL注入漏洞时,突然意识到:漏洞挖掘的本质是理解系统如何"误解"用户输入。这个认知转变让我从盲目扫描转向了有意识的思考。
漏洞挖掘的核心在于建立"输入-处理-输出"的思维模型。每个Web请求、每个文件上传、每个API调用都是系统接受输入的入口。当开发者没有正确验证和净化这些输入时,漏洞就产生了。以最常见的SQL注入为例,当用户输入被直接拼接到数据库查询中,攻击者就可以通过精心构造的输入改变查询逻辑。
关键认知:不要急于使用工具,先培养手动测试的习惯。用Burp Suite拦截一个普通登录请求,尝试在用户名字段输入单引号('),观察系统的反应。这种基础测试能帮你建立对输入边界的敏感度。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SQL注入实战:从检测到利用的完整链条
2.1 检测逻辑与手工验证
在测试某电商网站搜索功能时,我习惯先用经典探测字符串'和"测试输入闭合。当看到熟悉的MySQL错误页面时,就知道存在注入点。但现代系统往往屏蔽了错误回显,这时需要更隐蔽的检测方式:
sql复制apple' AND 1=1--
apple' AND 1=2--
通过对比两次返回结果的差异(比如商品数量是否变化)来判断注入是否成功。这种基于布尔逻辑的检测方法在2023年OWASP测试指南中被列为最可靠的初步验证手段。
2.2 绕过过滤的六种实战技巧
去年在某众测项目中遇到过滤了空格和注释符的情况,最终通过以下方式成功绕过:
-
用括号替代空格:
sql复制SELECT(user)FROM(users)WHERE(id)=1 -
使用内联注释(MySQL特有):
sql复制SELECT/*!32302 1/0,*/username FROM users -
Tab字符替代空格(在Burp中十六进制编码为%09)
2.3 工具化利用与效率提升
虽然手工测试很重要,但合理使用sqlmap能极大提升效率。我最常用的参数组合:
bash复制sqlmap -u "http://target.com/search?q=test" --batch --level=3 --risk=3 --dbs
重要经验:永远先使用
--batch --level=1 --risk=1进行安全扫描,避免触发WAF封锁。获取初步信息后再逐步提高检测级别。
3. XSS漏洞挖掘:现代前端架构下的新挑战
3.1 三种XSS类型的实战区分
在一次银行系统的测试中,我发现虽然传统反射型XSS已被有效防御,但DOM型XSS却因为前端框架的复杂交互而大量存在。测试时特别关注:
- 从URL到
eval()或innerHTML的数据流 - Angular/Vue等框架的模板注入点
- 第三方富文本编辑器的HTML净化机制
3.2 2023年有效XSS Payload精选
经过上百次实战测试,这些payload仍然具有高成功率:
javascript复制<img src=x onerror=alert(document.domain)>
<svg/onload=alert(1)>
javascript:alert(1)//%0A
对于CSP防护的绕过,我常用:
html复制<script src="data:text/javascript,alert(1)"></script>
3.3 前端框架的特殊测试点
React应用中容易忽略dangerouslySetInnerHTML的使用场景,而Vue的v-html指令也需要重点检查。最近在某CMS中发现通过JSONP回调函数实现的独特XSS向量:
javascript复制callback=alert(1);//&data=test
4. 文件上传漏洞的深度利用
4.1 绕过扩展名检测的七种方法
在最近一次渗透测试中,目标系统声称已修复所有上传漏洞。但通过以下组合拳最终获得shell:
- 双扩展名绕过:
shell.php.jpg - 大小写变异:
sHell.PhP - 空字节截断:
shell.php%00.jpg - MIME类型伪造:修改Content-Type为
image/jpeg - 超大文件头:在真实图片头部插入PHP代码
4.2 高级利用技巧:从上传到RCE
获得上传权限只是开始,真正的挑战在于执行代码。我常用的三种方式:
-
结合.htaccess实现任意扩展名解析:
code复制AddType application/x-httpd-php .xyz -
利用PHP的二次渲染漏洞(特别针对图像处理系统)
-
通过SSRF+文件上传实现内网穿透(需要特定环境配置)
5. 漏洞挖掘的思维训练法
5.1 代码审计的四个关键视角
阅读源码时,我习惯用不同颜色的注释标记潜在风险点:
- 红色:直接拼接SQL查询的位置
- 蓝色:未过滤的用户输入直接输出到页面
- 绿色:文件操作相关函数调用
- 黄色:反序列化操作
这种方法在审计ThinkPHP和Spring Boot应用时特别有效。
5.2 靶场训练的进阶路径
建议按以下顺序攻克DVWA靶场:
- Low级别:理解基础漏洞原理
- Medium级别:学习基础绕过技巧
- High级别:掌握高级利用方法
- Impossible级别:研究防御方案设计
个人心得:每个级别通关后,尝试自己用不同语言重写漏洞代码,这能加深对本质的理解。
6. 企业级漏洞挖掘实战要点
6.1 业务逻辑漏洞挖掘框架
在某金融系统测试中,我总结出业务漏洞的CHECKLIST:
- 顺序依赖:能否跳过验证步骤?
- 状态依赖:未完成KYC能否进行交易?
- 金额篡改:修改HTTP参数中的金额值
- 时间竞争:快速并发提交订单
6.2 漏洞报告的黄金标准
优质报告应包含:
- 漏洞位置(完整URL和参数)
- 重现步骤(如"在地址栏输入...")
- 危害证明(截图或视频)
- 修复建议(具体代码示例)
- 关联风险(如可能影响的用户范围)
我习惯用Markdown编写报告,配合Asciinema录制终端操作过程。
