1. 项目概述:从“脚本小子”到“赏金猎人”的必经之路
“挖漏洞”这个词,在网络安全圈里,听起来既神秘又酷炫。很多新人朋友一上来就想复现那些炫酷的远程代码执行(RCE)或者拿到服务器权限,心情可以理解,但路径往往走偏了。我见过太多人,装了个Kali Linux,打开Burp Suite,对着一个网站就是一顿乱戳,结果除了把自己IP封了,啥也没捞着。这就像还没学会走路就想跑马拉松。今天这篇攻略,就是想帮你把这条路捋直了,告诉你一个真正能走通、能出成果的漏洞挖掘学习路径。它不是什么“三天成为黑客”的秘籍,而是一份基于我多年在SRC(安全应急响应中心)和实际攻防中踩坑总结出来的、系统性的“新手村”通关指南。无论你是计算机专业的学生想找点实战项目,还是想转行网安的职场人,亦或是单纯对技术好奇的爱好者,这篇内容都能帮你建立起正确的认知和可操作的第一步。
2. 核心思路:漏洞挖掘不是“碰运气”,而是“规范性狩猎”
很多新手最大的误区,是把漏洞挖掘等同于“测试所有功能点”或者“疯狂Fuzz”。这是一种极其低效且盲目的做法。真正的漏洞挖掘,更像是一个规范的“狩猎”过程:你需要先研究“猎物”(目标系统)的习性、环境和弱点,然后选择合适的“工具”和“方法”,在特定的“路径”上布置“陷阱”,最后耐心等待和分析结果。
2.1 目标选择:别一开始就挑战BOSS
新手最容易犯的错误就是目标太大、太模糊。不要一上来就想着去挖主流互联网巨头(如腾讯、阿里)的漏洞,它们的防御体系非常完善,对新手极不友好,容易打击信心。
正确的起步目标应该是:
- 教育行业SRC(如EDUSRC、高校自建平台) :许多高校的网站、选课系统、OA系统是由学生或外包公司开发的,安全投入相对有限,历史包袱重,是经典的“低垂果实”区域。像“正方教务系统”、“青果教务系统”及其各种定制版本,历史上爆出过大量漏洞。
- 地方政府、事业单位门户网站 :这类网站信息发布功能多,交互逻辑可能比较复杂,但安全开发流程可能不如商业公司严格,存在逻辑漏洞的可能性较大。
- 开源软件/组件 :在本地搭建其测试环境进行审计。这是学习代码审计的绝佳途径,没有法律风险,还能深入理解漏洞原理。
- 合法的漏洞靶场 :如DVWA、bWAPP、WebGoat、Pikachu等,以及国内一些在线的CTF靶场或综合演练平台。它们专门设计用于安全学习,提供从易到难的环境。
注意 :绝对、永远不要在未获得明确书面授权的情况下,对任何非你所有的系统进行任何形式的攻击测试。未经授权的测试是违法行为。所有实战练习必须在自有环境、授权靶场或参与正规的SRC项目(如各大厂商的应急响应中心)下进行。
2.2 心态建设:从“漏洞利用者”转向“漏洞思考者”
不要只满足于使用别人写好的EXP(漏洞利用程序)。当你看到一个公开的漏洞(CVE)时,应该去思考:
- 这个漏洞的根源是什么? 是输入没过滤?是逻辑判断有缺陷?还是组件配置错误?
- 在什么场景下会触发? 需要什么样的用户权限?前后端如何交互?
- 我如何能独立发现这类问题? 它的攻击面(Attack Surface)通常出现在哪里?
- 如果让我来修复,我会怎么做? 思考修复方案能让你更深刻地理解漏洞。
具备这种“思考模式”,你才能从被动复现转向主动发现。
3. 环境与工具准备:打造你的“数字工匠台”
工欲善其事,必先利其器。但工具不在多,在于精和会用。新手切忌沉迷于收集各种炫酷工具。
3.1 核心平台:Kali Linux虚拟机
Kali Linux是公认的渗透测试发行版,集成了大量工具。对于新手,在本地用VMware或VirtualBox搭建一个Kali虚拟机是最佳选择。
安装与基础配置要点:
- 虚拟机网络设置 :建议使用“桥接模式”或“NAT模式”。桥接模式虚拟机会获得一个和你物理机同网段的独立IP,更像一台真实设备;NAT模式则通过物理机共享上网,更安全隔离。新手用NAT即可。
-
更新与汉化(可选)
:安装后首先运行
sudo apt update && sudo apt upgrade -y更新系统。如果需要中文界面,可以安装中文语言包,但建议尽量适应英文环境,因为很多工具输出、错误信息和社区资料都是英文的。 - 快照功能 :在安装配置好基础环境后,务必使用虚拟机的“快照”功能保存一个干净的状态。以后无论实验环境被玩坏成什么样,都可以一键恢复。
3.2 四大必备工具详解
下面这四类工具,构成了Web漏洞挖掘的基石。你需要理解它们各自的作用,而不是机械地点按钮。
3.2.1 信息收集器:Google Hacking + 子域名枚举
在发动任何“攻击”前,你必须尽可能多地了解目标。信息收集决定了你的攻击面有多大。
-
Google Hacking
:利用搜索引擎的高级搜索语法发现敏感信息。例如:
-
site:target.com filetype:pdf搜索目标站点的PDF文件。 -
site:target.com inurl:admin寻找后台管理页面。 -
site:target.com “index of /”寻找目录遍历。
-
-
子域名枚举工具
:
- subfinder / assetfinder :命令行工具,速度快,可与别的工具链集成。
- OneForAll :国产神器,集成了多种枚举方式(证书透明、DNS爆破、搜索引擎等),结果较为全面。
-
在线平台
:如
crt.sh(通过SSL证书查询)、securitytrails.com等。 -
实操技巧
:将收集到的所有子域名保存到一个文本文件(如
subdomains.txt),为后续扫描做准备。
3.2.2 漏洞扫描器:Nuclei + Xray
不要把扫描器当作“神器”,它们只是辅助,核心判断在于人。
-
Nuclei
:基于YAML模板的快速漏洞扫描器。社区模板库极其丰富,从简单的信息泄露到复杂的RCE都有覆盖。它的优势是轻量、快速、可定制。
-
基本用法
:
nuclei -u http://target.com -o result.txt -
进阶用法
:结合子域名列表进行批量扫描:
nuclei -l subdomains.txt -o all_results.txt
-
基本用法
:
-
Xray
:一款优秀的被动式漏洞扫描器。通常与Burp Suite联动使用。
- 核心价值 :它作为Burp的插件,监听Burp的流量,自动对经过的请求进行漏洞检测(如SQLi、XSS、SSRF等)。你手动浏览网站,它就在后台默默分析,非常适合在手动测试时发现一些盲点。
-
配置联动
:在Burp Suite的
Proxy->Options中,将代理指向Xray监听的端口(如7777),即可实现流量转发。
3.2.3 流量拦截与改包神器:Burp Suite
这是你最重要的“双手”,绝大多数Web漏洞的挖掘和验证都离不开它。Community版对新手完全够用。
-
核心功能模块
:
- Proxy(代理) :拦截、查看、修改浏览器和服务器之间的所有HTTP/HTTPS请求响应。这是最常用的功能。
- Repeater(重放器) :将捕获的请求发送到此处,可以手动修改参数后反复发送,观察响应变化,是测试漏洞Payload的“实验台”。
- Intruder(入侵者) :用于自动化攻击,如爆破密码、模糊测试参数、遍历标识符等。
- Scanner(扫描器) :社区版功能有限,可作简单辅助。
-
浏览器配置
:需要将浏览器(如Chrome的SwitchyOmega插件或Firefox的网络设置)的代理设置为
127.0.0.1:8080(Burp默认端口),并安装Burp的CA证书以解密HTTPS流量。
3.2.4 目录与文件发现:Dirsearch / Gobuster
用于发现网站隐藏的目录、备份文件、配置文件等,这些往往是敏感信息泄露的重灾区。
-
Dirsearch
:Python编写的目录扫描工具,字典强大。
-
python3 dirsearch.py -u http://target.com -e php,asp,js,bak,txt,zip
-
-
Gobuster
:Go语言编写,速度更快。
-
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt
-
-
字典选择
:工具自带的字典(如
common.txt)是起点。高阶玩家会针对目标技术栈(PHP/Java/.NET)使用更精准的字典,或自己整理字典。
4. 核心漏洞类型与实战挖掘流程
掌握了工具,我们进入实战。下面以最常见的几种漏洞为例,讲解“如何思考”和“如何操作”。
4.1 信息泄露漏洞:最容易发现的“开门红包”
这类漏洞不是直接攻击,而是因为配置不当或逻辑缺陷,泄露了敏感数据。
-
常见位置
:
-
.git目录泄露:如果网站根目录存在.git文件夹且可访问,可用githack等工具还原源代码。 -
.DS_Store文件(Mac系统生成):可能泄露目录结构。 -
备份文件(如
.bak,.swp,.zip):编辑器自动生成或开发人员遗留。 -
配置文件(如
config.php,web.config):直接访问可能泄露数据库密码、API密钥。 - 错误信息回显:将SQL语句、栈跟踪等详细信息直接返回给用户。
-
-
挖掘方法
:
- 使用Dirsearch/Gobuster进行目录扫描,重点关注上述后缀和目录名。
-
手动尝试常见路径,如
/robots.txt,/sitemap.xml,/phpinfo.php,/admin/,/upload/。 - 观察网站正常与异常时的错误回显差异,尝试触发错误。
4.2 逻辑漏洞:最考验思维的“智力游戏”
逻辑漏洞源于程序业务流程设计缺陷,扫描器很难发现,是白帽子体现价值的关键领域。
-
越权访问(垂直/水平)
:
-
垂直越权
:普通用户访问管理员功能。
测试方法
:登录一个低权限账号,抓取访问管理员功能(如
/admin/addUser)的请求,尝试直接访问或替换Cookie。 -
水平越权
:用户A访问用户B的数据。
测试方法
:在查看“我的订单”、“我的资料”时(URL可能包含
/order?id=123),修改这个id参数为其他值,看是否能访问他人信息。
-
垂直越权
:普通用户访问管理员功能。
测试方法
:登录一个低权限账号,抓取访问管理员功能(如
-
业务逻辑绕过
:
-
支付漏洞
:修改支付金额参数(如
amount=0.01)、重复利用订单号、利用负数导致余额增加等。 关键 :全程抓包,仔细检查每个与金额、状态、数量相关的参数。 - 验证码绕过 :验证码在前端校验、验证码可重复使用、验证码与手机/邮箱不绑定等。 测试方法 :抓取包含验证码的请求,在Repeater中重复发送;或尝试将本次请求的验证码用于另一个会话。
-
密码重置漏洞
:最常见的如通过修改请求中的
email或username参数,将重置链接发送到攻击者邮箱。 测试流程 :完整走一遍密码重置流程,对每个步骤的每个参数进行篡改测试。
-
支付漏洞
:修改支付金额参数(如
4.3 SQL注入漏洞:经久不衰的“经典之王”
虽然现在较少见,但在一些老旧系统、边缘业务中依然存在。
-
手工检测思路(以GET参数为例)
:
- 寻找注入点 :所有用户可控的输入点都是怀疑对象:URL参数、表单字段、Cookie、HTTP头。
-
初步探测
:在参数后添加单引号
‘,观察页面是否报错(数据库错误信息)、显示空白或与正常不同。 -
逻辑测试
:添加
and 1=1和and 1=2。如果1=1时页面正常,1=2时页面异常(如内容消失),则很可能存在数字型注入。 -
联合查询判断
:通过
order by子句猜测列数,例如?id=1 order by 5--,不断递增数字直到报错,报错前的数字就是列数。 -
信息获取
:使用
union select语句,将数据库版本、当前用户、数据库名等信息查询并显示在页面上。例如:?id=-1 union select 1, version(), user(), database()--
- 工具辅助 :使用Burp Suite的Intruder模块,加载SQL注入的Payload字典进行模糊测试(Fuzzing),观察响应长度、状态码和内容的差异。
4.4 跨站脚本漏洞:前端交互的“隐形陷阱”
XSS的核心是“前端代码注入”,让受害者的浏览器执行攻击者的脚本。
-
反射型XSS
:Payload通过一次请求(如URL参数)带入,立即在响应中执行。
-
测试方法
:在所有输入点尝试提交
<script>alert(1)</script>。查看响应中该段脚本是否被原样输出且未被转义。更隐蔽的测试可以使用<img src=1 onerror=alert(1)>。
-
测试方法
:在所有输入点尝试提交
-
存储型XSS
:Payload被保存到服务器(如数据库),当其他用户访问相关页面时触发。
- 测试位置 :留言板、评论框、个人简介、聊天消息、文件上传(文件名)等所有可持久化存储用户输入的地方。
-
DOM型XSS
:漏洞根源在前端JavaScript代码中,不经过服务器响应。
-
测试方法
:需要分析前端JS代码。寻找如
document.write,innerHTML,eval,location.hash,window.name等可以控制输入的点。使用#号后的参数进行测试,如http://site.com/page.html#<script>alert(1)</script>。
-
测试方法
:需要分析前端JS代码。寻找如
5. 漏洞挖掘实战工作流:一次完整的“狩猎”过程
让我们把上面的点串联起来,模拟一次对某个教育类网站(假设为
edu-test.com
)的授权测试。
5.1 第一阶段:信息侦察与测绘
-
子域名发现
:使用
subfinder -d edu-test.com -o subs.txt收集子域。 -
存活检测与端口扫描
:对
subs.txt中的域名,用httpx或nmap快速检测HTTP/HTTPS服务及其常见端口。 -
目录扫描
:对存活的Web服务,使用
gobuster dir进行目录爆破。 -
指纹识别
:使用
whatweb或Wappalyzer(浏览器插件)识别网站用的技术栈(如ThinkPHP 5.0、Spring Boot、Nginx 1.18)。 -
搜索引擎挖掘
:使用
site:edu-test.com配合filetype:,inurl:,intitle:等语法在Google、百度、FoFa、Shodan上搜索敏感信息。
5.2 第二阶段:自动化扫描与初步筛选
-
批量漏洞扫描
:使用
nuclei -l alive_subs.txt -o nuclei_results.txt进行初筛。这一步可能会发现一些已知框架的公开漏洞或明显的配置问题。 - 被动扫描联动 :配置好Burp Suite + Xray。手动浏览网站的所有功能点:注册、登录、搜索、查看、编辑、支付、找回密码等。让Xray在后台分析流量。
5.3 第三阶段:手动深度测试
这是最核心、最耗时的部分,完全依赖你的经验和思维。
- 功能点遍历 :以普通用户身份,系统地走遍网站每一个可点击、可输入的地方。用Burp记录所有请求。
-
参数分析
:在Burp的Proxy历史或Target站点地图中,筛选出携带参数的请求(特别是POST请求)。重点关注:
-
标识符
:
id,uid,orderNo,fileid。 -
金额数量
:
price,amount,quantity。 -
状态参数
:
status,type,isAdmin。 -
文件路径
:
filename,path,url。
-
标识符
:
-
逐个击破
:
- 对每个可疑参数,发送到Repeater。
- 进行SQL注入、XSS的常规Payload测试。
- 尝试修改参数值进行越权测试(水平/垂直)。
- 对业务流程(如购物车->下单->支付)进行顺序、状态、金额的篡改测试。
- 对文件上传点,尝试上传不同后缀、伪造文件头、利用解析漏洞。
5.4 第四阶段:漏洞验证与报告编写
- 验证 :确保漏洞可稳定复现,排除误报。如果是存储型漏洞,要验证其对其他用户的影响。
-
截图与录屏
:使用Burp的
Save to file功能保存请求响应,或使用屏幕录制工具记录复现过程。 -
报告编写
:一份合格的漏洞报告需要清晰、完整。
- 标题 :简明扼要,如“[edu-test.com] 后台管理页面存在未授权访问漏洞”。
- 漏洞等级 :参考通用标准(如Critical/High/Medium/Low)或目标SRC的自定标准。
- 漏洞详情 :包括URL、受影响参数、请求包(Raw格式)、响应包。
- 重现步骤 :一步一步,像教程一样详细。
- 修复建议 :给出具体的修复方案,例如“对访问权限进行会话校验”、“对用户输入进行严格的类型检查和过滤”。
6. 常见问题、排查技巧与避坑指南
这一部分是我多年积累的“血泪经验”,能帮你节省大量时间,避免无用功。
6.1 为什么我的扫描器什么都扫不出来?
-
原因1:目标有WAF(Web应用防火墙)
。WAF会识别扫描器的特征流量并进行拦截。
-
排查
:访问一个不存在的路径,如
/xxxxx123,如果返回一个统一的定制化错误页面(而非服务器默认的404),或者返回状态码不是404,很可能有WAF。 - 应对 :降低扫描速度,设置随机延迟;使用代理池分散请求;尝试修改请求头(如User-Agent)为常见浏览器;手动测试时,使用更隐蔽的Payload或编码绕过。
-
排查
:访问一个不存在的路径,如
-
原因2:字典不够强或目标路径不常见
。
- 应对 :尝试使用更大的字典,或针对目标技术栈使用专用字典(如针对Java的Spring Boot Actuator路径字典)。
-
原因3:扫描器模板不匹配
。Nuclei的模板可能未覆盖该漏洞类型。
- 应对 :不要依赖单一扫描器。结合手动测试,并关注漏洞社区的最新POC。
6.2 Burp Suite抓不到HTTPS包怎么办?
-
确保已安装CA证书
:浏览器访问
http://burp,下载CA证书,并在浏览器和操作系统(或移动设备)的证书信任区安装。 -
检查代理设置
:确认浏览器代理指向了Burp(
127.0.0.1:8080)。 -
检查应用协议
:有些手机App使用了证书绑定(SSL Pinning)或非HTTP协议,Burp可能无法直接解密。需要借助
Frida、Objection等工具进行脱壳和绕过。
6.3 测试时网站把我IP封了怎么办?
-
使用代理
:Burp Suite的
Project options->Connections中可以设置上游代理(如SOCKS代理)。 - 使用VPN或云服务器 :在云服务器(如VPS)上搭建测试环境,从服务器发起请求。
-
降低请求频率
:在Intruder中设置
Pause间隔,模拟真人操作。 - 遵守规则 :如果是SRC测试,严格遵守其测试范围、时间、频率限制。
6.4 感觉无从下手,找不到漏洞点?
- 回归基础 :重新审视信息收集阶段,是否有遗漏的子域名、端口、文件?
- 关注新功能/旧系统 :新上线的功能模块往往测试不充分;而长期未更新的旧系统可能存在已知框架漏洞。
-
代码审计
:如果目标有公开的源代码(如GitHub),尝试进行简单的代码审计,寻找危险函数(如
eval(),system(), 未过滤的SQL拼接)。 - 学习别人的案例 :多逛各大SRC的公开漏洞报告、安全社区(如先知、Seebug、HackerOne的公开报告),看别人是怎么找到漏洞的,模仿其思路。
6.5 法律与道德红线
这是最重要的一条,必须时刻牢记:
- 授权!授权!授权! 没有授权,绝不测试。
- 最小化影响原则 :即使获得授权,也只做必要的验证性测试,避免对业务数据造成破坏、篡改或泄露。
- 保密原则 :在漏洞公开或修复前,不向任何未授权方披露漏洞细节。
- 保护自己 :使用独立的测试环境和虚拟机,避免个人信息泄露。
漏洞挖掘是一条需要极强耐心、学习能力和逻辑思维的道路。它没有捷径,所谓的“速成”都是空中楼阁。真正的成长来自于对每一个漏洞原理的深究,对每一次测试过程的复盘,以及持续不断的学习和动手实践。从搭建第一个靶场开始,从提交第一个有效的漏洞报告开始,一步步构建你的知识体系和实战经验。记住,在这个领域,思考的价值永远大于工具的执行。

3548

被折叠的 条评论
为什么被折叠?



