SRC漏洞挖掘实战指南:从零开始掌握白帽子核心技能
1. 项目概述从零开始的SRC漏洞挖掘实战指南如果你对网络安全感兴趣或者经常听到“白帽子”、“漏洞赏金”这些听起来很酷的词但总觉得它们离自己很远那这篇文章就是为你准备的。SRC也就是安全应急响应中心早已不是顶尖黑客的专属竞技场。它更像是一个公开的、有规则的安全测试平台各大互联网公司设立它就是为了鼓励像你我这样的安全爱好者去发现他们产品里的安全隐患并给予相应的奖励和认可。很多人觉得入门门槛高需要精通各种底层协议和汇编语言其实不然。今天的SRC漏洞挖掘已经形成了一套从信息收集到漏洞验证的成熟方法论即使是零基础只要方向正确、思路清晰完全有可能挖到自己的第一个漏洞。我接触SRC有几年了从最初对着一个网站界面不知所措到后来能形成自己的挖掘流中间踩过无数的坑也总结了不少“笨办法”和“小技巧”。这篇文章的目的就是把我这套“非常详细”的实战经验掰开了、揉碎了讲给你听。我们不谈那些空中楼阁的理论就聚焦于一个新手如何从打开一个SRC平台开始一步步走到提交第一个有效漏洞报告。你会发现核心不在于你会多少种高深的攻击技术而在于你是否拥有系统性的思考方式和耐心细致的观察力。无论是常见的XSS跨站脚本攻击、越权访问还是逻辑漏洞其挖掘的本质都是对程序“预期行为”和“实际行为”之间差异的探寻。2. 核心思路与前期准备心态、目标与工具库在真正动手之前比技术更重要的是心态和目标的建立。很多新手折戟沉沙不是因为技术不行而是因为期望值管理失败。2.1 心态建设从“挖洞”到“协作测试”的思维转变首先必须明确一点SRC漏洞挖掘不是“黑”网站而是一种得到厂商授权的、协作式的安全测试。你的角色是帮助厂商提升安全性的“白帽子”而非攻击者。这个心态决定了你的一切行为边界。切忌“破坏性测试”绝对不要使用扫描器进行高频、暴力扫描这会被视为攻击行为可能导致IP被封禁甚至承担法律责任。你的每一个测试动作都应该是可控的、可解释的。比如测试一个SQL注入点目的是验证漏洞是否存在而不是尝试拖取整个数据库。在测试时要像医生做检查一样用最小的“剂量”去验证问题而不要像爆破手一样试图摧毁目标。接受“空手而归”是常态你可能连续测试几十个小时一无所获。这太正常了。大厂商的SRC经过无数人挖掘表面的、简单的漏洞早已被挖尽。你的价值在于发现那些需要组合拳、需要深入理解业务逻辑的深层问题。把每一次测试都当成一次学习机会即使没找到漏洞你也熟悉了一个新的业务系统这本身就是积累。细致与耐心是第一生产力漏洞挖掘尤其是逻辑漏洞比拼的往往是细心。一个参数多传一次、少传一次一个状态值从“0”改成“1”一个请求包的顺序调换一下都可能触发完全不同的程序逻辑。你需要像侦探一样不放过任何一点蛛丝马迹。2.2 目标选择如何挑选你的第一个“战场”对于新手而言选对目标事半功倍。不建议一上来就挑战头部大厂如阿里、腾讯的SRC虽然奖金高但防护严密高手云集容易打击信心。从“教育SRC”和中小厂商入手近年来兴起的“教育SRC”针对高校、教育类系统的SRC是非常好的起点。这些系统业务相对单纯但安全投入可能不如商业公司存在漏洞的概率较高且社区氛围通常更友好对新手报告的处理和反馈也更耐心。一些新兴的互联网公司或垂直领域的SRC也是不错的选择它们可能正处于安全建设初期有大量待发现的“低垂果实”。专注于“子域名”和“新业务”不要总盯着主域名。一个大型互联网公司有成千上万的子域名很多是历史遗留系统、测试环境、或者边缘业务这些地方往往是安全防护的薄弱环节。同样关注厂商新上线的功能或产品在刚上线时安全测试可能不充分是你切入的好时机。明确漏洞类型优先级对于新手建议按以下顺序尝试信息泄露如源码泄露.git、.svn目录、配置文件泄露、错误信息回显过多等。这类漏洞寻找技术门槛低主要靠目录扫描和细心观察。跨站脚本XSS尤其是反射型XSS通过在输入框、URL参数中尝试插入简单payload观察是否被浏览器执行。越权访问包括水平越权访问同权限其他用户的数据和垂直越权低权限用户执行高权限操作。这是逻辑漏洞的“大户”通过修改用户ID、订单ID等参数进行测试。业务逻辑漏洞如短信轰炸、验证码绕过、订单金额篡改等。这需要你理解业务流程思考“正常的流程是什么我能否在不走正常流程的情况下达到目的”2.3 工具准备打造你的“瑞士军刀”工欲善其事必先利其器。但记住工具是辅助你的大脑才是核心。以下是一个基础且高效的工具清单绝大多数都是免费或开源的。信息收集套件子域名枚举subfinder,amass,OneForAll。获取目标尽可能多的入口点。目录/文件扫描dirsearch,ffuf,gobuster。用于发现隐藏的目录、备份文件、配置文件等。端口扫描与服务识别nmap。了解目标开放了哪些服务Web、数据库、中间件等。网络空间测绘引擎fofa,shodan,zoomeye。通过特征语法如title“后台管理”快速定位资产。漏洞测试与抓包代理Burp Suite Community社区版这是核心中的核心。它集成了代理、爬虫、重放、入侵Intruder等功能。你的大部分测试都会在Burp中完成。学习使用Burp是SRC入门的第一步。浏览器开发者工具F12用于前端分析、调试JavaScript、查看网络请求。浏览器插件如Wappalyzer识别网站技术栈、Hack-Tools集合常用payload、EditThisCookie方便地修改Cookie。Payload与字典SecLists一个巨大的安全测试字典集合包含目录、参数、用户名、密码、fuzz payload等。这是你的弹药库。自定义字典根据目标业务特点如产品名、城市名、特定术语生成自定义字典往往比通用字典更有效。协作与记录笔记软件如Obsidian,Notion或Typora。详细记录每一个测试目标的资产、测试过程、发现的疑点、测试过的payload。好记性不如烂笔头系统的笔记是复现和深化思路的关键。截图/录屏工具用于保存漏洞证明。ShareX是个不错的选择。注意所有扫描和测试动作务必在目标SRC公开的测试范围内进行并控制请求频率避免对目标业务造成影响。使用代理池或切换网络环境进行测试时更要谨慎。3. 系统性漏洞挖掘流程拆解有了心态、目标和工具我们就可以进入实战环节。一个高效的挖掘流程应该是系统性的而不是东一榔头西一棒子。3.1 第一阶段深度信息收集Reconnaissance信息收集的深度和广度直接决定了你发现漏洞的概率。这一步要像侦探调查案发现场一样不放过任何细节。3.1.1 资产发现与测绘这不仅仅是跑一下子域名工具就完了。你需要构建一个立体的资产视图。主域名与子域名使用工具获取子域名列表后手动访问每一个观察其功能。一个不起眼的dev.xxx.com或test.xxx.com可能就是突破口。关联资产通过WHOIS信息、SSL证书、DNS历史记录等寻找与目标公司关联的其他域名或IP段。公司可能收购了其他业务这些新并入的资产安全水平可能参差不齐。端口与服务对重要的IP进行非全端口扫描重点识别80/443Web、8080/8443Web管理、21/22FTP/SSH、3306MySQL、6379Redis等。一个对外开放的Redis未授权访问可能就是严重漏洞。历史漏洞与公开信息在GitHub、网盘搜索中搜索目标公司的代码仓库、员工上传的配置文件、API密钥等。在漏洞平台如乌云镜像搜索目标历史漏洞了解其薄弱环节和修复风格。3.1.2 技术栈与应用架构识别了解目标用什么技术搭建才能有的放矢。前端是纯静态页面还是Vue/React等单页面应用注意在Vue等框架中图片路径img src的动态绑定可能会涉及前端令牌token的处理逻辑这里有时会存在路径遍历或认证绕过问题虽然与你搜索的“vue 中img src路径 如何加token”这个开发问题角度不同但却是测试人员需要关注的输入点。后端服务器是Nginx还是Apache语言是Java、PHP、Python还是Node.js框架是Spring Boot、ThinkPHP还是Django不同的技术栈有各自常见的漏洞模式如PHP的文件包含Java的反序列化。中间件与数据库使用了什么版本的Redis、Elasticsearch、MQ这些组件是否有公开的未授权或RCE漏洞第三方组件网站引用了哪些第三方JS库、字体库、统计服务这些第三方服务如果被劫持供应链攻击也会影响目标安全。3.1.3 业务逻辑梳理这是挖掘逻辑漏洞的基础。你需要像普通用户一样把核心业务流程走一遍。注册/登录/找回密码流程每一步的请求和响应是什么验证码如何生成和校验短信/邮件发送频率是否有限制核心业务功能如果是电商就走一遍商品浏览、加入购物车、下单、支付的流程。注意每一个环节产生的数据订单号、用户ID、优惠券码和状态待支付、已发货。权限体系普通用户、VIP用户、管理员各自有哪些功能功能之间的边界在哪里数据流用户输入的数据在哪里被接收在哪里被处理最终存储在哪里又在哪里被展示将以上所有信息整理到你的笔记中形成一份针对该目标的“作战地图”。3.2 第二阶段漏洞探测与Fuzz测试拿着“作战地图”开始有针对性的测试。3.2.1 自动化与手动的结合完全依赖自动化扫描器如AWVS、Nessus在SRC挖掘中效率很低且易被屏蔽。正确做法是以手动测试为主自动化工具为辅。自动化用于初筛用目录扫描工具扫出隐藏路径用Burp的被动扫描功能发现一些明显的低危问题如缺少安全头。手动进行深度测试对每一个功能点、每一个参数进行手动测试。这是发现逻辑漏洞的唯一途径。3.2.2 请求与参数Fuzz这是最核心的测试动作。将Burp Suite设置为浏览器代理浏览网站的所有功能让Burp记录下所有HTTP请求。寻找所有输入点URL参数、POST表单、Cookie、HTTP头如X-Forwarded-For、User-Agent、JSON/XML请求体中的每一个字段。对每个输入点进行FuzzSQL注入尝试、、1 and 11、1 and sleep(5)--等payload观察响应时间、错误信息、页面内容的变化。XSS尝试scriptalert(1)/script、img srcx onerroralert(1)、onmouseoveralert(1)等。注意观察payload是否被原样输出、是否被过滤、过滤了哪些字符。命令/代码注入在可能存在系统调用或eval函数的地方如IP参数、文件名参数尝试| ls、;id、$(whoami)或PHP的phpinfo()。路径遍历/文件包含尝试../../../../etc/passwd、file:///etc/passwd、php://filter/convert.base64-encode/resourceindex.php。SSRF服务端请求伪造在请求URL、头像上传地址等参数中尝试http://169.254.169.254/云元数据地址或http://你的服务器看服务器是否会向该地址发起请求。逻辑测试这是重点。修改数字ID用户ID、订单ID、状态值、数量、价格。尝试删除或添加参数。重复提交同一个请求重放攻击。打乱请求顺序。3.2.3 业务逻辑漏洞专项测试基于第一阶段梳理的业务流程设计测试用例验证码绕过提交请求时删除验证码参数、使用空验证码、使用旧验证码、或者直接暴力穷举如果验证码是4位数字。短信/邮箱轰炸在发送验证码的接口不更换手机号/邮箱快速重复请求。或者遍历一个号码段进行请求。越权测试水平越权用户A登录后获取到访问自己订单的URL如/order/view?id1001。尝试将id参数改为1002假设是用户B的订单看能否访问。垂直越权普通用户登录后寻找仅管理员可见的功能或API尝试直接访问。或者通过修改请求参数模拟管理员操作。支付逻辑漏洞在支付环节尝试修改前端传过来的订单金额为负数或0.01元尝试重复使用同一张优惠券尝试在支付成功回调时篡改状态。并发竞争条件在领取优惠券、秒杀商品时同时发起数十个相同的请求看是否会超发。3.3 第三阶段漏洞验证与报告撰写发现一个可疑点后不要急于报告必须进行严谨的验证。3.3.1 漏洞确认与影响面评估可复现性清除浏览器缓存、Cookie换一个浏览器或环境按照步骤重新操作漏洞是否稳定复现危害证明不要只说“这里可能存在XSS”。要证明危害。对于XSS弹窗alert(document.domain)证明可以执行代码对于越权截图展示能访问他人数据对于信息泄露展示读取到的敏感文件内容。影响范围这个漏洞影响所有用户还是特定用户是影响一个页面还是整个系统能否进一步利用如XSS打Cookie进而接管账户3.3.2 编写高质量漏洞报告一份清晰、专业的报告能极大提升审核通过率和厂商好感度。报告应包含漏洞标题简明扼要如“【XX系统】订单ID篡改导致水平越权访问他人订单信息”。漏洞等级参考SRC平台的标准高危、中危、低危、信息客观自评。漏洞详情目标URL完整的漏洞触发地址。测试账号你使用的测试账号信息如手机号/邮箱可在报告中打码部分字符。复现步骤用1、2、3…列出详细操作步骤像教程一样让审核人员能跟着做一遍。这是报告的核心。请求与响应附上Burp抓取的原始HTTP请求和响应包可去除敏感Cookie。漏洞证明截图或录屏关键信息用红框标出。漏洞原理与修复建议简要分析漏洞产生的原因如“服务端未对订单ID进行所属权校验”并给出修复建议如“在查询订单前校验当前登录用户ID与订单所属用户ID是否匹配”。时间线注明发现时间。实操心得在复现步骤中使用“第一步登录账号Atestexample.com”、“第二步访问页面...”这样的描述比单纯贴图更清晰。修复建议要具体、可操作这体现了你的专业性厂商也更愿意采纳。4. 核心漏洞类型实战详解与技巧掌握了流程我们再深入几种最常见漏洞的实战挖掘技巧。4.1 XSS跨站脚本漏洞挖掘进阶反射型XSS相对好找但存储型DOM型XSS需要更多技巧。寻找富文本编辑器论坛发帖、评论、个人简介等处是存储型XSS的高发区。测试时先输入一些普通文本看提交后是如何渲染的。如果支持HTML再尝试插入简单的标签。注意很多编辑器会过滤script但可能放过img、svg、iframe等标签的事件属性。关注“输出点”你的输入在哪里被展示不仅在网页正文还有可能在HTTP响应头、JS代码、标签属性里。例如你的输入被原样放入document.cookie或者eval()函数中就可能造成XSS。利用编码与混淆如果直接输入被过滤尝试HTML实体编码、JS Unicode编码或者利用解析差异。例如在innerHTML中img srcx onerroralert(1)可能被过滤但img srcxonerroralert(1)使用反引号有时能绕过。DOM型XSS的追踪这需要分析前端JS代码。在开发者工具的Sources面板搜索location.hash、document.URL、innerHTML、eval、setTimeout等关键词看是否有用户可控的数据未经净化就传入了危险函数。4.2 越权访问漏洞的深度挖掘越权是逻辑漏洞的典型关键在于理解程序的权限校验逻辑在哪里失效。参数遍历不仅仅是数字ID还包括UUID、哈希值等。使用Burp Intruder的“狙击手”模式对目标参数进行递增或字典遍历。状态码与响应差异对比越权请求成功和失败时的响应。成功时可能返回200状态码和完整数据失败时可能是403、404或者返回一个空数组、错误信息。有时失败响应体里会泄露一些信息。多步骤操作中的越权有些操作需要多个请求完成。检查在后续的请求中是否还需要校验权限。可能第一步校验了第二步就信任了第一步的结果。“平行越权”与“交叉越权”不仅测试同类型对象A用户订单 vs B用户订单还要测试不同类型对象之间的权限用户能否访问管理员接口普通商品能否用VIP价格购买。4.3 信息泄露漏洞的全面排查这类漏洞技术含量不高但贵在全面和细心。备份文件与源码泄露使用字典扫描.git、.svn、.DS_Store、index.php.bak、wwwroot.zip、tar.gz等。发现.git目录后可以使用git-dumper等工具尝试恢复完整源码。配置信息泄露扫描/admin、/phpinfo.php、/web.config、/.env、/config.json等。phpinfo页面会泄露大量服务器信息。错误信息泄露通过触发错误如非法参数、超长输入让应用返回详细的报错信息其中可能包含路径、SQL语句片段、数据库类型等。接口信息泄露通过JS文件app.js、chunk.js、前端源码寻找未鉴权的API接口。有时移动端APP的API接口也会对Web暴露。搜索引擎语法在fofa、shodan中使用title“index of /”查找目录列出漏洞使用body“数据库密码”等关键词查找敏感信息。5. 常见问题、排查技巧与避坑指南这条路充满荆棘以下是新手最容易遇到的问题和我的解决经验。5.1 为什么我什么都找不到问题按照教程测试了一遍毫无收获。排查与解决目标太“硬”换一个目标比如从教育SRC或新上线的小程序开始。测试不够深入你只是测试了“有没有”没有测试“如果…会怎样”。尝试组合参数测试尝试在正常流程中插入异常步骤。思维定式不要只盯着登录、注册、支付。去测试“忘记密码”的链接有效期、测试“头像上传”的文件类型和路径、测试“消息通知”的未读数量篡改。边缘功能常被遗忘。缺乏耐心挖洞可能连续几天没结果然后在一个下午发现好几个。保持平常心持续学习。5.2 漏洞无法稳定复现怎么办问题有时候能成功有时候失败。排查与解决清理环境彻底清理浏览器缓存、Cookie、LocalStorage。使用无痕模式测试。记录所有变量记录下触发漏洞时完整的请求序列、时间戳、服务器返回的Token或Session。可能是某个中间状态导致的。并发问题如果是竞争条件漏洞需要精确控制请求时序。使用Burp的Turbo Intruder插件或编写Python脚本进行高并发测试。环境差异确认测试环境如测试账号的权限、账户状态是否完全一致。5.3 提交的报告被忽略或判定为“无风险”、“重复”问题辛苦挖到的洞厂商不认可。排查与解决报告质量差检查你的报告是否步骤清晰、证据确凿、语言通顺。参照优秀报告模板重写。漏洞危害描述不清说清楚这个漏洞能做什么。不能只说“这里有个反射型XSS”要说“攻击者可构造恶意链接诱骗管理员点击从而窃取管理员Cookie接管后台系统”。已知或已修复问题在测试前先看看该SRC已公开的漏洞报告避免重复劳动。如果被判定为“已知”可以尝试寻找该漏洞的变种或更深层次的利用方式。厂商标准不同有些厂商对Self-XSS需要用户自己输入payload攻击自己、无敏感操作的CSRF等漏洞评级很低或不予接收。提交前最好阅读该SRC的漏洞评级标准。5.4 我的IP被屏蔽了怎么办问题测试过程中突然无法访问目标网站。排查与解决立即停止测试这是最重要的。你的测试行为可能触发了WAF或风控规则。降低测试频率在Burp中设置请求间隔Throttle模拟真人操作速度避免爆破式扫描。使用代理或切换网络如果需要继续测试可以更换IP地址但务必更加谨慎。检查测试Payload是否使用了破坏性过强的Payload如sleep(20)是否对同一个端点进行了海量请求5.5 如何提升自己的挖掘能力持续学习关注安全社区如先知、Seebug、安全客阅读高质量的漏洞分析文章理解漏洞原理而不仅仅是利用工具。代码审计当你对某种漏洞如Java反序列化、PHP文件包含感兴趣时去找一个存在该漏洞的开源项目源码自己动手调试分析理解漏洞从产生到利用的完整链条。这能极大提升你的“内力”。参与众测项目在合规的众测平台上选择适合自己水平的项目进行实战。与其他白帽子交流学习他们的思路和技巧。构建知识体系将学到的漏洞案例、测试技巧、工具用法分门别类地记录到你的笔记中形成自己的“漏洞库”和“武器库”。挖洞的过程是一个不断与自己较劲、与系统博弈的过程。它考验技术更考验心态、细心和创造力。从第一个信息泄露漏洞到第一个有影响力的逻辑漏洞每一步成长都清晰可见。记住每一个伟大的白帽子都是从第一个“Hello World”级别的漏洞开始的。现在打开一个你感兴趣的SRC平台从信息收集开始迈出你的第一步吧。