一位普通漏洞猎手的漏洞挖掘方法论网络安全行业最常被问及的问题是"你的方法论是什么?"或"你如何寻找漏洞?"。本文将从一位持续学习的普通漏洞猎手视角回答这些问题。这套方法随着时间不断进化,且仍将持续改进。虽然已有许多优秀资源,但本文将以略有不同的方式呈现——它并非来自拥有5-10年经验的专家,而是一位直言不讳的"普通"学习者的实践总结。

明确漏洞赏金目标在思考方法论之前,你需要明确参与漏洞赏金计划的目的:是为了最大化收益?学习特定技术?还是提升安全知识?目标将极大影响你的方法。例如,若以盈利为主要目标,则应重点投入侦察和自动化,这能帮助你更快发现漏洞。

作者参与漏洞赏金的初衷是学习应用和Web安全知识,奖金只是额外收益。因此其方法论更侧重深度挖掘大型应用,而非广度覆盖。

大型应用测试七步法1. 目标选择标准选择资产数量较少但功能深度大的项目作为首要标准,确保应用具有足够功能供长期研究。其次考虑项目响应速度、奖金发放周期、资产类型和整体声誉等因素。

2. 企业背景研究选定目标后,首先研究公司背景及其关注重点。不同企业有不同优先级:有些更重视用户隐私,有些需符合特定监管要求。例如处理PHI(受保护健康信息)的应用会特别关注医疗数据的未授权访问,因此聚焦授权缺陷和IDOR等漏洞往往能发现高危问题。

3. 应用功能学习创建2个测试账户全面遍历应用功能(如有不同用户角色需创建更多)。重点包括:

查找公开API/技术文档(非营销材料)分析所用技术栈以确定重点测试方向观察请求特征:是否使用连续ID(易发IDOR)、API授权机制等标记10-15个值得深入测试的端点或功能此阶段同时注意授权缺陷/IDOR,既能学习应用又能发现常见漏洞。记录关键信息如输入过滤机制、对象ID控制方式等。

4. 功能模块深度测试采用功能模块导向而非漏洞类型导向的测试方法。根据功能特性灵活调整测试用例,例如:

支持URL导入的功能需测试SSRF等漏洞消息传递功能则关注权限控制问题5. 发现隐藏内容使用目录爆破工具和JS文件分析寻找隐藏端点。这些隐蔽功能往往缺乏常规功能的安全防护。

6. 重复测试已验证功能首次测试漏报漏洞的情况非常普遍。随着对应用理解的深入,重新测试往往能发现新问题。

7. 知识反哺测试即使转向其他项目,也应定期用新技术重新测试旧目标,将公开报告中的攻击手法应用到历史目标上。

方法论总结漏洞挖掘方法论高度依赖个人目标。若以盈利为主,则应侧重侦察和可自动化发现的漏洞;若以学习为目的,则需要更深入的手动测试。随着经验积累,许多技巧会成为第二本能——你能根据特定行为或技术预判潜在漏洞。关键在于持续学习并将新知识应用于实践。