SRC漏洞挖掘入门:8种实战姿势与零基础进阶路径
1. 项目概述:从“捡漏”到“挖洞”的思维跃迁
最近在抖音和一些技术论坛上,经常刷到“SRC漏洞挖掘”、“黑客技术零基础入门”这类话题,热度一直很高。很多刚入门安全的朋友,可能觉得“挖洞”是件很神秘、门槛极高的事情,仿佛只有手握“神兵利器”的黑客大神才能做到。其实不然,我干了十多年安全,从乙方渗透测试到甲方安全建设,再到业余时间在各大SRC平台“挖矿”,最大的体会就是:SRC漏洞挖掘,本质上是一场信息不对称的较量,以及思维严谨性的比拼。它更像是一个“找茬”游戏,只不过我们找的是业务逻辑、代码实现、配置管理上的“茬”。
这个所谓的“8种姿势”,并不是什么独门秘籍,而是八种最常见、最高效的漏洞挖掘切入视角和实战方法。它们共同构成了一个从外围信息刺探到核心业务逻辑深入的全流程攻击面梳理框架。对于零基础的朋友来说,掌握这八种思路,远比盲目地使用一大堆自动化工具更重要。工具是手臂,思路才是大脑。今天,我就结合自己踩过的坑和成功的案例,把这八种“出洞姿势”掰开揉碎了讲清楚,目标是让你看完之后,能立刻形成自己的挖掘路径图,知道第一步该看什么,第二步该试什么,而不是对着一个庞大的目标系统发呆。
2. 核心思路拆解:为什么是这八种姿势?
在深入细节之前,我们必须先建立一个顶层认知:漏洞因何而生?无外乎“不该有的有了”(如未授权访问)、“该有的没有”(如缺少输入校验)、“该强的弱了”(如弱口令)、“该藏的露了”(如敏感信息泄露)。我们的八种姿势,就是系统地、有层次地去发现这些“异常”。
这八种姿势可以分为三大阶段:侦查阶段、探测阶段、深入利用阶段。它们不是孤立的,而是一个递进和循环的过程。
- 侦查阶段(姿势1-2):目标是绘制目标“地图”。不直接触碰目标,而是通过公开渠道和间接信息,尽可能全面地了解目标资产、技术架构、人员信息、历史漏洞等。这是所有后续工作的基础,信息收集的广度直接决定了漏洞挖掘的深度上限。
- 探测阶段(姿势3-5):目标是发现“薄弱点”。基于收集到的信息,开始与目标系统进行有限度的交互,通过自动化扫描和手动测试,识别出明显的安全缺陷,如开放的端口、存活的脆弱服务、错误的配置等。
- 深入利用阶段(姿势6-8):目标是验证并“突破防线”。针对发现的薄弱点,进行深入的手动测试和逻辑分析,尝试构造利用链,将潜在的风险转化为切实可证明的漏洞,如逻辑漏洞绕过、权限提升、数据泄露等。
接下来,我们就逐一拆解这八种具体姿势。
2.1 姿势一:资产测绘与子域名挖掘——绘制你的攻击地图
这是所有工作的起点。你的目标不可能只有一个主域名(例如example.com),其背后必然关联着成百上千的子域名、IP地址、云服务、第三方组件等。这些资产共同构成了攻击面,而很多漏洞就藏在那些被遗忘的、疏于管理的边缘资产上。
核心操作与工具链:
子域名枚举:
- 被动收集:利用第三方视角已经整理好的数据。常用工具如
subfinder,amass(passive mode),或者在线平台如 SecurityTrails, Censys, Shodan。它们的原理是查询DNS记录数据库、证书透明度日志(CT Log)、历史爬虫数据等。被动收集的优势是速度快、噪音低、不易触发告警。 - 主动爆破:使用字典对目标域名进行暴力猜解。工具如
ksubdomain,dnsgen配合massdns。字典的质量至关重要,可以融合通用字典(如subdomains-top1million-5000.txt)和针对目标行业、技术的自定义字典(例如,如果目标用Jenkins,就加入jenkins.example.com;用Confluence,就加入wiki.example.com,confluence.example.com)。 - 证书透明度日志:证书在签发时会被记录到公开的CT日志中。通过查询这些日志,可以发现很多甚至未在公开DNS中解析的子域名。
crt.sh网站和amass的证书收集模块是利器。
- 被动收集:利用第三方视角已经整理好的数据。常用工具如
IP资产发现:
- 将发现的子域名解析为IP(
dig,nslookup),并去重。 - 识别IP段(C段):查看目标主要IP所属网段,尝试扫描整个C段(如
192.168.1.0/24),常能发现测试环境、老旧服务器、未纳入主站管理的后台系统。工具如nmap(nmap -sn 192.168.1.0/24)。 - ASN(自治系统号)查询:大型企业通常会拥有自己的ASN。通过目标IP反查ASN(在
bgp.he.net或ipinfo.io),再正向查询该ASN下宣告的所有IP段,可以极大扩展资产范围。amass的-asn参数可以自动化这个过程。
- 将发现的子域名解析为IP(
端口与服务探测:
- 对发现的IP资产进行端口扫描。不要只扫
80, 443。nmap的-p-参数扫描全端口(1-65535)在时间允许的情况下非常有必要,但通常可以先快速扫描常见端口(nmap -sS -sV --top-ports 1000)。 - 重点关-注:
22(SSH),21(FTP),23(Telnet),445(SMB),3389(RDP),6379(Redis),27017(MongoDB),9200/9300(Elasticsearch),5984/6984(CouchDB),8161/61616(ActiveMQ)等。这些端口上运行的服务,因配置不当导致未授权访问的案例数不胜数。
- 对发现的IP资产进行端口扫描。不要只扫
实操心得:资产收集不是一锤子买卖。应该建立一个自动化流水线,定期(如每周)对目标进行一轮被动收集和轻量级主动探测,及时将新增资产纳入监控。我曾通过监控一个子域名的新增解析记录,发现了一个刚上线、还未做安全加固的
GitLab实例,并因此报告了一个高危漏洞。
2.2 姿势二:信息泄露与源码追溯——在“垃圾堆”里找金子
开发人员、运维人员无意中留在公开环境的信息,往往是打开宝藏大门的钥匙。这类漏洞的挖掘,考验的是耐心和细心。
关键泄露点与挖掘方法:
- 版本控制仓库泄露:
.git,.svn,.hg目录。如果网站存在目录遍历或配置错误,导致能直接访问这些目录,就可以利用GitHack,dvcs-ripper等工具尝试还原整个项目源码。源码中可能包含数据库密码、API密钥、后台路径等硬编码信息。 - 备份文件泄露:常见的备份文件后缀如
.bak,.swp,.old,.tar.gz,.zip,.7z,以及形如wwwroot.zip,database.sql.bak的文件。可以通过字典爆破目录和文件来发现。 - 配置文件泄露:如
WEB-INF/web.xml(Java),config.php,.env,application.yml,config.json等。这些文件可能直接泄露数据库连接字符串、加密密钥、第三方服务凭证。 - 错误信息泄露:故意触发应用的错误(如输入非法参数、访问不存在路径),观察返回的详细错误信息。可能暴露出服务器路径、SQL语句片段、框架版本、数据库类型等,为后续攻击提供线索。
- 搜索引擎语法(Google Hacking):利用
site:,inurl:,intitle:,filetype:等语法,在搜索引擎中寻找敏感信息。例如:site:example.com filetype:sqlsite:example.com intitle:"index of" "parent directory"site:example.com "API_KEY" OR "SECRET_KEY" OR "password"
- JS文件分析:现代Web应用大量逻辑在前端JavaScript中。使用浏览器开发者工具(Sources面板)或
LinkFinder、JSFinder这类工具,分析JS文件,常能发现未在文档中公开的API接口、内部域名、甚至是写死的敏感参数或令牌。
注意事项:在利用泄露的源码或配置信息时,务必注意法律和道德边界。SRC挖掘的目的是帮助厂商修复问题,绝不能利用这些信息进行进一步的数据窃取或破坏。你的报告里只需要证明信息可被获取即可。
2.3 姿势三:默认口令与弱口令爆破——最“朴素”的突破口
尽管老生常谈,但弱口令依然是最高频的漏洞来源之一。这不仅仅是“admin/admin”,而是所有依赖于口令认证的入口。
爆破目标与策略:
- 后台管理系统:
/admin,/wp-admin,/manage,/console, 以及各种中间件、框架的默认管理入口(如Jenkins (/jenkins),Tomcat Manager (/manager/html),Weaver OA等)。 - 服务协议:SSH, FTP, Telnet, RDP, MySQL, Redis, MongoDB, SMTP, POP3 等。
- API接口:需要认证的API端点,特别是那些设计为内部使用、但意外暴露在公网的。
- 字典定制:
- 通用弱口令字典:如
rockyou.txt,top1000.txt。 - 目标相关字典:收集目标公司名称、产品名、品牌缩写、所在地域等信息,生成组合字典。例如,公司名为“星辰科技”,地点北京,可生成
StarTech2024,BJxckj123,xingchen@2023等。 - 用户名枚举:先通过注册、找回密码、登录错误提示等信息,枚举出存在的用户名,再针对这些用户名进行密码爆破,效率更高。
- 通用弱口令字典:如
- 工具使用:
- Web爆破:
Burp Suite Intruder(功能最强大),Hydra(支持协议多),xray的brute-force插件。 - 服务爆破:
Hydra,Medusa,Ncrack。 - 技巧:注意观察网站的防爆破机制(验证码、锁定策略、IP频率限制)。对于有验证码的,可以尝试寻找无验证码的平行接口(如手机短信登录接口可能无图验),或验证码可被绕过/识别。
- Web爆破:
踩坑记录:我曾对一个系统进行爆破,始终不成功。后来发现其登录逻辑是:前端将密码进行了一次MD5哈希后才传给后端。直接用明文字典爆破自然无效。解决办法是用Burp的
Payload Processing功能,在爆破前对每个密码载荷先进行MD5编码。所以,遇到爆破无果时,一定要抓包分析登录请求的原始数据流,看密码是否被前端处理过。
2.4 姿势四:未授权访问与配置错误——敞开着的大门
这类漏洞的根源在于管理员或开发者的安全意识不足,或者对组件安全特性不熟悉,留下了无需钥匙的入口。
常见场景与检测方法:
中间件/服务未授权访问:
- Redis:
redis-cli -h target_ip直接连接,如果无需认证,可执行INFO命令查看信息,甚至写入Webshell。 - MongoDB:
mongo target_ip:27017直接连接,可能直接拥有所有数据库权限。 - Memcached:
telnet target_ip 11211,执行stats命令可查看统计信息,在某些配置下可能导致信息泄露或用于DDoS反射放大攻击。 - Elasticsearch:访问
http://target_ip:9200/_cat/indices?v可列出所有索引,访问http://target_ip:9200/_search?q=可搜索数据。 - Kibana:作为Elasticsearch的前端,如果配置不当,可能无需认证即可访问,进而操作底层数据。
- Docker API:如果Docker守护进程的2375端口暴露在公网且无认证,攻击者可以远程管理容器,造成严重威胁。
- Jenkins:默认安装后,可能未开启“启用安全”选项,导致控制台完全开放。
- Redis:
文件/目录遍历与读取:
- 通过参数控制文件路径,如
?file=../../../../etc/passwd。尝试使用../穿越目录,读取系统文件、配置文件、日志文件。 - 尝试访问敏感目录,如
/phpinfo.php,/admin/,/backup/,/database/。
- 通过参数控制文件路径,如
CORS配置错误:跨域资源共享策略配置过于宽松(如
Access-Control-Allow-Origin: *),可能导致敏感数据被恶意网站窃取。HTTP方法滥用:不必要的HTTP方法(如
PUT,DELETE,TRACE)被开启,可能用于文件上传或信息探测。
检测工具:这类漏洞的检测很大程度上依赖于对端口的识别和手动验证。nmap的脚本引擎 (-sC) 可以辅助检测一些常见服务的默认配置。但最有效的还是“看到可疑端口,就去手动连一下试试”的经验性操作。
2.5 姿势五:已知漏洞组件扫描——站在巨人的“漏洞”上
现代应用大量使用第三方框架、库和组件。这些组件的公开漏洞(CVE)是攻击者最爱的“捷径”。你的目标系统很可能正在使用一个含有已知漏洞的旧版本。
方法论与工具:
- 识别技术栈:
- Web框架/CMS:观察HTTP响应头(如
X-Powered-By)、Cookie名称(如PHPSESSID,JSESSIONID)、页面源代码中的注释、特定URL路径(如/wp-content/指向WordPress)。 - 前端库:查看源码中引用的
.js文件路径,如jquery-x.x.x.min.js。 - 中间件/服务器:通过
nmap -sV或报错信息识别Nginx,Apache,Tomcat,IIS的版本。
- Web框架/CMS:观察HTTP响应头(如
- 漏洞匹配:
- 将识别出的组件及其版本,在漏洞库中进行匹配。常用资源:
NVD(美国国家漏洞数据库),CNVD/CNNVD(中国国家漏洞库),以及Exploit-DB,Seebug(知道创宇) 等。 - 自动化工具:
nuclei是当前社区最强大的模板化漏洞扫描器。它有海量的社区模板,覆盖了从信息泄露到RCE的各类CVE和通用型漏洞。使用命令nuclei -u target_url -t cves/可以快速扫描目标是否存在已知CVE。 - 专项扫描器:针对特定CMS的扫描器,如
WPScan(WordPress),Droopescan(Drupal, Silverstripe等)。
- 将识别出的组件及其版本,在漏洞库中进行匹配。常用资源:
重要提醒:自动化扫描器(包括
nuclei)虽然高效,但极易产生大量误报,并且可能对目标业务造成影响(如扫描压力、触发告警)。在SRC挖掘中,务必谨慎使用,最好在获得授权或明确目标SRC政策允许的范围内进行。对于扫描出的漏洞,必须手动验证其真实性和危害性,才能提交报告。提交一个无法复现的误报,会严重影响你的信誉。
2.6 姿势六:业务逻辑漏洞挖掘——与开发者的思维博弈
这是最能体现“黑客思维”和“零基础”也能有所作为的领域。逻辑漏洞不依赖于任何技术栈的缺陷,而是程序业务流程设计上的瑕疵。它要求你像一个“恶意用户”一样去思考,去尝试各种非正常操作流程。
经典场景与测试思路:
越权访问:
- 水平越权:修改请求中的ID参数(如用户ID、订单号),访问属于其他用户的资源。例如,将
GET /api/order/123改为GET /api/order/124,看能否看到别人的订单。 - 垂直越权:普通用户尝试访问管理员功能。例如,普通用户登录后,直接拼接后台管理地址
/admin/user/list进行访问。 - 测试方法:使用两个账号(如A和B),用A的身份进行某个操作,抓取请求包,将其中标识身份的参数(如Cookie, Token, user_id)替换为B的,重放请求,观察是否成功。
- 水平越权:修改请求中的ID参数(如用户ID、订单号),访问属于其他用户的资源。例如,将
业务流程绕过:
- 四步支付变一步:支付流程为:选商品->填地址->确认订单->支付。尝试抓取“支付”步骤的请求包,直接重放,看是否能跳过前面步骤完成支付。
- 参数篡改:商品价格在客户端生成(如隐藏域
<input type="hidden" name="price" value="100">),提交时修改为0.01。 - 负数或极大值:购买数量传入
-1,看是否会增加余额;传入一个极大值(如999999),看是否会引发整数溢出等逻辑错误。
验证机制缺陷:
- 短信/邮箱轰炸:找回密码或注册时,手机/邮箱验证码接口无频率限制,可被恶意利用轰炸他人。
- 验证码可绕过:验证码在客户端校验;验证码与手机号/邮箱不绑定,用一个有效的验证码可验证所有账号;验证码在成功一次后未失效,可重复使用(重放攻击)。
- 密码重置漏洞:重置密码时,仅通过一个不可控的弱凭证(如发送到邮箱的链接,但链接中的token可被预测或枚举)来验证身份。
竞争条件:利用系统处理并发请求时的时序问题。经典案例是“抽奖”或“抢购”:同时发起多个请求,可能在库存检查(
if stock > 0)和实际扣减(stock = stock - 1)的间隙,成功购买超过库存数量的商品。工具如Burp Suite Turbo Intruder可以方便地发送高并发请求。
挖掘逻辑漏洞没有万能工具,核心是:
- 理解业务:自己走一遍正常流程。
- 抓包分析:用
Burp Suite或Charles拦截每一个请求。 - 大胆假设,小心验证:思考“如果我不按规矩来,会怎样?”,然后修改参数重放请求。
- 多账户测试:准备至少两个测试账号,用于越权测试。
2.7 姿势七:输入输出与常见Web漏洞——经典永流传
虽然SQL注入、XSS这类漏洞随着框架的普及有所减少,但在老旧系统、自研框架、接口参数中依然大量存在。这是安全工程师的基本功。
重点类型与手动测试技巧:
SQL注入:
- 寻找注入点:所有用户可控的输入点,包括GET/POST参数、Cookie、HTTP头(如
X-Forwarded-For)。 - 手动探测:在参数后添加单引号
',观察是否报错(错误型注入)。提交参数和参数 and 1=1/参数 and 1=2,观察页面返回是否不同(布尔盲注)。使用sqlmap进行自动化检测和利用是高效的,但手动理解原理至关重要。 - 新型注入:不要只关注数据库,还要关注
NoSQL注入(如MongoDB的$ne,$gt操作符)、ORM注入、LDAP注入。
- 寻找注入点:所有用户可控的输入点,包括GET/POST参数、Cookie、HTTP头(如
跨站脚本:
- 寻找输出点:所有将用户输入原样输出到页面的地方。包括HTML正文、标签属性(如
<img src="[INPUT]">)、JavaScript代码段、CSS等。 - 测试Payload:最简单的
<script>alert(1)</script>。但现代浏览器有XSS过滤器,需要尝试各种绕过技巧,如<img src=x onerror=alert(1)>,<svg onload=alert(1)>。关注DOM-based XSS,它完全在浏览器端发生,需要仔细分析前端JS代码。 - 工具辅助:
Burp Suite的Scanner和Active Scan能发现一部分反射型XSS。但DOM型XSS和复杂的存储型XSS仍需手动分析。
- 寻找输出点:所有将用户输入原样输出到页面的地方。包括HTML正文、标签属性(如
文件上传漏洞:
- 绕过前端校验:直接抓包修改文件扩展名和
Content-Type。 - 绕过黑名单:尝试非常见扩展名(
.php5,.phtml,.phps)、大小写(.PhP)、点号空格(.php.-> 服务器可能修剪为.php)、双扩展名(.jpg.php)。 - 绕过内容检测:在文件开头添加图片魔数(如GIF的
GIF89a),后面再拼接恶意代码(图片马)。利用解析漏洞(如IIS的*.asp;.jpg解析为ASP)。 - 条件竞争:服务器先保存文件,再检查内容,删除非法文件。利用这个时间差,在文件被删除前访问并执行它。
- 绕过前端校验:直接抓包修改文件扩展名和
命令/代码执行:
- 常出现在调用系统命令的函数参数可控时,如PHP的
system(),exec(),Java的Runtime.exec(),Python的os.system()。 - 测试方法:输入常见的命令连接符,如
|,&,;,&&,||,后接whoami,id,ping等无害命令探测。例如127.0.0.1 & whoami。
- 常出现在调用系统命令的函数参数可控时,如PHP的
实操心得:对于这类漏洞,自动化工具(
sqlmap,xray,AWVS)能解决大部分“明显”的问题。但高价值的漏洞往往藏在工具扫描的盲区。一定要结合手动测试,特别是对业务关键接口、管理后台接口进行重点测试。工具报告“可能存在注入”,你必须手动验证它是否真的可被利用,能执行什么命令,能获取什么数据。
2.8 姿势八:接口安全与参数污染——隐藏在API背后的风险
随着前后端分离和移动应用的普及,API(特别是RESTful API)成为主要的攻击面。API的安全问题既有传统的Web漏洞,也有其独特之处。
API特有漏洞与测试方法:
- 未鉴权的API端点:开发者可能认为某个API仅供内部调用或前端特定页面使用,因而未做鉴权。直接访问该API路径(如
/api/v1/users,/api/internal/config)可能返回敏感数据或允许写操作。通过爬取JS文件或使用Burp爬虫可以发现大量此类端点。 - 接口参数污染:
- JSON参数注入:如果API接受JSON body,尝试在JSON中注入额外参数或修改参数类型。例如,将
{"price": 100}改为{"price": 0.01}或{"price": "100", "__proto__": {"isAdmin": true}}(原型链污染)。 - 数组与对象混淆:后端期望一个对象
{"id": 123},但传入一个数组[{"id": 123}, {"id": 124}],看后端如何处理,是否会导致逻辑错误或数据泄露。 - 参数类型混淆:将数字型ID改为字符串型,或将布尔值
false改为字符串"false",可能绕过某些检查。
- JSON参数注入:如果API接受JSON body,尝试在JSON中注入额外参数或修改参数类型。例如,将
- GraphQL特有风险:GraphQL接口可以通过 introspection(自省)查询获取完整的Schema信息,暴露所有可用的查询和变更操作。如果未做速率限制,复杂的查询可能导致服务端资源耗尽(DoS)。此外,可能存在的批量操作漏洞,如通过一个请求创建大量用户。
- API速率限制缺失:导致短信轰炸、密码爆破、爬虫数据采集变得非常容易。
- 测试工具与方法:
- 主动发现:使用
Burp Suite或OWASP ZAP爬取应用,重点关注/api/,/graphql,/rest/等路径。 - 分析流量:使用手机抓包工具(如
Charles,Fiddler)捕获App的API请求,这些接口可能比Web端更“原始”,防护更弱。 - 工具辅助:
kiterunner是一款专门用于爆破API路径的工具,它使用从真实API中收集的字典,比通用目录字典更有效。
- 主动发现:使用
3. 从入门到精通的实战路径规划
了解了八种姿势,零基础的朋友可能会问:我该从哪里开始?按照什么顺序来?下面是一个我建议的、循序渐进的实战学习路径。
3.1 第一步:搭建你的“作战实验室”
在触碰任何真实目标之前,必须先有一个安全、合法的练习环境。
- 本地靶场:在本地虚拟机或Docker中搭建。推荐
DVWA(Damn Vulnerable Web Application),bWAPP,WebGoat,它们集成了各种漏洞,适合初学者理解原理。 - 在线靶场:
PortSwigger Web Security Academy(Burp Suite官方出品,免费且质量极高),HackTheBox(需要一定基础),TryHackMe(引导式,对新手友好)。 - SRC公益平台:一些大型互联网公司设有面向公众的、合法的漏洞测试平台,如“漏洞银行”的公益SRC、腾讯“洋葱”反入侵演练平台等。务必仔细阅读并严格遵守平台规则。
3.2 第二步:掌握核心工具链
工欲善其事,必先利其器。初期不必贪多,精通几个核心工具足矣。
- 代理与抓包:
Burp Suite Community Edition(免费版功能已足够强大) 是绝对的核心。学会配置浏览器代理、拦截请求、重放、修改参数。 - 信息收集:从
subfinder,amass,assetfinder中选择一两个,配合httpx/httprobe验证存活。nmap用于端口扫描和服务识别。 - 漏洞扫描:
nuclei用于已知漏洞快速筛查。但切记,这只是辅助,核心靠手动。 - 集成环境:
Kali Linux或Parrot OS预装了大部分工具,适合初学者。进阶后可以根据自己习惯打造专属环境。
3.3 第三步:建立系统化的工作流
不要东一榔头西一棒子。一个高效的挖洞流程应该是:
- 目标确定与范围界定:选择一个目标(如某个SRC),仔细阅读其漏洞范围、奖励规则、测试限制。
- 全面信息收集(姿势一、二):运用工具进行子域名、IP、端口、目录、敏感信息泄露的收集,整理成清晰的资产清单。
- 攻击面分析与优先级排序:审视资产清单,标记出高风险点:管理后台、API接口、老旧服务(如Struts2)、文件上传点、登录/注册/找回密码功能。
- 分层深入测试:
- 浅层扫描(姿势五):对全站或高风险资产用
nuclei进行快速CVE扫描。 - 通用漏洞探测(姿势七):对关键功能点(尤其是输入点)手动测试SQL注入、XSS、命令执行。
- 业务逻辑深挖(姿势六):重点测试核心业务流,如支付、订单、账户体系。
- 权限与配置检查(姿势三、四):测试默认口令、未授权访问。
- 浅层扫描(姿势五):对全站或高风险资产用
- 漏洞验证与报告编写:确保漏洞可稳定复现。报告要清晰:标题、漏洞类型、风险等级、受影响URL、复现步骤(步骤、请求包、响应包)、修复建议。截图和视频是最有力的证明。
3.4 第四步:持续学习与社区交流
安全技术日新月异。
- 跟进最新漏洞:关注
Twitter上的安全研究员,订阅CVE公告,浏览Seebug,Exploit-DB。 - 学习优秀报告:在各大SRC平台(如补天、漏洞盒子、腾讯安全应急响应中心等)查看已公开的高质量漏洞报告,学习别人的挖掘思路和报告写法。
- 参与社区:在安全论坛(如看雪、安全客、FreeBuf)与同行交流,提问和解答问题,是快速成长的捷径。
4. 常见问题与排查技巧实录
在实际操作中,你会遇到各种各样的问题。这里记录一些典型的“坑”和解决思路。
Q1:信息收集时,子域名爆破总是没结果,怎么办?A1:
- 检查字典:你的字典可能不匹配目标。尝试使用更全面的字典,或者根据目标特点生成定制字典(公司名、产品名、常用运维词汇如
dev,test,staging,mail,vpn等)。 - 检查DNS服务器:使用公共DNS(如
8.8.8.8,1.1.1.1)可能被限速或过滤。可以尝试更换DNS,或者使用massdns这类自带解析器的工具。 - 目标有防护:可能触发了频率限制。尝试降低爆破速度,使用
-rate参数限制每秒请求数,或者使用多个、分散的DNS解析器。 - 尝试其他方法:主攻证书透明度(
crt.sh)和被动收集,这些方式更隐蔽,可能发现爆破找不到的子域。
Q2:扫描器(如nuclei)报了很多漏洞,但手动验证一个都不是,全是误报?A2:
- 这是常态。自动化扫描器的逻辑是基于特征匹配,无法理解业务上下文。你必须手动验证。
- 验证步骤:
- 仔细阅读扫描器报告的“请求”和“响应”,理解它为什么认为这里有漏洞。
- 用Burp手动重放这个请求,观察响应是否真的符合漏洞利用成功的特征(如执行了命令、返回了敏感数据)。
- 尝试构造一个更“无害”的Payload来证明漏洞存在。例如,报告说是RCE,你尝试执行
whoami或id命令,看能否在响应中看到结果。 - 如果无法证明,那就是误报。绝不提交未经确认的漏洞。
Q3:测试越权时,修改了用户ID,但系统返回“权限不足”或跳转到登录页,这是否意味着防护完善?A3:
- 不一定。这可能只是前端或网关层的统一拦截。需要深入测试:
- 尝试其他ID:可能系统只检查了ID是否属于当前用户,但如果你传入一个不存在的ID或格式错误的ID,可能会走不同的逻辑分支而绕过。
- 测试其他参数:除了
user_id,还有order_id,document_id,team_id等。不同模块的权限检查可能不一致。 - 测试不同请求方法:
GET请求被拦截,试试POST、PUT、DELETE。 - 测试不同接口:用户信息接口有防护,但用户的订单列表接口、评论列表接口可能没有。
- 关注“间接引用”:即不直接传递用户ID,而是传递一个由ID生成的令牌(Token)。如果这个令牌可预测或可枚举,同样存在越权。
Q4:在测试一个功能时,网站突然封了我的IP,怎么办?A4:
- 立即停止测试!这是最重要的安全意识和职业道德。
- 分析原因:你是否进行了高频率的爆破扫描?是否发送了大量恶意Payload?是否触发了明显的攻击特征(如
../../etc/passwd)? - SRC测试:如果你是在SRC授权范围内测试,并且行为合理(如低速的手动测试),可以尝试通过SRC平台的联系渠道说明情况,请求解封。切勿使用代理或切换IP来绕过封锁,这严重违反规则。
- 调整策略:未来的测试中,要更加“温柔”。降低请求频率,分散测试时间,优先使用被动信息收集和不触发WAF的测试方法。
Q5:挖了很久一个洞都没找到,很沮丧,怎么办?A5:
- 调整目标:不要死磕一个防护严密的大型主站。尝试寻找其子域名、边缘业务、新上线的活动页面、收购的子公司网站、第三方合作方接口。这些地方往往是安全防护的薄弱环节。
- 转换思路:从技术漏洞转向业务逻辑漏洞。仔细走一遍注册、登录、充值、提现、下单、售后等全流程,思考每一个环节是否可以“钻空子”。
- 学习案例:去看别人在这个目标或类似目标上挖到了什么洞,学习他们的思路。
- 坚持与复盘:漏洞挖掘需要运气,但更需要积累。每一次失败的测试,都应该成为经验。记录下你测试过哪些点、用了什么方法、为什么不行。长期的复盘会让你形成直觉。
这条路没有捷径,它需要你像侦探一样细心,像工匠一样耐心,像棋手一样思考。从看懂一篇文章,到复现一个靶场漏洞,再到在真实世界中独立发现第一个中危漏洞,每一步都是坚实的成长。记住,最高的技巧不是工具的使用,而是思维的训练。当你开始习惯性地以“打破常规”的视角审视每一个系统时,你就已经入门了。
