SRC漏洞挖掘入门:从信息收集到攻击面绘制的实战指南
1. 项目概述从“大海捞针”到“精准定位”刚接触SRC安全应急响应中心漏洞挖掘的新手最常问的一个问题就是“我该从哪里开始” 我的回答永远是信息收集。你可以把它想象成侦探破案前的现场勘查或者战士上战场前的地形侦察。没有扎实的信息收集后续的漏洞扫描、手工测试都像是蒙着眼睛打靶效率极低甚至可能因为目标不清而“误伤”自己。SRC漏洞挖掘的本质是站在防御者的视角帮助厂商发现其资产中潜在的安全风险。而信息收集就是帮你清晰地描绘出“攻击面”——即所有可能被攻击的入口点。对于新手而言掌握一套系统、高效的信息收集方法远比盲目学习各种漏洞利用技巧更重要。它能让你快速锁定目标范围发现那些容易被忽略的“边边角角”而这些地方往往就是漏洞的藏身之处。这篇文章我将结合自己从新手一路走来的经验为你拆解一套可以直接上手、步步为营的信息收集流程。我们不会涉及任何复杂的工具链搭建而是聚焦于那些经过实战检验、能立刻产生效果的核心技巧和免费工具。目标是让你在最短时间内建立起对目标资产的立体化认知为后续的漏洞挖掘打下坚实基础。2. 信息收集的核心思路与目标拆解在开始具体操作前我们必须明确信息收集的目标。它不是漫无目的地搜集数据而是有策略地构建目标画像。我把这个过程总结为四个层次由外向内由粗到细。2.1 目标画像的四个层次第一层资产发现Whats there?这是最基础的一层。你需要回答目标公司或SRC项目到底有哪些对外的数字资产这绝不仅仅是一个主域名。它包括域名与子域名主站、各类业务子站如m.移动端、admin.后台、api.接口服务、dev.开发环境等。IP地址与C段服务器真实的IP地址以及同一网段C段内可能属于该公司的其他服务器。关联资产收购的子公司、投资的项目、使用的第三方服务如CDN、云存储、邮件服务等。第二层技术架构识别How its built?知道了“有什么”接下来要弄清“怎么建的”。这能帮你预测可能存在的漏洞类型。前端技术栈JavaScript框架React, Vue, Angular、UI库、前端构建工具。后端技术栈Web服务器Nginx, Apache、中间件Tomcat, Weblogic、编程语言Java, PHP, Python, Go、框架Spring Boot, Django, Laravel。第三方服务使用的CDNCloudflare, Akamai、云服务商AWS, 阿里云、统计分析Google Analytics, 百度统计、WAFWeb应用防火墙等。第三层敏感信息挖掘Where are the secrets?这是最容易出成果的一层也是新手最容易忽略的。很多漏洞源于信息的意外泄露。目录与文件泄露备份文件.zip,.tar.gz,.bak、配置文件.env,config.php、版本控制文件.git/,.svn/、编辑器临时文件等。代码与注释信息前端JavaScript代码中硬编码的API密钥、数据库密码、内部接口地址HTML注释中的测试账号、调试信息。历史记录与快照搜索引擎如Google缓存的页面历史版本、GitHub等代码托管平台泄露的员工代码、内部文档。第四层人员与组织信息Whos behind it?高级的信息收集会涉及社会工程学层面对于SRC挖掘我们主要关注公开的、合规的信息。员工信息在领英、技术社区如GitHub上公开的员工账号其技术栈、项目经历可能暗示公司内部使用的技术。组织架构通过招聘信息如BOSS直聘、拉勾网了解公司在招的岗位推测其正在发展的技术方向或可能存在人才短板的系统。注意第四层信息的收集和使用必须严格遵守法律法规和SRC平台规则绝对禁止对个人进行骚扰、钓鱼等行为。我们的目的仅是通过公开信息辅助技术判断。2.2 工具选型原则免费、高效、可集成新手常犯的错误是追求工具的“大而全”安装了十几个工具却不知道先用哪个。我的建议是精而不多熟能生巧。在线工具优先对于初步侦查像DNSDumpster,VirusTotal,Shodan,Censys这样的在线平台无需安装数据全面是首选。本地脚本辅助当需要批量、深度扫描时再使用subfinder,amass,httpx,nuclei这类命令行工具。它们速度快可定制性强但需要一定的学习成本。浏览器插件必备Wappalyzer技术栈识别、FoxyProxy代理切换、EditThisCookieCookie管理是手工测试的“瑞士军刀”必须熟练掌握。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可能是源站。验证找到疑似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的IPC段内可能全是其他公司资产扫描价值不大且风险高。3.3 第三步Web应用指纹与技术栈识别了解目标用什么技术开发就能推断其可能存在的漏洞。例如ThinkPHP框架有特定的漏洞历史Vue.js构建的前端可能暴露API接口。1. 自动化工具体验Wappalyzer (浏览器插件)访问页面即可自动识别最方便。WhatWeb (命令行工具)可批量扫描识别精度高。whatweb -a 3 https://example.comhttpx 的-tech-detect参数如前所述在验证子域名存活时即可完成识别。2. 手工观察点自动化工具并非万能需要手工辅助确认HTTP响应头查看Server,X-Powered-By,Set-Cookie如JSESSIONID暗示Java等字段。页面源代码查看引用的JavaScript/CSS文件路径如包含/wp-content/大概率是WordPress。查看meta标签中的生成器信息如meta namegenerator contentWordPress 5.7。注意注释中的框架、版本信息。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的监控功能、或自建TheHiveCortex可以提供资产监控和告警。关注动态关注目标公司的新闻、招聘信息、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观察其参数?id1nameadmin。尝试对参数进行模糊测试fuzzing可能发现未授权的API接口或信息泄露。信息收集是SRC漏洞挖掘的基石也是一项需要耐心、细心和创造力的工作。它没有绝对的终点其深度和广度直接决定了你后续测试的效率和成果。对于新手而言不必追求一次就做到完美。先从一个小目标开始熟练运用一两个工具理解其原理然后逐步扩展你的技能栈和知识面。记住最宝贵的工具是你的大脑和好奇心。当你养成了对数字资产“顺藤摸瓜”的思维习惯你会发现漏洞就在那里等着被有心人发现。