定义测试范围和授权
在对GitHub应用程序进行安全测试之前,必须明确划定测试边界并获得存储库所有者的书面授权。测试范围必须指定具体的存储库、分支和API端点。确定授权的测试方法:动态应用程序安全测试(DAST)、静态应用程序安全测试(SAST),或两者兼有。
记录所有约定的限制条件,包括测试时间框架和禁止操作(如数据删除或服务中断)。确保所有团队成员理解并遵守这些边界。超越定义的范围可能导致法律后果和测试组织声誉损害。
- 在开始测试活动前获得书面授权
- 明确定义测试范围内的具体存储库和API端点
- 建立时间边界和操作限制
侦察和信息收集
从被动的目标应用程序信息收集开始。检查公共存储库、分支、提交历史和项目依赖项。分析配置文件、环境变量和可能被意外暴露在Git历史中的凭据。使用专业工具识别存储库记录中的凭据泄露或敏感信息。
识别应用程序的技术栈:编程语言、框架、库和版本号。此识别可检测依赖项中的已知漏洞。审查项目文档、API端点、数据库结构和身份验证机制。收集基础设施详情、托管提供商和支持应用程序的已部署服务。
- 检查存储库历史记录、分支和提交模式
- 搜索暴露的密钥和身份验证凭据
- 编录依赖项并识别库版本
使用OWASP Top 10进行漏洞分类
使用OWASP Top 10作为测试优先级划分的标准框架。该参考文档确定了最关键的Web应用程序安全风险,为有效的测试规划提供基础。专注于十个主要漏洞类别的测试,包括注入攻击、身份验证失败、敏感数据暴露和其他关键威胁。
对于每个漏洞类别,识别应用程序的入口点和潜在攻击向量。根据OWASP Web Security Testing Guide开发全面的检查清单,该指南为每种漏洞类型提供详细的测试方法。这种系统方法确保完整覆盖,并在恶意行为者利用之前识别关键安全问题。
- 参考OWASP Top 10 2025获取最新风险分类
- 应用OWASP Web Security Testing Guide方法论
- 为每个漏洞类别创建结构化检查清单
HTTP流量和通信分析
对应用程序交换的HTTP消息进行详细分析。检查请求和响应结构,包括HTTP头中可能泄露服务器或应用程序信息的元数据。验证HTTP方法的正确使用:确保应用程序根据预期目的正确处理GET、POST、PUT、DELETE和其他方法。
分析身份验证机制和会话管理:检查cookie使用、令牌实现和授权头。验证CORS(跨源资源共享)、CSP(内容安全策略)和其他HTTP级安全控制的正确实现。测试HTTP重定向、条件请求和缓存机制的正确处理,以防止机密数据泄露。
- 分析HTTP头以检查服务器信息披露
- 验证CORS和CSP策略实现的正确性
- 检查会话管理和cookie安全实践
身份验证和访问控制测试
对应用程序身份验证机制进行全面测试。测试身份验证绕过漏洞、弱密码策略、暴力破解攻击和字典攻击。评估密码恢复功能、多因素身份验证实现和其他账户保护机制。验证密码不以明文存储,且应用程序使用密码学安全的散列算法。
测试会话管理的正确性:确保会话令牌以不可预测的方式生成、具有足够的长度和适当的过期时间。测试令牌盗用和重用漏洞、会话固定攻击。验证正确的登出实现和令牌失效。确认敏感数据不通过URL参数传输或存储在日志中。
- 测试身份验证绕过和凭据暴力破解攻击
- 验证安全的密码存储和令牌生成
- 分析会话管理和正确的失效处理
注入和输入操纵测试
注入漏洞代表最关键的漏洞类别之一。通过向搜索字段、登录表单和过滤器提交各种SQL语法有效负载来测试应用程序的SQL注入。测试执行系统命令的函数中的操作系统命令注入。检查LDAP注入、XPath注入和其他查询语言注入向量(如果应用程序使用这些)。
进行XSS(跨站脚本编制)测试,尝试向各种应用程序入口点注入JavaScript代码。测试反射型和存储型XSS变体。验证应用程序对CSRF(跨站请求伪造)攻击的防御,并确认CSRF令牌保护的实现。测试HTTP头注入和参数污染,这可能导致缓存中毒或响应分割攻击。
- 在搜索字段和用户输入表单中测试SQL注入
- 验证XSS(反射型和存储型)和CSRF保护
- 检查HTTP头注入和缓存中毒向量
结果文档记录和修复指导
测试完成后,准备详细报告,记录所有发现的漏洞、其严重程度和潜在安全影响。每个漏洞必须描述确切位置(URL、参数、头部)、再现步骤和概念证明。按严重程度对漏洞进行分类:关键、高、中和低,基于可利用性和潜在影响。
为每个漏洞提供具体、可行的修复建议。包含代码示例、对OWASP等安全标准的参考和最佳实践指导。除技术建议外,建议组织改进:开发人员安全培训、将静态代码分析集成到开发管道中和定期依赖项更新。确保报告对技术人员和管理利益相关者均可理解。
- 记录每个漏洞的位置、再现步骤和概念证明
- 按严重程度分类:关键、高、中和低
- 提供包含代码示例的实用修复指导