一、漏洞挖掘的前期:信息收集
在漏洞挖掘过程中,信息收集是关键一步,奠定了漏洞挖掘的基础。信息收集既可以帮助确定目标范围,也能明确目标的系统结构,掌握服务状态,为后续挖掘提供方向。
1. 域名信息收集
企业SRC通常明确漏洞收录范围,若无明确信息,需自行收集相关域名。主要途径包括:
- 网站信息:查看企业网站的“关于我们”页面或网站地图,了解域名及相关子域。
- WHOIS反查:通过域名注册信息反查其他关联域。
- 跳转请求:观察应用内跳转和调用的域名。
- 百度、Google搜索:利用搜索引擎通过标题、版权信息等查找相关域名。
- 网站源码:通过HTML源码中的图片、JS、CSS链接等资源文件中获取相关域名。
- APK反编译:分析APP的代码、接口,提取域名信息。
2. 子域名信息收集
收集子域名可以扩大信息面,为发现新入口提供更多可能。常用的方法包括:
-
工具扫描:常用工具如Subdomain、Amass、Layer等可快速扫描子域名,获取相关信息。
-
搜索引擎Dork:使用Google、Bing等搜索引擎进行Dork查询,例如:
- 搜集域名及邮箱:
site:example.com intext:@example.com
- 搜集管理后台:
site:example.com 管理
,site:example.com admin
,site:example.com login
- 敏感文件路径:
site:example.com filetype:doc
- 搜集域名及邮箱:
-
手动验证:通过工具收集的子域名可能有误报,可自行筛选,排除不可访问的域名。
3. 敏感信息收集
敏感信息可大大增加系统入口和权限提升的可能性。常用敏感信息收集途径有:
- GitHub源代码:通过GitHub等代码托管平台查找源代码泄露,获取系统结构、接口密钥等。
- SVN信息泄露:检查是否存在SVN泄露,获取代码库信息。
- 敏感文件:数据库配置文件、源码备份文件等是常见的敏感文件。
- 敏感目录:如后台登录、API接口目录等。
- 员工信息:收集邮箱、用户名规则,部分企业默认密码较为弱,可作为暴力破解字典。
通过信息收集阶段,有时可以直接发现系统漏洞,如系统管理页面未加权限保护、GitHub泄露的管理后台账号密码等。
二、信息整理与分析
1. 信息分类
信息收集完成后,将数据进行分类、整理,便于进一步分析与利用。可以用Excel或Word等工具进行记录,主要分类包括:
- 功能相似的网站:便于观察是否存在通用漏洞。
- 模板化网站:许多系统基于相同模板开发,可能存在一致漏洞。
- 存在WAF的网站:标记是否存在WAF,便于选择合适的攻击方式。
- 已登录网站:记录已注册的账号,方便测试不同权限和功能。
- 已知漏洞记录:通过以往漏洞公告、历史数据等观察是否存在已知漏洞类型。
2. 漏洞信息整理
对于找到的漏洞,建议详细记录,包含漏洞的复现过程、截图等,方便后续复盘。可以将挖掘过程中获得的数据信息整理,以便后续用于爆破、扫描等过程。
三、漏洞挖掘:后期操作
完成信息收集和整理后,可开始实际漏洞挖掘。主要关注OWASP Top 10漏洞和逻辑漏洞,具体方法如下:
1. 理解功能点
漏洞挖掘需要理解系统业务逻辑和功能点,尤其是涉及用户输入、上传、查询的接口,是漏洞常见的入口。
2. 控制参数分析
分析可控参数并尝试各种输入测试,常见漏洞类型包括SQL注入、XSS、权限绕过等。可配合Burp Suite等拦截代理工具进行参数控制和修改。
3. 流程与逻辑分析
许多逻辑漏洞发生在系统特定流程中,如订单支付、账户切换等。需要梳理流程逻辑,尝试从流程间切换、状态不一致等方面查找漏洞。
示例流程分析
以“购物流程”举例,常见逻辑漏洞点包括:
- 筛选查询:检查是否存在SQL注入。
- 加入购物车:商品数量是否可为负数。
- 价格修改:修改总额、优惠券、折扣金额,检查是否存在逻辑错误。
- 订单遍历:订单完成后尝试订单遍历,检查是否存在越权漏洞。
通过以上步骤,能够有效发现企业系统的各类安全隐患。希望白帽子在实际操作中灵活运用信息收集和整理技术,最终达到提高漏洞挖掘效率的目的。