1. 项目概述从“挖洞”到“修墙”的思维跃迁“漏洞挖掘”这个词听起来有点黑客范儿感觉离我们很远。但说白了它就像给一栋大楼做全面的“体检”找出那些设计图纸上没画出来、施工时不小心留下的“暗门”和“裂缝”。无论是你每天在用的手机App、刷的网站还是企业里跑着核心业务的服务器背后都是由一行行代码构建起来的数字世界。只要有代码就可能存在逻辑上的疏忽、配置上的失误这些就是“漏洞”。而漏洞挖掘就是系统性地、有方法地去发现这些安全隐患的过程。我干了十多年安全从最初跟着师傅手动测试到后来参与自动化扫描平台的建设再到现在带团队做深度攻防研究最大的感触是漏洞挖掘从来不是玄学而是一门有章可循的工程艺术。它不需要你是天才但需要你像侦探一样细心像工程师一样严谨像棋手一样有策略。网上很多资料要么太浅讲几个工具用法就结束了要么太散东一榔头西一棒子不成体系。新手看了要么觉得“就这”要么一头雾水不知从何下手。这篇内容我想彻底打破这种局面。我的目标不是让你成为工具的使用者而是成为漏洞狩猎思路的构建者。我会从一个零基础小白的视角出发带你走过我当年踩过的所有坑把那些在真实SRC安全应急响应中心项目、众测和内部红蓝对抗中验证过的、最高效的典型场景和思考路径掰开了、揉碎了讲给你听。你会发现核心不在于你会用多少炫酷的工具而在于你是否建立了一套从信息收集到漏洞验证的完整思维框架。收藏这一篇意味着你拿到了一张从“看热闹”到“懂门道”的导航图。2. 漏洞挖掘的核心思维框架猎人如何选择他的猎场在扛起“猎枪”扫描器之前聪明的猎人会先花大量时间研究地形、追踪足迹、分析猎物习性。漏洞挖掘同理盲目扫射不仅效率低下还容易触发警报被WAF封IP。核心思维可以概括为四个字面、线、点、深。2.1 “面”的侦察信息收集是地基中的地基信息收集的广度直接决定了你攻击面的宽度。很多人一上来就怼着主域名扫端口这是最原始的“蛮力”阶段。真正的信息收集是一个立体化的过程。1. 资产发现画出目标的全景地图子域名挖掘这是扩展攻击面的第一步。除了经典的subfinder、amass、OneForAll更要关注那些容易被忽略的入口证书透明度日志CT Log像crt.sh这样的网站能通过SSL证书信息发现大量子域名甚至包括内部测试域名这些往往是安全防护的薄弱环节。DNS历史记录使用SecurityTrails、ViewDNS等工具查看域名的DNS解析历史可能会找到已经下线但未清理的旧子域名如dev.xxx.com,test.xxx.com,staging.xxx.com这些通常是漏洞高发区。自动化整合我会习惯性地写一个简单的Shell脚本把多个工具的结果去重合并形成一份初始资产清单。端口与服务探测拿到域名/IP列表后用masscan进行全端口快速扫描再用nmap对开放端口进行精细化服务和版本识别。这里的关键不是扫得多快而是识别出非常规端口上的常见服务。比如一个Web服务跑在8080、8443端口很常见但如果跑在28080、5000等端口可能意味着这是某个开发人员临时搭建的测试环境安全配置往往不严格。关联资产挖掘Whois信息与备案通过Whois查询获取注册邮箱、电话、公司名。这些信息可以用来在GitHub、网盘等地方搜索可能泄露内部代码、配置文件。APP与小程序目标公司是否有移动端APP或微信小程序使用AppInfoScanner等工具对APP包进行反编译分析网络请求接口、硬编码的密钥、SDK配置这些接口很可能与Web后台相通且防护可能不同。第三方服务目标是否使用了云存储如AWS S3、阿里云OSS、云函数、CDN、邮件服务SendGrid、客服系统Intercom这些第三方服务的配置错误如存储桶公开可读写导致的漏洞屡见不鲜。实操心得信息收集不是一次性的工作而应贯穿整个项目周期。我会建立一个不断更新的资产数据库任何新发现的域名、IP、目录都及时补充进去。工具是辅助思维是关键时刻问自己“还有什么地方是我没看到的”2.2 “线”的梳理理解业务流顺藤摸瓜有了“面”接下来要理清“线”——业务的逻辑流程。这是发现逻辑漏洞的关键。不同类型的业务攻击主线截然不同。1. 电商/交易型业务核心关注点资金流和商品流。入口注册、登录、商品浏览、加入购物车、下单、支付、订单管理、售后、优惠券/积分系统。典型思路平行越权修改订单ID参数查看他人订单详情如/order/view?id12345尝试改为12456。支付逻辑漏洞尝试修改支付金额前端传参、重复利用支付凭证、利用负数或极大值导致金额溢出现已较少见但逻辑类似。优惠券逻辑无限领取优惠券领取次数未限制、优惠券金额篡改、优惠券适用范围绕过如限品类券用于全品类。库存与抢购并发请求下超卖、预留库存被恶意占用、抢购接口未做频率限制或验证。2. 社交/内容型业务核心关注点用户关系链和内容权限。入口用户资料、发帖、评论、私信、关注/粉丝列表、内容分享、权限设置如朋友圈可见范围。典型思路垂直越权普通用户能否执行管理员操作如删除他人帖子、置顶帖子、修改网站配置通过寻找隐藏的管理接口。信息泄露通过枚举用户ID/user/profile?id10001遍历用户敏感信息私信内容未做接收方校验可窃听他人对话“仅好友可见”的内容能否通过接口直接访问交互类漏洞功能能否触发XSS上传头像或内容图片处是否存在文件上传漏洞分享功能能否用于生成恶意链接结合钓鱼3. 后台管理系统核心关注点未授权访问和功能滥用。入口这本身就是一个寻找入口的过程。常见后台路径如/admin,/manage,/wp-admin,/backend。也可能藏在子域名admin.xxx.com或非常规端口。典型思路弱口令与爆破这是最直接有效的。但不要只盯着admin/admin123。要收集目标相关信息生成专属字典如公司名年份、产品名123。默认路径与备份文件扫描robots.txt、www.zip、.git目录、.svn目录、phpinfo.php、web.config.bak等这些可能泄露源码、配置信息甚至直接提供后台入口。权限绕过有的后台登录后通过修改Cookie中的角色标识如roleuser改为roleadmin或直接访问需要高权限的API接口/api/admin/deleteUser可能绕过前端菜单权限控制。2.3 “点”的突破常见漏洞类型的狩猎手册理清了业务线我们就可以针对线上的具体“点”功能点、参数点进行深度测试了。以下是几种最常见漏洞的实战挖掘思路。2.3.1 SQL注入老当益壮的内功考验虽然现在普遍使用ORM框架和预编译但SQL注入远未绝迹尤其在老旧系统、复杂查询、排序/分页参数、报表导出等功能中。挖掘思路寻找所有用户可控的输入点URL参数GET、表单数据POST、HTTP头部Cookie, User-Agent, X-Forwarded-For、文件上传的文件名等。判断注入类型数字型参数本是数字如id1。尝试id1 and 11/id1 and 12观察页面差异。字符型参数用引号包裹如nameadmin。尝试nameadmin and 11/nameadmin and 12。搜索型常用于搜索框如keywordtest。尝试keywordtest% and 11 and %。使用工具辅助但更要手工验证sqlmap是神器但直接怼上去容易被封。我通常先用简单Payload探测如单引号、and 11观察是否有报错信息错误回显型注入、页面响应时间是否明显变长时间盲注、页面内容是否有逻辑变化布尔盲注。根据反馈再构造更精准的Payload或用sqlmap的--level和--risk参数进行深度测试。关注非常规注入点JSON格式参数{id: 1}尝试修改为{id: 1 and 11}或{id: {$ne: 1}}如果后端是NoSQL如MongoDB。XML数据如果应用处理XML如SOAP API可尝试XXEXML外部实体注入这有时能导致更严重的内网探测或文件读取。排序参数ordercreate_time尝试order(case when (11) then create_time else update_time end)。踩坑记录在一次测试中一个查询接口对所有常见注入字符,,#,--都做了过滤看似无懈可击。但我发现其order by参数是直接拼接的。最终通过orderupdate_time, sleep(5)的方式成功触发了时间盲注。永远不要假设开发者的过滤是完美的多角度尝试。2.3.2 跨站脚本攻击前端交互的“魔术师”XSS的核心在于“前端代码注入”。随着前端框架React, Vue的普及和浏览器安全机制的增强传统的反射型XSS变少了但存储型和基于DOM的XSS依然活跃。挖掘思路寻找输出点任何用户输入最终被展示在页面上的地方。包括个人资料昵称、签名、评论、留言、文章内容、站内信、聊天内容、文件上传后的文件名、搜索关键词回显、错误信息提示。测试输入过滤与输出编码先投石问路输入一段无害但独特的字符串如\123test然后查看页面源代码看它被如何处置。是被原样输出被HTML编码了被部分过滤了构造试探Payload如果尖括号被过滤尝试onmouseoveralert(1)这类事件处理器属性。如果属性值被引号包裹尝试先闭合引号\ onmouseover\alert(1)。尝试 Unicode、HTML实体等编码方式绕过\u003cscript\u003e,script。区分XSS类型反射型Payload在URL中需要诱骗用户点击。测试时关注所有带参数的页面。存储型Payload被保存到服务器数据库所有访问特定页面的用户都会中招。危害最大需重点测试所有可持久化用户输入的功能。DOM型漏洞发生在浏览器端的JS代码中不经过服务器。需要用浏览器开发者工具跟踪用户输入是如何被document.write、innerHTML、eval、setTimeout等危险函数处理的。利用框架特性在某些框架中如{{7*7}}可能在服务端模板渲染时被计算为49。这虽然不一定是XSS但提示了服务端模板注入的可能是更严重的漏洞。2.3.3 跨站请求伪造利用用户的信任CSRF攻击的是已登录用户的身份。它的前提是用户浏览器会自动携带Cookie等认证信息发起请求。挖掘思路寻找敏感操作点修改密码、修改邮箱、转账、发表内容、删除资源、授权第三方应用等。这些操作通常使用POST请求。检查防护机制是否有CSRF Token查看表单或请求参数中是否存在一个随机生成的、与会话绑定的Token值。如果没有或者Token可预测、可重复使用则存在风险。是否检查Referer头部有些应用会检查HTTP请求的Referer来源是否为本站。可以尝试移除、伪造或利用历史漏洞如本站点存在可设置302跳转的开放重定向漏洞来绕过。是否使用自定义头部一些API设计会使用X-Requested-With等自定义头部但这并非绝对安全CORS配置不当可能允许跨域携带。构造PoC创建一个简单的HTML页面里面包含一个自动提交的表单其action指向目标敏感接口并携带好必要的参数。用已登录目标网站的浏览器打开这个页面如果操作被执行了CSRF漏洞就存在了。关注JSON格式的CSRF如果接口接收JSON数据Content-Type: application/json传统的表单无法直接发起攻击。但可以通过构造一个页面用JavaScript的fetchAPI发起跨域请求。此时需要关注服务器的CORS配置是否过于宽松如Access-Control-Allow-Origin: *且允许携带凭证。2.3.4 文件上传漏洞通往服务器内部的“任意门”文件上传功能如果处理不当攻击者可能上传Webshell直接获取服务器控制权。挖掘思路绕过前端验证前端JS检查文件后缀名是基本操作直接抓包修改文件名即可绕过。绕过服务端验证这是主战场。黑名单绕过如果服务端禁止上传.php,.jsp等尝试.php5,.phtml,.phps,.jspx,.jspf或者利用操作系统特性如test.php.Windows下末尾的点会被去除、test.php%20、test.php::DATANTFS流。文件内容检测绕过如果服务端检测文件内容如图片头GIF89a可以尝试在正常图片末尾追加Webshell代码合成图片马或利用exiftool等工具将代码写入图片的EXIF信息中。解析漏洞利用这是威力巨大的方式。例如老旧版本的IIS6.0存在目录解析漏洞/upload/test.asp;.jpg会被当作asp执行和分号解析漏洞Apache在某些配置下如果文件名为test.php.jpg且启用了AddType相关配置可能被解析为phpNginx的配置错误可能导致test.jpg/.php被解析为php。条件竞争攻击有些系统会先允许文件上传到临时目录然后再进行安全检查不通过则删除。攻击者可以同时发起大量上传请求和访问请求在文件被删除前访问到它并执行。寻找二次渲染机会上传点本身防护严密但系统可能在其他地方如头像裁剪、图片压缩对已上传的文件进行二次处理这个处理过程可能存在命令注入或新的解析漏洞。2.4 “深”的拓展逻辑漏洞与业务深水区如果说SQL注入、XSS是“招式”那么逻辑漏洞就是“内功心法”。它完全依赖于对业务逻辑的深刻理解自动化工具几乎无能为力是体现挖掘者功力的地方。1. 权限绕过设计缺陷水平越权用户A能操作用户B的数据。关键在于ID是否可预测、可遍历以及服务端是否真的校验了“当前登录用户”与“数据所有者”的关联。垂直越权低权限用户能执行高权限操作。除了修改Cookie/Token中的角色字段更要关注是否有隐藏的管理接口未做权限校验URL路径中是否包含/admin/但实际通过普通用户权限可访问前端菜单隐藏了但后端API接口还开着2. 业务流程设计缺陷步骤绕过一个多步骤的操作如密码重置1.输入邮箱 - 2.验证码 - 3.设置新密码能否直接跳过第二步访问第三步的接口并设置密码状态篡改订单状态待支付、已支付、已发货是否由前端参数控制能否将“待支付”改为“已支付”优惠券的“已使用”状态能否被修改条件竞争除了文件上传在支付、抽奖、领取优惠券、库存扣减等场景也广泛存在。核心是“检查”与“执行”非原子操作。例如“检查余额是否充足”和“扣款”之间存在时间差并发请求可能造成超额支付或重复中奖。3. 接口参数滥用批量操作缺乏数量限制删除消息的接口DELETE /api/messages?id[]1id[]2...能否一次传入成千上万个ID导致数据库压力过大甚至拒绝服务参数污染同一个参数名出现多次如price10price0.01后端处理逻辑如何是取第一个、最后一个还是全部这可能导致逻辑错误。JSON/XML参数注入后端将客户端传来的JSON/XML数据直接反序列化为对象。如果反序列化过程不安全如Java的ObjectInputStream.readObjectPHP的unserialize可能造成远程代码执行。3. 实战流程一次完整的漏洞狩猎推演理论说再多不如看一次完整的推演。假设我们拿到一个目标redteam.demo一个虚构的演练目标。3.1 第一阶段广撒网信息捕捞子域名枚举使用subfinder -d redteam.demo结合证书透明度查询我们得到了www.redteam.demo(主站)api.redteam.demo(API接口)admin.redteam.demo(疑似后台访问返回403)dev.redteam.demo(开发环境返回“建设中”)test.redteam.demo(测试环境竟然可以直接访问)assets.redteam.demo(静态资源)端口扫描对主域名和发现的子域名IP进行扫描发现www.redteam.demo:80, 443(标准Web)api.redteam.demo:8080(Spring Boot Actuator 监控端口开放)dev.redteam.demo:22, 3306(开发环境开了SSH和MySQL危险)内网某IP6379(Redis未授权访问)目录与文件扫描对test.redteam.demo使用dirsearch发现/phpinfo.php访问后泄露了大量服务器配置信息包括绝对路径、数据库连接信息打码了密码、已安装的扩展等。GitHub信息收集搜索公司名“RedTeam”发现一个员工误传了配置文件config.properties到公开仓库里面包含了数据库明文密码和阿里云OSS的AccessKey。至此攻击面已极大扩展我们有了主站、API、后台地址、不安全的测试环境、可能未授权访问的Redis和MySQL甚至拿到了数据库密码和云服务密钥。这比只盯着主站扫描要高效得多。3.2 第二阶段抓重点逐个击破我们选择几个最有希望的点深入。突破口一测试环境test.redteam.demo访问发现是一个简单的CMS后台登录页。尝试弱口令admin/admin失败。查看/phpinfo.php泄露的路径尝试访问/admin/backup/20231010.sql成功下载到数据库备份文件。在备份文件中找到管理员表发现密码是MD5哈希。尝试用泄露的通用密码哈希如e10adc3949ba59abbe56e057f20f883e对应123456碰撞成功登录后台。后台存在文件上传功能用于上传文章图片仅在前端限制了图片后缀。抓包修改文件名为shell.php.jpg内容为?php eval($_POST[cmd]);?上传成功返回路径/uploads/shell.php.jpg。直接访问该路径返回404。怀疑有后缀检查。利用Nginx解析漏洞知识尝试访问/uploads/shell.php.jpg/.php成功解析执行使用蚁剑连接获取Webshell。突破口二API监控端点api.redteam.demo:8080/actuatorSpring Boot Actuator 如果配置不当会暴露很多敏感端点。访问/actuator/env直接泄露了应用的所有环境变量其中包括数据库密码与GitHub泄露的相同、邮箱SMTP密码、内网其他服务的地址和密钥。访问/actuator/heapdump可以下载内存堆转储文件。使用MAT或JVisualVM分析有可能从内存中找到敏感的会话信息、加密密钥等。访问/actuator/loggers可以动态修改日志级别。将com.redteam.demo.controller.AdminController的日志级别改为DEBUG然后触发相关操作可能将敏感信息打印到日志中。突破口三利用泄露的云服务密钥使用泄露的阿里云OSS AccessKey通过命令行工具ossutil配置。执行ossutil ls oss://redteam-bucket发现可以列出存储桶内所有文件。进一步尝试上传、下载、删除文件发现该存储桶策略为公共读写public-read-write。这意味着任何知道存储桶名的人都可以任意操作。在存储桶中发现大量用户上传的身份证照片、公司内部文档备份。这是一个严重的数据泄露漏洞。3.3 第三阶段权限提升与横向移动在获得test.redteam.demo的Webshell后我们以Web服务权限如www-data登录服务器。信息收集执行id,uname -a,cat /etc/passwd查看当前权限和系统用户。查找敏感文件在Web目录、用户家目录、/tmp、/var/backups等位置寻找配置文件、密码本、SSH私钥、数据库备份等。发现了/var/www/html/config.php含有主数据库密码。数据库连接用找到的密码连接MySQL发现拥有root权限。在数据库中找到了管理员用户的密码哈希与测试环境不同通过哈希传递或修改可能升级到主站后台权限。利用Redis未授权访问从服务器内网连接172.16.1.100:6379确认无需密码。利用Redis写SSH公钥或Webshell的技术尝试攻破该Redis服务器进而可能获得其所在服务器的权限。从开发环境到生产环境在dev.redteam.demo的服务器上发现~/.ssh/id_rsa私钥并且该密钥可以免密登录生产环境的某台跳板机。通过它实现了从测试环境到生产核心网络的横向移动。4. 工具链与自动化让猎人如虎添翼工欲善其事必先利其器。合理的工具链能极大提升效率。我的个人工作流如下1. 信息收集与资产测绘子域名subfinderamassOneForAll综合能力强。端口扫描masscan全网段快扫 nmap精细化识别用naabu也不错。目录/文件扫描dirsearch经典、ffuf速度极快可自定义字典、gobuster。指纹识别Wappalyzer浏览器插件快速、WhatWeb、EHole棱洞。综合平台ARLAsset Reconnaissance Lighthouse灯塔或xray的爬虫模式可以自动化完成很多信息收集任务。2. 漏洞扫描与初步探测主动扫描器xray、AWVS、Nessus。我的建议是永远不要完全依赖扫描器的报告。它们会产生大量误报和无关紧要的低危信息。要把它们当作“线索生成器”从中筛选出值得手工验证的点。被动扫描器Burp Suite的 Scanner 模块或xray的被动代理模式。配置好代理然后手动浏览网站所有功能让工具在后台静默分析流量往往能发现一些主动扫描触达不到的接口。3. 手工测试与漏洞利用代理与抓包Burp Suite Professional是绝对的主力。Repeater重放、Intruder爆破、Decoder编解码、Comparer对比四大模块每天必用。社区版功能受限但核心的代理和重放足够入门。浏览器插件Hack-Tools、FoxyProxy、Wappalyzer、EditThisCookie。Payload集合SecLists项目是必备的字典库。fuzzdb、PayloadsAllTheThings也是极好的参考。漏洞利用框架Metasploit、SQLMap专精。知道在何时、如何精准使用它们。4. 自动化与自研脚本这是区分普通测试者和资深猎人的关键。我会针对特定场景写一些小脚本子域名监控脚本定期跑一遍子域名枚举对比新增资产。特定漏洞的批量检测比如针对一批目标快速检测Spring Boot Actuator未授权。结果整理与报告生成脚本将散乱的漏洞信息URL、参数、Payload、截图自动整理成固定格式的Markdown或Word报告。核心心法工具是手臂的延伸思维才是大脑。不要被工具牵着鼻子走。最强大的“工具”是你对网络协议、操作系统、编程语言和业务逻辑的理解。5. 防御视角与报告撰写从攻击者到建设者的转身挖到漏洞不是终点如何清晰地描述它、证明其危害、并帮助开发者修复才是价值的最终体现。1. 漏洞报告的核心要素一份好的漏洞报告能让开发者立刻明白问题所在。它必须包含标题简明扼要如“【高危】目标系统后台管理接口存在未授权访问可导致数据泄露”。漏洞等级参考通用标准如CVSS或SRC平台标准客观评定。受影响URL精确到存在漏洞的接口地址。请求与响应提供完整的HTTP请求包和响应包可用Burp的Copy as curl command或原始请求格式。关键参数要高亮。重现步骤像食谱一样一步一步写清楚如何复现这个漏洞。1. 打开浏览器... 2. 访问... 3. 输入... 4. 点击... 5. 观察到...漏洞原理简要说明为什么这是个漏洞是缺少了权限校验还是过滤不严潜在危害这个漏洞最坏能导致什么后果数据泄露、用户资金损失、服务器被控制修复建议给出具体、可操作的修复方案。不要说“加强过滤”而要说“建议在服务端对orderId参数进行校验确保其对应的订单属于当前登录用户userId”。2. 站在防御者角度思考在挖掘过程中多问自己“如果我是开发者我为什么会犯这个错我该如何防止”输入验证是否在所有可信边界前端、后端接口、数据库查询都进行了严格的校验和过滤权限校验每个操作前是否都明确检查了“当前用户是否有权执行此操作于此资源”默认安全是否默认拒绝了所有未明确允许的操作最小权限原则是否贯彻错误处理是否返回了过于详细的错误信息给用户依赖组件使用的第三方库、框架、中间件是否保持了最新版本没有已知高危漏洞这种思维不仅能帮你找到更多深层次的逻辑漏洞也能让你在报告漏洞时提出的建议更接地气、更有效。漏洞挖掘的世界没有银弹也没有终点。它是一场攻击者与防御者之间永不停歇的智力博弈。今天分享的这些场景和思路是我过去多年经验的凝结希望能为你点亮一盏灯让你少走些弯路。真正的精通源于在无数个真实目标上的反复练习、总结和思考。记住保持好奇心保持耐心保持对细节的偏执你会在狩猎的道路上发现属于自己的独特风景。最后永远将技术用于正当的授权测试和安全研究这是所有安全从业者必须恪守的底线。
从信息收集到漏洞验证:构建系统化漏洞挖掘思维框架
发布时间:2026/7/4 14:16:47
1. 项目概述从“挖洞”到“修墙”的思维跃迁“漏洞挖掘”这个词听起来有点黑客范儿感觉离我们很远。但说白了它就像给一栋大楼做全面的“体检”找出那些设计图纸上没画出来、施工时不小心留下的“暗门”和“裂缝”。无论是你每天在用的手机App、刷的网站还是企业里跑着核心业务的服务器背后都是由一行行代码构建起来的数字世界。只要有代码就可能存在逻辑上的疏忽、配置上的失误这些就是“漏洞”。而漏洞挖掘就是系统性地、有方法地去发现这些安全隐患的过程。我干了十多年安全从最初跟着师傅手动测试到后来参与自动化扫描平台的建设再到现在带团队做深度攻防研究最大的感触是漏洞挖掘从来不是玄学而是一门有章可循的工程艺术。它不需要你是天才但需要你像侦探一样细心像工程师一样严谨像棋手一样有策略。网上很多资料要么太浅讲几个工具用法就结束了要么太散东一榔头西一棒子不成体系。新手看了要么觉得“就这”要么一头雾水不知从何下手。这篇内容我想彻底打破这种局面。我的目标不是让你成为工具的使用者而是成为漏洞狩猎思路的构建者。我会从一个零基础小白的视角出发带你走过我当年踩过的所有坑把那些在真实SRC安全应急响应中心项目、众测和内部红蓝对抗中验证过的、最高效的典型场景和思考路径掰开了、揉碎了讲给你听。你会发现核心不在于你会用多少炫酷的工具而在于你是否建立了一套从信息收集到漏洞验证的完整思维框架。收藏这一篇意味着你拿到了一张从“看热闹”到“懂门道”的导航图。2. 漏洞挖掘的核心思维框架猎人如何选择他的猎场在扛起“猎枪”扫描器之前聪明的猎人会先花大量时间研究地形、追踪足迹、分析猎物习性。漏洞挖掘同理盲目扫射不仅效率低下还容易触发警报被WAF封IP。核心思维可以概括为四个字面、线、点、深。2.1 “面”的侦察信息收集是地基中的地基信息收集的广度直接决定了你攻击面的宽度。很多人一上来就怼着主域名扫端口这是最原始的“蛮力”阶段。真正的信息收集是一个立体化的过程。1. 资产发现画出目标的全景地图子域名挖掘这是扩展攻击面的第一步。除了经典的subfinder、amass、OneForAll更要关注那些容易被忽略的入口证书透明度日志CT Log像crt.sh这样的网站能通过SSL证书信息发现大量子域名甚至包括内部测试域名这些往往是安全防护的薄弱环节。DNS历史记录使用SecurityTrails、ViewDNS等工具查看域名的DNS解析历史可能会找到已经下线但未清理的旧子域名如dev.xxx.com,test.xxx.com,staging.xxx.com这些通常是漏洞高发区。自动化整合我会习惯性地写一个简单的Shell脚本把多个工具的结果去重合并形成一份初始资产清单。端口与服务探测拿到域名/IP列表后用masscan进行全端口快速扫描再用nmap对开放端口进行精细化服务和版本识别。这里的关键不是扫得多快而是识别出非常规端口上的常见服务。比如一个Web服务跑在8080、8443端口很常见但如果跑在28080、5000等端口可能意味着这是某个开发人员临时搭建的测试环境安全配置往往不严格。关联资产挖掘Whois信息与备案通过Whois查询获取注册邮箱、电话、公司名。这些信息可以用来在GitHub、网盘等地方搜索可能泄露内部代码、配置文件。APP与小程序目标公司是否有移动端APP或微信小程序使用AppInfoScanner等工具对APP包进行反编译分析网络请求接口、硬编码的密钥、SDK配置这些接口很可能与Web后台相通且防护可能不同。第三方服务目标是否使用了云存储如AWS S3、阿里云OSS、云函数、CDN、邮件服务SendGrid、客服系统Intercom这些第三方服务的配置错误如存储桶公开可读写导致的漏洞屡见不鲜。实操心得信息收集不是一次性的工作而应贯穿整个项目周期。我会建立一个不断更新的资产数据库任何新发现的域名、IP、目录都及时补充进去。工具是辅助思维是关键时刻问自己“还有什么地方是我没看到的”2.2 “线”的梳理理解业务流顺藤摸瓜有了“面”接下来要理清“线”——业务的逻辑流程。这是发现逻辑漏洞的关键。不同类型的业务攻击主线截然不同。1. 电商/交易型业务核心关注点资金流和商品流。入口注册、登录、商品浏览、加入购物车、下单、支付、订单管理、售后、优惠券/积分系统。典型思路平行越权修改订单ID参数查看他人订单详情如/order/view?id12345尝试改为12456。支付逻辑漏洞尝试修改支付金额前端传参、重复利用支付凭证、利用负数或极大值导致金额溢出现已较少见但逻辑类似。优惠券逻辑无限领取优惠券领取次数未限制、优惠券金额篡改、优惠券适用范围绕过如限品类券用于全品类。库存与抢购并发请求下超卖、预留库存被恶意占用、抢购接口未做频率限制或验证。2. 社交/内容型业务核心关注点用户关系链和内容权限。入口用户资料、发帖、评论、私信、关注/粉丝列表、内容分享、权限设置如朋友圈可见范围。典型思路垂直越权普通用户能否执行管理员操作如删除他人帖子、置顶帖子、修改网站配置通过寻找隐藏的管理接口。信息泄露通过枚举用户ID/user/profile?id10001遍历用户敏感信息私信内容未做接收方校验可窃听他人对话“仅好友可见”的内容能否通过接口直接访问交互类漏洞功能能否触发XSS上传头像或内容图片处是否存在文件上传漏洞分享功能能否用于生成恶意链接结合钓鱼3. 后台管理系统核心关注点未授权访问和功能滥用。入口这本身就是一个寻找入口的过程。常见后台路径如/admin,/manage,/wp-admin,/backend。也可能藏在子域名admin.xxx.com或非常规端口。典型思路弱口令与爆破这是最直接有效的。但不要只盯着admin/admin123。要收集目标相关信息生成专属字典如公司名年份、产品名123。默认路径与备份文件扫描robots.txt、www.zip、.git目录、.svn目录、phpinfo.php、web.config.bak等这些可能泄露源码、配置信息甚至直接提供后台入口。权限绕过有的后台登录后通过修改Cookie中的角色标识如roleuser改为roleadmin或直接访问需要高权限的API接口/api/admin/deleteUser可能绕过前端菜单权限控制。2.3 “点”的突破常见漏洞类型的狩猎手册理清了业务线我们就可以针对线上的具体“点”功能点、参数点进行深度测试了。以下是几种最常见漏洞的实战挖掘思路。2.3.1 SQL注入老当益壮的内功考验虽然现在普遍使用ORM框架和预编译但SQL注入远未绝迹尤其在老旧系统、复杂查询、排序/分页参数、报表导出等功能中。挖掘思路寻找所有用户可控的输入点URL参数GET、表单数据POST、HTTP头部Cookie, User-Agent, X-Forwarded-For、文件上传的文件名等。判断注入类型数字型参数本是数字如id1。尝试id1 and 11/id1 and 12观察页面差异。字符型参数用引号包裹如nameadmin。尝试nameadmin and 11/nameadmin and 12。搜索型常用于搜索框如keywordtest。尝试keywordtest% and 11 and %。使用工具辅助但更要手工验证sqlmap是神器但直接怼上去容易被封。我通常先用简单Payload探测如单引号、and 11观察是否有报错信息错误回显型注入、页面响应时间是否明显变长时间盲注、页面内容是否有逻辑变化布尔盲注。根据反馈再构造更精准的Payload或用sqlmap的--level和--risk参数进行深度测试。关注非常规注入点JSON格式参数{id: 1}尝试修改为{id: 1 and 11}或{id: {$ne: 1}}如果后端是NoSQL如MongoDB。XML数据如果应用处理XML如SOAP API可尝试XXEXML外部实体注入这有时能导致更严重的内网探测或文件读取。排序参数ordercreate_time尝试order(case when (11) then create_time else update_time end)。踩坑记录在一次测试中一个查询接口对所有常见注入字符,,#,--都做了过滤看似无懈可击。但我发现其order by参数是直接拼接的。最终通过orderupdate_time, sleep(5)的方式成功触发了时间盲注。永远不要假设开发者的过滤是完美的多角度尝试。2.3.2 跨站脚本攻击前端交互的“魔术师”XSS的核心在于“前端代码注入”。随着前端框架React, Vue的普及和浏览器安全机制的增强传统的反射型XSS变少了但存储型和基于DOM的XSS依然活跃。挖掘思路寻找输出点任何用户输入最终被展示在页面上的地方。包括个人资料昵称、签名、评论、留言、文章内容、站内信、聊天内容、文件上传后的文件名、搜索关键词回显、错误信息提示。测试输入过滤与输出编码先投石问路输入一段无害但独特的字符串如\123test然后查看页面源代码看它被如何处置。是被原样输出被HTML编码了被部分过滤了构造试探Payload如果尖括号被过滤尝试onmouseoveralert(1)这类事件处理器属性。如果属性值被引号包裹尝试先闭合引号\ onmouseover\alert(1)。尝试 Unicode、HTML实体等编码方式绕过\u003cscript\u003e,script。区分XSS类型反射型Payload在URL中需要诱骗用户点击。测试时关注所有带参数的页面。存储型Payload被保存到服务器数据库所有访问特定页面的用户都会中招。危害最大需重点测试所有可持久化用户输入的功能。DOM型漏洞发生在浏览器端的JS代码中不经过服务器。需要用浏览器开发者工具跟踪用户输入是如何被document.write、innerHTML、eval、setTimeout等危险函数处理的。利用框架特性在某些框架中如{{7*7}}可能在服务端模板渲染时被计算为49。这虽然不一定是XSS但提示了服务端模板注入的可能是更严重的漏洞。2.3.3 跨站请求伪造利用用户的信任CSRF攻击的是已登录用户的身份。它的前提是用户浏览器会自动携带Cookie等认证信息发起请求。挖掘思路寻找敏感操作点修改密码、修改邮箱、转账、发表内容、删除资源、授权第三方应用等。这些操作通常使用POST请求。检查防护机制是否有CSRF Token查看表单或请求参数中是否存在一个随机生成的、与会话绑定的Token值。如果没有或者Token可预测、可重复使用则存在风险。是否检查Referer头部有些应用会检查HTTP请求的Referer来源是否为本站。可以尝试移除、伪造或利用历史漏洞如本站点存在可设置302跳转的开放重定向漏洞来绕过。是否使用自定义头部一些API设计会使用X-Requested-With等自定义头部但这并非绝对安全CORS配置不当可能允许跨域携带。构造PoC创建一个简单的HTML页面里面包含一个自动提交的表单其action指向目标敏感接口并携带好必要的参数。用已登录目标网站的浏览器打开这个页面如果操作被执行了CSRF漏洞就存在了。关注JSON格式的CSRF如果接口接收JSON数据Content-Type: application/json传统的表单无法直接发起攻击。但可以通过构造一个页面用JavaScript的fetchAPI发起跨域请求。此时需要关注服务器的CORS配置是否过于宽松如Access-Control-Allow-Origin: *且允许携带凭证。2.3.4 文件上传漏洞通往服务器内部的“任意门”文件上传功能如果处理不当攻击者可能上传Webshell直接获取服务器控制权。挖掘思路绕过前端验证前端JS检查文件后缀名是基本操作直接抓包修改文件名即可绕过。绕过服务端验证这是主战场。黑名单绕过如果服务端禁止上传.php,.jsp等尝试.php5,.phtml,.phps,.jspx,.jspf或者利用操作系统特性如test.php.Windows下末尾的点会被去除、test.php%20、test.php::DATANTFS流。文件内容检测绕过如果服务端检测文件内容如图片头GIF89a可以尝试在正常图片末尾追加Webshell代码合成图片马或利用exiftool等工具将代码写入图片的EXIF信息中。解析漏洞利用这是威力巨大的方式。例如老旧版本的IIS6.0存在目录解析漏洞/upload/test.asp;.jpg会被当作asp执行和分号解析漏洞Apache在某些配置下如果文件名为test.php.jpg且启用了AddType相关配置可能被解析为phpNginx的配置错误可能导致test.jpg/.php被解析为php。条件竞争攻击有些系统会先允许文件上传到临时目录然后再进行安全检查不通过则删除。攻击者可以同时发起大量上传请求和访问请求在文件被删除前访问到它并执行。寻找二次渲染机会上传点本身防护严密但系统可能在其他地方如头像裁剪、图片压缩对已上传的文件进行二次处理这个处理过程可能存在命令注入或新的解析漏洞。2.4 “深”的拓展逻辑漏洞与业务深水区如果说SQL注入、XSS是“招式”那么逻辑漏洞就是“内功心法”。它完全依赖于对业务逻辑的深刻理解自动化工具几乎无能为力是体现挖掘者功力的地方。1. 权限绕过设计缺陷水平越权用户A能操作用户B的数据。关键在于ID是否可预测、可遍历以及服务端是否真的校验了“当前登录用户”与“数据所有者”的关联。垂直越权低权限用户能执行高权限操作。除了修改Cookie/Token中的角色字段更要关注是否有隐藏的管理接口未做权限校验URL路径中是否包含/admin/但实际通过普通用户权限可访问前端菜单隐藏了但后端API接口还开着2. 业务流程设计缺陷步骤绕过一个多步骤的操作如密码重置1.输入邮箱 - 2.验证码 - 3.设置新密码能否直接跳过第二步访问第三步的接口并设置密码状态篡改订单状态待支付、已支付、已发货是否由前端参数控制能否将“待支付”改为“已支付”优惠券的“已使用”状态能否被修改条件竞争除了文件上传在支付、抽奖、领取优惠券、库存扣减等场景也广泛存在。核心是“检查”与“执行”非原子操作。例如“检查余额是否充足”和“扣款”之间存在时间差并发请求可能造成超额支付或重复中奖。3. 接口参数滥用批量操作缺乏数量限制删除消息的接口DELETE /api/messages?id[]1id[]2...能否一次传入成千上万个ID导致数据库压力过大甚至拒绝服务参数污染同一个参数名出现多次如price10price0.01后端处理逻辑如何是取第一个、最后一个还是全部这可能导致逻辑错误。JSON/XML参数注入后端将客户端传来的JSON/XML数据直接反序列化为对象。如果反序列化过程不安全如Java的ObjectInputStream.readObjectPHP的unserialize可能造成远程代码执行。3. 实战流程一次完整的漏洞狩猎推演理论说再多不如看一次完整的推演。假设我们拿到一个目标redteam.demo一个虚构的演练目标。3.1 第一阶段广撒网信息捕捞子域名枚举使用subfinder -d redteam.demo结合证书透明度查询我们得到了www.redteam.demo(主站)api.redteam.demo(API接口)admin.redteam.demo(疑似后台访问返回403)dev.redteam.demo(开发环境返回“建设中”)test.redteam.demo(测试环境竟然可以直接访问)assets.redteam.demo(静态资源)端口扫描对主域名和发现的子域名IP进行扫描发现www.redteam.demo:80, 443(标准Web)api.redteam.demo:8080(Spring Boot Actuator 监控端口开放)dev.redteam.demo:22, 3306(开发环境开了SSH和MySQL危险)内网某IP6379(Redis未授权访问)目录与文件扫描对test.redteam.demo使用dirsearch发现/phpinfo.php访问后泄露了大量服务器配置信息包括绝对路径、数据库连接信息打码了密码、已安装的扩展等。GitHub信息收集搜索公司名“RedTeam”发现一个员工误传了配置文件config.properties到公开仓库里面包含了数据库明文密码和阿里云OSS的AccessKey。至此攻击面已极大扩展我们有了主站、API、后台地址、不安全的测试环境、可能未授权访问的Redis和MySQL甚至拿到了数据库密码和云服务密钥。这比只盯着主站扫描要高效得多。3.2 第二阶段抓重点逐个击破我们选择几个最有希望的点深入。突破口一测试环境test.redteam.demo访问发现是一个简单的CMS后台登录页。尝试弱口令admin/admin失败。查看/phpinfo.php泄露的路径尝试访问/admin/backup/20231010.sql成功下载到数据库备份文件。在备份文件中找到管理员表发现密码是MD5哈希。尝试用泄露的通用密码哈希如e10adc3949ba59abbe56e057f20f883e对应123456碰撞成功登录后台。后台存在文件上传功能用于上传文章图片仅在前端限制了图片后缀。抓包修改文件名为shell.php.jpg内容为?php eval($_POST[cmd]);?上传成功返回路径/uploads/shell.php.jpg。直接访问该路径返回404。怀疑有后缀检查。利用Nginx解析漏洞知识尝试访问/uploads/shell.php.jpg/.php成功解析执行使用蚁剑连接获取Webshell。突破口二API监控端点api.redteam.demo:8080/actuatorSpring Boot Actuator 如果配置不当会暴露很多敏感端点。访问/actuator/env直接泄露了应用的所有环境变量其中包括数据库密码与GitHub泄露的相同、邮箱SMTP密码、内网其他服务的地址和密钥。访问/actuator/heapdump可以下载内存堆转储文件。使用MAT或JVisualVM分析有可能从内存中找到敏感的会话信息、加密密钥等。访问/actuator/loggers可以动态修改日志级别。将com.redteam.demo.controller.AdminController的日志级别改为DEBUG然后触发相关操作可能将敏感信息打印到日志中。突破口三利用泄露的云服务密钥使用泄露的阿里云OSS AccessKey通过命令行工具ossutil配置。执行ossutil ls oss://redteam-bucket发现可以列出存储桶内所有文件。进一步尝试上传、下载、删除文件发现该存储桶策略为公共读写public-read-write。这意味着任何知道存储桶名的人都可以任意操作。在存储桶中发现大量用户上传的身份证照片、公司内部文档备份。这是一个严重的数据泄露漏洞。3.3 第三阶段权限提升与横向移动在获得test.redteam.demo的Webshell后我们以Web服务权限如www-data登录服务器。信息收集执行id,uname -a,cat /etc/passwd查看当前权限和系统用户。查找敏感文件在Web目录、用户家目录、/tmp、/var/backups等位置寻找配置文件、密码本、SSH私钥、数据库备份等。发现了/var/www/html/config.php含有主数据库密码。数据库连接用找到的密码连接MySQL发现拥有root权限。在数据库中找到了管理员用户的密码哈希与测试环境不同通过哈希传递或修改可能升级到主站后台权限。利用Redis未授权访问从服务器内网连接172.16.1.100:6379确认无需密码。利用Redis写SSH公钥或Webshell的技术尝试攻破该Redis服务器进而可能获得其所在服务器的权限。从开发环境到生产环境在dev.redteam.demo的服务器上发现~/.ssh/id_rsa私钥并且该密钥可以免密登录生产环境的某台跳板机。通过它实现了从测试环境到生产核心网络的横向移动。4. 工具链与自动化让猎人如虎添翼工欲善其事必先利其器。合理的工具链能极大提升效率。我的个人工作流如下1. 信息收集与资产测绘子域名subfinderamassOneForAll综合能力强。端口扫描masscan全网段快扫 nmap精细化识别用naabu也不错。目录/文件扫描dirsearch经典、ffuf速度极快可自定义字典、gobuster。指纹识别Wappalyzer浏览器插件快速、WhatWeb、EHole棱洞。综合平台ARLAsset Reconnaissance Lighthouse灯塔或xray的爬虫模式可以自动化完成很多信息收集任务。2. 漏洞扫描与初步探测主动扫描器xray、AWVS、Nessus。我的建议是永远不要完全依赖扫描器的报告。它们会产生大量误报和无关紧要的低危信息。要把它们当作“线索生成器”从中筛选出值得手工验证的点。被动扫描器Burp Suite的 Scanner 模块或xray的被动代理模式。配置好代理然后手动浏览网站所有功能让工具在后台静默分析流量往往能发现一些主动扫描触达不到的接口。3. 手工测试与漏洞利用代理与抓包Burp Suite Professional是绝对的主力。Repeater重放、Intruder爆破、Decoder编解码、Comparer对比四大模块每天必用。社区版功能受限但核心的代理和重放足够入门。浏览器插件Hack-Tools、FoxyProxy、Wappalyzer、EditThisCookie。Payload集合SecLists项目是必备的字典库。fuzzdb、PayloadsAllTheThings也是极好的参考。漏洞利用框架Metasploit、SQLMap专精。知道在何时、如何精准使用它们。4. 自动化与自研脚本这是区分普通测试者和资深猎人的关键。我会针对特定场景写一些小脚本子域名监控脚本定期跑一遍子域名枚举对比新增资产。特定漏洞的批量检测比如针对一批目标快速检测Spring Boot Actuator未授权。结果整理与报告生成脚本将散乱的漏洞信息URL、参数、Payload、截图自动整理成固定格式的Markdown或Word报告。核心心法工具是手臂的延伸思维才是大脑。不要被工具牵着鼻子走。最强大的“工具”是你对网络协议、操作系统、编程语言和业务逻辑的理解。5. 防御视角与报告撰写从攻击者到建设者的转身挖到漏洞不是终点如何清晰地描述它、证明其危害、并帮助开发者修复才是价值的最终体现。1. 漏洞报告的核心要素一份好的漏洞报告能让开发者立刻明白问题所在。它必须包含标题简明扼要如“【高危】目标系统后台管理接口存在未授权访问可导致数据泄露”。漏洞等级参考通用标准如CVSS或SRC平台标准客观评定。受影响URL精确到存在漏洞的接口地址。请求与响应提供完整的HTTP请求包和响应包可用Burp的Copy as curl command或原始请求格式。关键参数要高亮。重现步骤像食谱一样一步一步写清楚如何复现这个漏洞。1. 打开浏览器... 2. 访问... 3. 输入... 4. 点击... 5. 观察到...漏洞原理简要说明为什么这是个漏洞是缺少了权限校验还是过滤不严潜在危害这个漏洞最坏能导致什么后果数据泄露、用户资金损失、服务器被控制修复建议给出具体、可操作的修复方案。不要说“加强过滤”而要说“建议在服务端对orderId参数进行校验确保其对应的订单属于当前登录用户userId”。2. 站在防御者角度思考在挖掘过程中多问自己“如果我是开发者我为什么会犯这个错我该如何防止”输入验证是否在所有可信边界前端、后端接口、数据库查询都进行了严格的校验和过滤权限校验每个操作前是否都明确检查了“当前用户是否有权执行此操作于此资源”默认安全是否默认拒绝了所有未明确允许的操作最小权限原则是否贯彻错误处理是否返回了过于详细的错误信息给用户依赖组件使用的第三方库、框架、中间件是否保持了最新版本没有已知高危漏洞这种思维不仅能帮你找到更多深层次的逻辑漏洞也能让你在报告漏洞时提出的建议更接地气、更有效。漏洞挖掘的世界没有银弹也没有终点。它是一场攻击者与防御者之间永不停歇的智力博弈。今天分享的这些场景和思路是我过去多年经验的凝结希望能为你点亮一盏灯让你少走些弯路。真正的精通源于在无数个真实目标上的反复练习、总结和思考。记住保持好奇心保持耐心保持对细节的偏执你会在狩猎的道路上发现属于自己的独特风景。最后永远将技术用于正当的授权测试和安全研究这是所有安全从业者必须恪守的底线。