SRC漏洞挖掘入门:从信息收集到攻击面绘制的实战指南
1. 项目概述:从“大海捞针”到“精准定位”
刚接触SRC(安全应急响应中心)漏洞挖掘的新手,最常问的一个问题就是:“我该从哪里开始?” 我的回答永远是:信息收集。你可以把它想象成侦探破案前的现场勘查,或者战士上战场前的地形侦察。没有扎实的信息收集,后续的漏洞扫描、手工测试都像是蒙着眼睛打靶,效率极低,甚至可能因为目标不清而“误伤”自己。
SRC漏洞挖掘的本质,是站在防御者的视角,帮助厂商发现其资产中潜在的安全风险。而信息收集,就是帮你清晰地描绘出“攻击面”——即所有可能被攻击的入口点。对于新手而言,掌握一套系统、高效的信息收集方法,远比盲目学习各种漏洞利用技巧更重要。它能让你快速锁定目标范围,发现那些容易被忽略的“边边角角”,而这些地方,往往就是漏洞的藏身之处。
这篇文章,我将结合自己从新手一路走来的经验,为你拆解一套可以直接上手、步步为营的信息收集流程。我们不会涉及任何复杂的工具链搭建,而是聚焦于那些经过实战检验、能立刻产生效果的核心技巧和免费工具。目标是让你在最短时间内,建立起对目标资产的立体化认知,为后续的漏洞挖掘打下坚实基础。
2. 信息收集的核心思路与目标拆解
在开始具体操作前,我们必须明确信息收集的目标。它不是漫无目的地搜集数据,而是有策略地构建目标画像。我把这个过程总结为四个层次,由外向内,由粗到细。
2.1 目标画像的四个层次
第一层:资产发现(What's there?)这是最基础的一层。你需要回答:目标公司(或SRC项目)到底有哪些对外的数字资产?这绝不仅仅是一个主域名。它包括:
- 域名与子域名:主站、各类业务子站(如
m.移动端、admin.后台、api.接口服务、dev.开发环境等)。 - IP地址与C段:服务器真实的IP地址,以及同一网段(C段)内可能属于该公司的其他服务器。
- 关联资产:收购的子公司、投资的项目、使用的第三方服务(如CDN、云存储、邮件服务)等。
第二层:技术架构识别(How it's built?)知道了“有什么”,接下来要弄清“怎么建的”。这能帮你预测可能存在的漏洞类型。
- 前端技术栈:JavaScript框架(React, Vue, Angular)、UI库、前端构建工具。
- 后端技术栈:Web服务器(Nginx, Apache)、中间件(Tomcat, Weblogic)、编程语言(Java, PHP, Python, Go)、框架(Spring Boot, Django, Laravel)。
- 第三方服务:使用的CDN(Cloudflare, Akamai)、云服务商(AWS, 阿里云)、统计分析(Google Analytics, 百度统计)、WAF(Web应用防火墙)等。
第三层:敏感信息挖掘(Where are the secrets?)这是最容易出成果的一层,也是新手最容易忽略的。很多漏洞源于信息的意外泄露。
- 目录与文件泄露:备份文件(
.zip,.tar.gz,.bak)、配置文件(.env,config.php)、版本控制文件(.git/,.svn/)、编辑器临时文件等。 - 代码与注释信息:前端JavaScript代码中硬编码的API密钥、数据库密码、内部接口地址;HTML注释中的测试账号、调试信息。
- 历史记录与快照:搜索引擎(如Google)缓存的页面历史版本、GitHub等代码托管平台泄露的员工代码、内部文档。
第四层:人员与组织信息(Who's behind it?)高级的信息收集会涉及社会工程学层面,对于SRC挖掘,我们主要关注公开的、合规的信息。
- 员工信息:在领英、技术社区(如GitHub)上公开的员工账号,其技术栈、项目经历可能暗示公司内部使用的技术。
- 组织架构:通过招聘信息(如BOSS直聘、拉勾网)了解公司在招的岗位,推测其正在发展的技术方向或可能存在人才短板的系统。
注意:第四层信息的收集和使用必须严格遵守法律法规和SRC平台规则,绝对禁止对个人进行骚扰、钓鱼等行为。我们的目的仅是通过公开信息辅助技术判断。
2.2 工具选型原则:免费、高效、可集成
新手常犯的错误是追求工具的“大而全”,安装了十几个工具却不知道先用哪个。我的建议是:精而不多,熟能生巧。
- 在线工具优先:对于初步侦查,像
DNSDumpster,VirusTotal,Shodan,Censys这样的在线平台无需安装,数据全面,是首选。 - 本地脚本辅助:当需要批量、深度扫描时,再使用
subfinder,amass,httpx,nuclei这类命令行工具。它们速度快,可定制性强,但需要一定的学习成本。 - 浏览器插件必备:
Wappalyzer(技术栈识别)、FoxyProxy(代理切换)、EditThisCookie(Cookie管理)是手工测试的“瑞士军刀”,必须熟练掌握。
3. 核心信息收集技巧实操详解
下面,我们按照实际操作流程,一步步拆解每个环节的核心技巧和工具使用。
3.1 第一步:域名与子域名挖掘
这是信息收集的基石。子域名往往对应着不同的业务系统、测试环境或管理后台,是漏洞的高发区。
1. 证书透明度日志(CT Log)查询这是目前最有效的子域名发现手段之一。当公司为其域名申请SSL/TLS证书时,证书颁发机构(CA)会将记录公开到CT日志中。这些日志包含了证书申请时使用的所有域名和子域名。
- 工具:
crt.sh是最常用的免费网站。只需输入主域名(如example.com),它就能返回所有关联的证书记录。 - 技巧:在结果中,不仅要看
*.example.com这样的通配符记录,更要关注那些具体的、奇怪的子域名,如dev-ops.example.com,staging-api.example.com,它们往往安全性较弱。 - 实操命令(本地工具):
# 使用 subfinder,它集成了多种数据源包括证书日志 subfinder -d example.com -silent | tee subdomains.txt # 使用 httpx 快速验证存活 cat subdomains.txt | httpx -silent -title -status-code -tech-detect -o live_subdomains.txthttpx的-tech-detect参数能同时识别技术栈,一举两得。
2. 搜索引擎语法与网络空间测绘
- Google Dorking:利用Google高级搜索语法发现敏感文件或目录。
site:example.com filetype:pdf:搜索站点上的PDF文件。site:example.com inurl:admin:搜索URL中包含admin的页面。site:example.com “index of /” “parent directory”:寻找目录遍历漏洞。
- 网络空间测绘引擎:
Shodan和Censys直接扫描互联网上的设备。你可以搜索:org:"Company Name":查找属于该组织的所有IP资产。ssl:"example.com":查找使用该域名证书的服务。http.title:"example":查找标题中包含特定关键词的Web服务。- 新手注意:这些引擎的免费账户有查询次数限制,用于关键信息查询即可,不要滥用。
3. 字典爆破与智能猜测当公开渠道穷尽后,可以尝试基于常见子域名字典进行爆破。
- 工具:
altdns是一款优秀的工具,它不仅能使用字典,还能通过排列组合(如dev,test,staging与主域名组合)生成新的候选子域名。 - 技巧:收集目标已发现的子域名,分析其命名规律(如
city1.api.example.com,city2.api.example.com),然后自定义字典进行针对性爆破。
3.2 第二步:IP资产与网络拓扑探测
确定了域名,下一步是找到它背后的真实服务器IP,并探查其网络邻居。
1. 绕过CDN查找真实IP很多网站使用CDN(内容分发网络)隐藏真实服务器。找到真实IP可能发现直接暴露的、防护较弱的后端服务。
- 方法:
- 历史DNS记录查询:使用
SecurityTrails,ViewDNS等工具查看域名的历史A记录,可能在启用CDN前暴露过真实IP。 - 子域名关联:很多公司只为
www.主站配置CDN,而api.,mail.,dev.等子域名可能直接解析到真实IP。 - SSL证书关联:在
Shodan或Censys中搜索目标域名的SSL证书哈希值,可能会找到使用同一张证书的其他IP(可能是源站)。
- 历史DNS记录查询:使用
- 验证:找到疑似IP后,在本地修改hosts文件,将域名指向该IP,然后访问看内容是否与CDN后的一致。
2. C段存活主机扫描确认了某个真实IP(例如192.168.1.100)后,可以扫描其所在的C段(192.168.1.0/24),寻找属于同一公司的其他服务器。
- 工具:
nmap是行业标准。 - 实操命令:
# 快速扫描C段80,443,8080等常见Web端口 nmap -sn 192.168.1.0/24 --open -oG c_scan.txt # 从结果中提取存活IP,进行Web服务探测 grep “Up” c_scan.txt | awk ‘{print $2}’ | httpx -title -status-code -tech-detect - 注意事项:C段扫描行为较为敏感,务必确认目标SRC政策是否允许。对于云服务商(如AWS, Azure)的IP,C段内可能全是其他公司资产,扫描价值不大且风险高。
3.3 第三步:Web应用指纹与技术栈识别
了解目标用什么技术开发,就能推断其可能存在的漏洞。例如,ThinkPHP框架有特定的漏洞历史,Vue.js构建的前端可能暴露API接口。
1. 自动化工具体验
- Wappalyzer (浏览器插件):访问页面即可自动识别,最方便。
- WhatWeb (命令行工具):可批量扫描,识别精度高。
whatweb -a 3 https://example.com - httpx 的
-tech-detect参数:如前所述,在验证子域名存活时即可完成识别。
2. 手工观察点自动化工具并非万能,需要手工辅助确认:
- HTTP响应头:查看
Server,X-Powered-By,Set-Cookie(如JSESSIONID暗示Java)等字段。 - 页面源代码:
- 查看引用的JavaScript/CSS文件路径,如包含
/wp-content/大概率是WordPress。 - 查看
<meta>标签中的生成器信息,如<meta name="generator" content="WordPress 5.7">。 - 注意注释中的框架、版本信息。
- 查看引用的JavaScript/CSS文件路径,如包含
- URL路径与文件扩展名:
.php,.jsp,.aspx,.do,.action等直接暴露了后端语言。 - 错误页面:故意触发一个404或错误,返回的页面可能包含框架、服务器版本等调试信息(在生产环境较少见,但测试环境常有)。
3.4 第四步:敏感目录、文件与信息泄露挖掘
这是SRC挖掘中“低垂的果实”,很多高危漏洞源于此。
1. 目录扫描与爆破
- 工具:
dirsearch,gobuster,ffuf。 - 实操命令:
# 使用 dirsearch,指定扩展名和字典 python3 dirsearch.py -u https://example.com -e php,js,bak,tar.gz,zip,sql -w /path/to/common.txt # 使用 ffuf,速度更快 ffuf -u https://example.com/FUZZ -w /path/to/wordlist.txt -e .php,.bak,.zip -fc 403-fc 403表示过滤掉状态码为403(禁止访问)的结果,这些通常是无意义的。 - 字典选择:不要只用默认字典。根据识别出的技术栈使用针对性字典(如针对WordPress的wpscan字典,针对Spring的字典)。
2. 查找Git泄露.git目录泄露可能导致源代码完全暴露。
- 工具:
GitHacker或dvcs-ripper。 - 手工验证:访问
https://example.com/.git/HEAD,如果返回ref: refs/heads/master之类的内容,则证明存在泄露。 - 危害:获取源码后,可以分析硬编码的密钥、数据库配置、内部接口、未公开的API等,危害极大。
3. 搜索引擎与代码平台挖掘
- GitHub/GitLab搜索:
- 搜索公司名、域名、项目名。
- 搜索
password,api_key,secret,database,config等关键词,并限定语言和用户。 - 技巧:使用
filename:.env搜索环境配置文件,使用extension:json privatekey搜索密钥文件。
- Google Dorking 进阶:
site:github.com “example.com” “password”site:example.com “api” “key”
4. 信息整理、分析与攻击面绘制
收集到海量数据后,如何管理并从中发现价值是关键。杂乱的数据堆砌毫无意义。
4.1 数据整理与可视化
- 统一格式:将不同工具输出的结果(子域名、IP、URL)进行去重、合并,整理到一个结构化的文件中,如CSV或JSON。
- 分类标记:对资产进行分类标记,例如:
业务类型:主站、API、后台、移动端、测试环境。技术栈:Java/Spring, PHP/Laravel, Nginx, Vue。敏感等级:高(如管理后台、API网关)、中(用户业务)、低(静态宣传页)。
- 可视化工具:使用
Obsidian,Notion或简单的思维导图工具,将资产、技术、关联关系画出来。一张清晰的攻击面地图能让你瞬间找到突破口。
4.2 攻击面分析与优先级排序
不是所有发现的资产都值得投入同等精力测试。需要建立优先级:
- 高风险入口:
- 管理后台:
admin,manage,backend等子域名或路径。 - API接口:
api,graphql,rest等,特别是未鉴权或文档清晰的。 - 测试/开发环境:
dev,test,staging,uat,这些环境安全措施通常较弱。 - 新上线业务:新功能、新页面往往未经充分安全测试。
- 管理后台:
- 脆弱技术栈:根据指纹识别结果,快速检索该框架/组件/中间件的已知公开漏洞(CVE),特别是那些有公开利用代码(PoC/Exp)的。
- 非常规资产:那些不属于公司主流命名规范的子域名、隐藏在C段里的孤立IP、第三方服务商下的页面,这些容易被运维人员遗忘,是“隐秘的角落”。
4.3 建立持续监控机制
信息收集不是一次性的工作。公司的资产在不断变化:新业务上线、旧业务下线、服务器迁移、技术栈升级。
- 定期运行:可以编写简单的Shell脚本或Python脚本,将上述工具链组合起来,每周或每两周自动运行一次,对比新旧结果,发现新增资产。
- 利用监控平台:有些在线服务(如
Sublist3r的监控功能、或自建TheHive+Cortex)可以提供资产监控和告警。 - 关注动态:关注目标公司的新闻、招聘信息、App更新日志,这些都可能暗示其技术或业务方向的变化。
5. 新手常见问题与避坑指南
在实际操作中,新手会遇到各种问题。这里记录一些典型的“坑”和解决方案。
5.1 工具使用与效率问题
问题:扫描速度太慢或卡住。
- 原因:默认线程数或超时时间设置不合理;字典太大;网络不稳定。
- 解决:
- 对于子域名枚举、目录爆破,合理设置线程(
-t参数)。通常从10-20开始,根据网络情况和目标响应调整,并非越高越快。 - 设置合理的超时(
-timeout)和重试次数。 - 优先使用高质量的精简字典,而非庞大的万能字典。先用小字典快速扫描,再对可疑目标用大字典深度扫描。
- 使用
httpx等工具先进行存活探测,只对存活的Web服务进行目录爆破,能极大提升效率。
- 对于子域名枚举、目录爆破,合理设置线程(
问题:工具报错或没有结果。
- 原因:依赖环境缺失;API密钥未配置或失效;目标有防护(如WAF、速率限制)。
- 解决:
- 仔细阅读工具的安装说明和依赖要求。
- 使用
subfinder,amass等需要API的工具时,确保在配置文件中正确填写了密钥(如VirusTotal, Shodan的API)。 - 如果怀疑被WAF拦截,尝试降低请求频率,添加随机延迟,或更换IP地址(使用代理池)。对于目录扫描,可以尝试使用
-random-agent参数随机化User-Agent。
5.2 策略与合规性问题
问题:我的扫描行为会被发现吗?会违法吗?
- 这是最重要的问题!未经授权的渗透测试是违法的。SRC挖掘必须在厂商授权的范围内进行。
- 解决:
- 仔细阅读SRC公告:每个SRC都有其测试范围(Scope)、禁止测试项(Out of Scope)和测试规则。只测试Scope内的资产,严禁测试Scope外的(如合作伙伴系统、员工邮箱等)。
- 控制扫描强度:信息收集阶段的扫描应是非入侵性的。避免使用漏洞扫描器(如AWVS, Nessus)进行全端口暴力扫描或发起大量攻击载荷测试。以发现资产为目的,而非攻击系统。
- 使用合法代理:如果需要,使用可靠的网络代理服务,但绝对不要试图使用任何非法手段绕过网络管控或访问受限资源。
- 心存敬畏:如果发现严重漏洞(如获取了数据库权限),立即停止进一步操作,并按照SRC流程上报。切勿下载或泄露任何用户数据。
问题:收集到的员工信息怎么用?
- 原则:仅用于辅助技术判断。例如,发现某员工GitHub上有公司测试项目的代码,可以查看其技术栈,推测公司内部可能使用的框架。绝对禁止用于钓鱼、社工攻击或任何形式的骚扰。
5.3 信息过载与突破口选择
问题:资产太多,不知道从何下手。
- 原因:缺乏分析方法和优先级判断。
- 解决:回到第4.2节。先按高风险入口、脆弱技术栈、非常规资产进行过滤和排序。选择一个最“有感觉”的点(比如一个用着老旧框架的测试后台)进行深度测试,而不是在所有资产上蜻蜓点水。
问题:常见的目录、子域名都扫了,没发现什么。
- 原因:思维固化,只用了常见字典。
- 解决:
- 自定义字典:从已发现的资产中提取关键词(公司名缩写、产品名、业务术语),生成专属字典。
- 关注JS文件:现代Web应用大量逻辑在前端。用浏览器开发者工具(Network面板)仔细查看加载的所有JS文件,里面可能包含新的API端点、内部路径、甚至硬编码的敏感参数。
- 参数分析:对发现的每一个URL,观察其参数(
?id=1&name=admin)。尝试对参数进行模糊测试(fuzzing),可能发现未授权的API接口或信息泄露。
信息收集是SRC漏洞挖掘的基石,也是一项需要耐心、细心和创造力的工作。它没有绝对的终点,其深度和广度直接决定了你后续测试的效率和成果。对于新手而言,不必追求一次就做到完美。先从一个小目标开始,熟练运用一两个工具,理解其原理,然后逐步扩展你的技能栈和知识面。记住,最宝贵的工具是你的大脑和好奇心。当你养成了对数字资产“顺藤摸瓜”的思维习惯,你会发现,漏洞就在那里,等着被有心人发现。
