发布时间:2026/8/2 6:03:46
Burp Suite宏实战:自动化破解动态Token登录防护 1. 项目概述与核心痛点在Web应用安全测试尤其是渗透测试和CTF比赛中我们经常会遇到一种让人头疼的防御机制动态Token登录页。这种页面的登录表单里除了常规的用户名和密码字段还会包含一个由服务器动态生成的、每次刷新页面都会变化的Token通常叫csrf_token、nonce或authenticity_token。这个Token会被提交到后端进行验证如果提交的Token与服务器会话中存储的不一致登录请求就会被直接拒绝。这意味着你无法像测试静态登录页那样简单地用Burp Intruder挂上一个密码字典就开始“爆破”——因为每次请求的Token都是新的、无效的你的所有攻击尝试都会因为Token验证失败而告终。这就是所谓的“无效爆破”你对着一个不断变化的锁孔用再多的钥匙密码也是徒劳。我遇到过太多新手朋友包括一些刚开始打CTF的选手卡在这种动态Token的登录页面前要么手动复制粘贴Token累个半死要么就干脆放弃这个测试点。其实Burp Suite早就为我们准备了优雅的解决方案宏Macros。宏可以自动化地执行一系列预定义的HTTP请求并从中提取我们需要的数据比如Token然后在后续的攻击请求中自动替换。今天我就手把手带你用Burp的宏功能彻底搞定动态Token登录页的自动化测试。为了让教程更直观我们会以经典的DVWADamn Vulnerable Web Application靶场作为实战环境因为它自带一个典型的动态Token登录机制在低安全级别下默认关闭我们会手动开启高安全级别的登录CSRF防护来模拟。学完这篇你不仅能拿下DVWA更能将这套方法应用到任何带有类似防护的真实网站或CTF题目中。2. 环境准备与目标分析2.1 搭建实战靶场DVWA首先我们需要一个练习环境。DVWA是一个故意设计存在漏洞的PHP/MySQL Web应用非常适合学习和练习Web安全技术。安装方式选择一体化环境推荐新手使用XAMPP、WAMP或PHPStudy。以XAMPP为例下载安装后将DVWA的源码解压到htdocs目录下例如C:\xampp\htdocs\dvwa。然后启动Apache和MySQL服务。Docker方式推荐熟悉Docker的用户执行命令docker run --rm -it -p 80:80 vulnerables/web-dvwa即可快速拉起一个DVWA实例。手动部署需要自己配置PHP环境和MySQL数据库并导入DVWA的SQL文件。DVWA初始配置访问http://localhost/dvwa/或你的服务器IP你会看到DVWA的安装页面。数据库设置如果使用XAMPP数据库用户通常是root密码留空主机为localhost。点击“Create/Reset Database”按钮。登录默认用户名admin密码password。设置安全级别登录后在左侧找到“DVWA Security”页面。为了模拟动态Token场景我们需要将安全级别设置为“High”。在High级别下登录表单会启用CSRF Token保护。注意部分DVWA版本在High级别下不仅登录页其他功能如SQL注入的请求也会加入Token这会让我们的测试更贴近真实复杂场景。如果只是为了演示登录爆破也可以修改DVWA源码单独为登录页添加Token模拟。2.2 分析目标动态Token登录请求流程设置好DVWA High安全级别后退出登录或打开隐私窗口重新访问登录页http://localhost/dvwa/login.php。用Burp Suite抓取这个登录请求确保Burp代理已开启浏览器配置了Burp的代理。首次请求GET /login.phpGET /dvwa/login.php HTTP/1.1 Host: localhost ... 其他请求头服务器返回的响应HTML中表单里会包含一个隐藏的input字段form actionlogin.php methodpost input typetext nameusername placeholderUsername input typepassword namepassword placeholderPassword input typehidden nameuser_token valuea1b2c3d4e5f67890abcdef1234567890 br / input typesubmit valueLogin /form这个user_token的值示例中的a1b2c3d4e5f67890abcdef1234567890就是动态Token每次刷新页面都会变。登录请求POST /login.php如果我们输入用户名admin和密码test错误的密码并提交Burp会抓到POST /dvwa/login.php HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 85 Cookie: PHPSESSIDyour_session_id usernameadminpasswordtestuser_tokena1b2c3d4e5f67890abcdef1234567890LoginLogin可以看到正确的Token被一并提交了。如果我们在Intruder中直接爆破密码但Token不变服务器会返回错误可能是重定向回登录页或提示Token无效。核心问题我们需要在每次发送爆破请求Payload之前先自动获取一次最新的Token并将其填入当次请求中。这就是Burp宏和会话处理Session Handling Rules要帮我们做的事。3. Burp宏的工作原理与配置详解3.1 什么是Burp宏你可以把Burp宏理解为一组录制的、可重复播放的HTTP请求序列。它最常见的用途就是在会话Session处理中用于在发送其他请求之前先执行一些“预备动作”比如访问登录页面获取新的CSRF Token。执行登录操作获取有效的身份认证Cookie。从服务器的响应中提取特定的数据如Token、Cookie值。然后Burp的会话处理规则会利用宏提取到的数据自动更新后续发出的请求。这样像Intruder、Scanner这些工具发出的每一个请求在发出前都会先“播放”宏来获取最新Token从而实现全自动化测试。3.2 创建获取Token的宏我们首先创建一个用于获取登录页Token的宏。确保流量经过Burp浏览器配置好Burp代理并打开Burp的拦截Intercept或确保流量在历史记录Proxy - HTTP history中可见。获取登录页请求在浏览器中访问http://localhost/dvwa/login.php。在Burp的HTTP历史记录中找到这条GET /dvwa/login.php的请求。发送到宏编辑器右键点击这条GET请求选择“Send to Macro Recorder”。这里有个关键点我们只发送GET /login.php这个请求而不是包含Token提交的POST请求。因为宏的目的是“获取”Token而不是“使用”Token去登录。登录动作即验证密码对错是我们后续要用Intruder去测试的。录制并配置宏这会打开“Macro Recorder”窗口。点击“Configure item”按钮进入宏的详细配置。宏编辑器这里列出了宏包含的请求目前只有一条GET请求。我们需要告诉Burp如何从这次请求的响应中提取Token。添加提取项在宏编辑器下方点击“Add”按钮添加一个自定义参数提取项。参数名称填写user_token。这个名称可以自定义但建议和表单字段名一致便于理解。提取位置由于Token在响应的HTML正文中我们选择“Response body”。提取方式Token通常在一个HTML标签的value属性里。我们选择“Regex”正则表达式来提取。输入正则表达式我们需要编写一个能匹配name\user_token\后面value属性值的正则表达式。一个比较健壮的表达式是name\user_token\ value\([a-fA-F0-9]{32})\。name\user_token\ value\匹配固定的字符串部分。([a-fA-F0-9]{32})是捕获组匹配32位的十六进制字符串DVWA的Token格式。括号()内的内容就是我们要提取的值。如果目标网站的Token格式不同比如长度不定、包含其他字符你需要调整这个正则表达式。可以先用“Test”功能验证提取是否正确。测试提取在输入正则表达式后点击“Test”按钮Burp会应用这个正则表达式到当前宏请求的响应中并显示提取结果。确认提取到的是正确的Token值。保存宏点击“OK”保存提取配置再点击“OK”保存整个宏。给它起个易懂的名字比如“DVWA_Get_Login_Token”。实操心得正则表达式的编写是宏配置的核心也是容易出错的地方。一个技巧是先在Proxy历史记录里右键点击登录页的响应选择“Show response in browser”然后在浏览器查看页面源代码精确找到Token所在的HTML上下文再构思正则表达式。使用更精确的上下文可以减少匹配错误例如input type\hidden\ name\user_token\ value\([^\])\可以匹配value属性里任意非引号字符更通用。3.3 配置会话处理规则Session Handling Rules宏创建好了但Burp还不知道什么时候该用它。这就需要通过会话处理规则来调度。打开会话处理规则在Burp顶部菜单栏进入“Project options”-“Sessions”标签页。添加新规则在“Session handling rules”区域点击“Add”按钮。给规则起名如“Auto-Update DVWA Token”。设置规则作用范围Scope点击“Scope”标签页。这里定义该规则对哪些URL生效。在“URL Scope”部分选择“Use suite scope”通常就够用但为了精确和避免干扰其他测试建议选择“Include all URLs”。更佳实践是在“Include in scope”中添加我们的目标URL例如^http://localhost/dvwa/.*。这样可以确保规则只影响DVWA靶场不影响你同时测试的其他网站。定义规则动作Rule Actions点击“Rule Actions”标签页点击“Add” -“Run a macro”。在弹出的窗口中选择我们刚才创建的宏“DVWA_Get_Login_Token”。接下来是关键配置“Update current request with parameters from macro response”。勾选这个选项后下方会出现参数映射设置。我们需要将宏提取到的参数user_token更新到当前请求的哪个位置参数处理“Update only the following parameters”: 勾选此项。在参数表格中点击“Add”。“Parameter name”: 填写user_token。这指的是当前即将发出的请求比如Intruder的爆破请求中需要被替换的参数名。“Macro parameter”: 选择user_token。这指的是从宏响应中提取出来的那个参数值。这个配置的意思是在发送每一个匹配规则作用范围的请求之前先运行“DVWA_Get_Login_Token”宏从最新的登录页响应中提取出user_token的值然后用这个新值替换掉当前请求中的user_token参数。处理Cookie可选但重要动态Token通常和会话Session绑定。获取Token的GET请求和提交Token的POST请求必须处于同一个会话中即拥有相同的PHPSESSIDCookie否则服务器会认为Token无效。因此我们需要确保宏执行时使用的Cookie能被传递到后续请求中。在“Run a macro”动作的配置窗口里找到“Use cookies from the macros final response in the current request”。务必勾选此项。这样宏请求中服务器返回的Set-Cookie头包含最新的PHPSESSID就会被Burp捕获并自动用于更新当前请求的Cookie头保证会话一致性。保存规则一路点击“OK”保存规则。确保你的新规则在列表中是启用Enabled状态。你可以通过规则列表右侧的“顺序”箭头调整优先级确保它在其他可能冲突的规则之前或之后执行。4. 使用Intruder进行自动化密码爆破实战环境、宏、规则都已就绪现在让我们用Intruder来一场真正的、针对动态Token登录页的自动化爆破。捕获登录请求在DVWA登录页输入用户名admin和一个任意密码比如123点击登录。在Burp的Proxy历史记录中找到这条POST /dvwa/login.php请求。发送到Intruder右键点击该请求选择“Send to Intruder”。配置攻击类型与载荷位置切换到Intruder标签页再进入“Positions”子标签。点击“Clear §”清空所有默认标记。我们只需要标记两个变量位置将password参数的值123标记为Payload 1。这是我们要爆破的密码字典位置。注意user_token参数的值不要标记因为它会被我们刚才配置的会话处理规则自动更新。如果你标记了它Intruder反而会用Payload去覆盖它导致规则失效。用户名username参数我们保持为固定的admin。所以最终请求模板应该是POST /dvwa/login.php HTTP/1.1 ... usernameadminpassword§123§user_token...LoginLoginuser_token处是一个具体的值但未被§包围。攻击类型Attack type选择“Sniper”即可。因为我们只有一个变量密码在变化。配置Payloads切换到“Payloads”子标签。在“Payload set”处选择1因为我们只标记了一个位置。在“Payload type”处根据你的字典来源选择。例如选择“Simple list”然后在下方列表中添加或粘贴你的密码字典比如password,123456,admin123,letmein等等。你也可以从文件加载。开始攻击点击右上角的“Start attack”按钮。Intruder攻击窗口会弹出。关键观察点查看每个请求的user_token参数。你会发现每一行的Token值都不同这就是会话处理规则和宏在起作用。Intruder在发送每个请求前都自动执行了一次宏获取了新的Token并替换了进去。观察响应Response。你可以对响应进行排序如按状态码、长度。登录成功的响应通常与其他失败响应不同可能是状态码302重定向到首页或者响应长度明显不同或者包含“Welcome”、“Logout”等关键字。分析结果在DVWA High安全级别下即使用正确密码password登录响应也可能因为其他防护机制如登录失败延迟而显得复杂。但通过对比响应长度、状态码或搜索响应中的特定关键字如“Login failed”你依然可以找出成功的那个请求。找到密码为password的那一行其响应很可能与其他行不同例如长度更长因为包含了登录后的页面内容。至此你已经成功实现了对动态Token登录页的自动化密码爆破。Intruder不再是“无效爆破”而是变成了一个智能的、能自动应对Token变化的攻击工具。5. 高级技巧与深度排查指南掌握了基础流程我们再来深入一些高级场景和常见问题排查这些是实战中真正提升效率的关键。5.1 处理更复杂的Token交互流程有些网站的Token机制更复杂例如多步Token获取Token需要先访问页面A再从页面A的响应中提取一个参数去请求API B才能拿到最终的登录Token。Token加密或编码Token不是明文可能是Base64编码、哈希值或加密字符串需要解密后才能使用。Token与其他参数绑定Token值可能依赖于用户名、时间戳或其他一次性随机数。应对策略多请求宏在创建宏时你可以录制多个连续的请求。Burp会按顺序执行它们。你可以在最后一个请求的响应中提取最终需要的Token。使用扩展Extender对于需要解密、编码或复杂计算的场景Burp的宏可能力不从心。此时可以编写Burp扩展使用Python或Java。例如你可以用Python扩展在宏获取到原始数据后调用自定义函数进行处理再将结果返回给会话处理规则。结合“Engagement tools”对于需要先进行一些计算如JavaScript执行才能得到Token的页面可以尝试使用Burp的“Engagement tools - Find scripts”功能来分析页面中的JS或者甚至使用“Burp’s embedded browser”如果可用来让页面JavaScript正常执行后再抓取请求。不过内嵌浏览器有时会失败正如热词中提到的“burp 打开内嵌浏览器失败”这时可能需要依赖静态分析或手动模拟JS逻辑。5.2 会话处理规则的优化与调试规则作用域Scope精确定义不合理的Scope会导致宏在不需要的请求上运行拖慢测试速度甚至干扰其他测试。务必使用正则表达式精确限定目标URL。例如如果只针对登录可以设为^https?://www\.target\.com/login\.php。调试宏和规则Burp提供了强大的调试功能。在“Sessions”标签页的“Session Handling Rules”编辑器里有一个“Test”按钮。你可以输入一个目标请求比如你的Intruder攻击请求模板然后点击“Test”Burp会逐步展示规则应用过程是否匹配规则、执行了哪个宏、提取到了什么参数、最终修改后的请求是什么样子。这是排查规则是否生效的利器。处理登录后的会话我们的例子只处理了登录时的Token。有些网站登录成功后后续的每一个操作如修改资料、发表评论都需要携带新的Token。这时你需要创建另一个宏专门用于在已登录状态下从主页面或特定API获取操作Token并配置相应的会话规则作用于那些操作请求的URL范围。5.3 常见问题排查实录问题1Intruder攻击时Token没有更新所有请求的Token都一样。可能原因1会话处理规则未启用或Scope不匹配。检查规则是否勾选“Enabled”并检查你的攻击请求URL是否在规则的Include范围内。可能原因2宏的Token提取失败。去“Macro Editor”里选中你的宏点击“Edit”再点击“Test”按钮看是否能成功提取Token。可能是正则表达式写错了或者页面结构变了。可能原因3Cookie未同步。确保在“Run a macro”动作配置中勾选了“Use cookies from the macros final response”。没有这个获取Token的请求和提交Token的请求可能不在同一个会话导致Token无效。问题2宏执行了Token也更新了但服务器还是返回Token错误。可能原因1Token绑定其他信息。有些Token不仅与会话绑定还可能和用户名、时间戳甚至客户端指纹有关。你需要分析获取Token的请求看是否提交了其他隐藏字段这些字段在登录请求中也需要一并提交且保持同步。可能原因2请求顺序或时机问题。极少数情况下服务器可能检查请求间隔如果获取Token和提交登录的间隔太短如同毫秒可能被怀疑是自动化脚本。可以在会话规则中为宏添加一个延迟在“Macro Recorder”配置编辑宏时可以给每个请求添加延迟。可能原因3Token验证逻辑更复杂。比如Token是一次性的用过即废。那么你的宏就需要在每一个Intruder请求前都执行一次。我们目前的配置正是这样做的“Update current request”。但如果网站要求先获取Token A再用Token A去换Token B才能登录那你的宏就需要包含两个请求。问题3使用宏后Intruder攻击速度变得非常慢。这是正常现象。因为每发起一个攻击请求Burp都要先额外执行一次甚至多次宏请求获取Token。这相当于把请求量翻倍或更多。优化建议精简宏包含的请求只保留获取Token最少的必要步骤。优化Payload字典减少无效尝试。在Intruder的“Resource Pool”设置中可以适当降低线程数避免对目标服务器造成过大压力或触发速率限制。6. 扩展应用在Burp Scanner等其他工具中使用会话处理规则是Burp Suite全局级别的配置。这意味着不仅Intruder受益Burp的其他工具也能自动应用这些规则。Burp Scanner主动扫描当你启动主动扫描时Scanner发出的请求也会先匹配会话处理规则。如果你的规则配置正确Scanner在爬取和审计登录后的功能时也能自动处理动态Token使得扫描可以深入到需要认证的区域。Repeater重放器在Repeater中手动修改和重放请求时如果请求URL在规则作用域内点击“Send”前Burp也会自动运行宏并更新请求中的Token。这对于手动测试登录后功能非常方便你无需每次手动复制Token。爬虫Spider同样爬虫在爬取受保护区域时也会利用会话规则维持有效的会话状态。要让这些工具生效只需确保两点1) 你的会话处理规则已正确配置并启用2) 你当前Burp的会话Session是已登录状态或者你的规则包含了自动登录的宏。例如你可以创建一个更强大的宏它先执行获取Token的请求再用一组固定凭证如测试账号执行登录POST请求并从登录成功的响应中提取会话Cookie。然后配置规则对所有目标站点的请求都先运行这个“自动登录宏”这样就能让整个Burp Suite都仿佛在一个已登录的状态下工作。通过这篇详细的指南你应该已经彻底掌握了如何利用Burp Suite的宏和会话处理功能来优雅地解决动态Token登录页的自动化测试难题。这套方法的核心思想是“以自动化对抗自动化”将防御机制带来的手动操作成本通过工具配置转嫁回去。记住理解HTTP请求/响应的交互流程、学会分析页面结构提取关键数据、熟练配置Burp这些高级功能是一名安全测试人员从“会用工具”到“精通工具”的必经之路。下次再遇到令人望而生畏的动态Token不妨自信地说没关系我有宏。

相关新闻

2026/8/2 5:58:46

[具身智能-702]:ROSMASTER-M1 的 WIFI 是终端,还是热点?

ROSMASTER-M1(亚博智能,搭载 RDK X5 版本)WiFi 模式说明术语先厘清:AP 模式 热点(发射 WiFi,别人连小车)STA 模式 无线终端(小车去连接路由器 WiFi)1、出厂默认状态✅ …

2026/8/2 5:58:46

微信小程序连接本地MySQL数据库:正确架构与全栈开发实战

1. 项目缘起:为什么要在小程序里连接本地数据库?最近在社区里看到不少朋友在问,微信小程序能不能直接连自己电脑上的MySQL数据库做开发测试。乍一听,这想法挺自然的——本地环境跑得快,调试也方便,不用折腾…

2026/8/2 5:58:46

macOS下载、安装uv-0.12.0(附安装包uv-aarch64-apple-darwin.tar.gz)

文章目录1. uv 简介2. 0.12.0 版本亮点3. 获取安装包4. 快速开始常用命令1. uv 简介 uv 是一款使用 Rust 编写的极速 Python 包与项目管理器(package and project manager),由 Astral 团队(知名 Python 代码检查工具 Ruff 的缔造…

2026/8/2 7:08:53

开源BPM工作流引擎:盘古BPM的DMN决策引擎与核心架构实战

1. 项目概述:一个开源BPM工作流引擎的诞生最近在技术社区里,一个名为“盘古BPM工作流平台”的项目宣布其DMN引擎完全开源,这个消息引起了不少开发者和架构师的关注。如果你正在为业务流程管理、自动化审批或者复杂决策逻辑的实现而头疼&#…

2026/8/2 7:08:53

一文读懂商城支付配置教程(附实操教程)

很多商家做小程序商城,最头疼的就是商城支付配置教程的设置。一、为什么需要这个功能?很多做得好的小程序商城,都把商城支付配置教程用到了极致。二、适用场景以下场景特别适合使用商城支付配置教程:• 日常商城运营:通…

2026/8/2 7:08:53

全预混低氮冷凝锅炉怎么选?

一句话答案&#xff1a;全预混低氮冷凝锅炉的选购核心是看热效率&#xff08;≥107%&#xff09;、NOx排放&#xff08;<30mg/m&#xff09;、调节比&#xff08;≥1:10&#xff09;、水容积&#xff08;<30L非压力容器&#xff09;、模块化能力这5个硬参数&#xff0c;再…

2026/8/2 7:03:52

Ubuntu/WSL2下CUDA与PyTorch GPU版完整安装指南与避坑实践

1. 项目概述&#xff1a;为什么CUDA与PyTorch的安装是AI开发的“第一道坎”如果你刚拿到一块新显卡&#xff0c;或者准备开始学习深度学习&#xff0c;那么“安装CUDA和PyTorch”几乎是你绕不开的第一步。这听起来像是个简单的环境配置问题&#xff0c;但实际操作过的人都知道&…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制&#xff1a;SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰&#xff1f;想为心爱的游戏截图&#xff0c;却发现游戏不支持自定义分辨率…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制&#xff1a;SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰&#xff1f;想为心爱的游戏截图&#xff0c;却发现游戏不支持自定义分辨率…

2026/8/2 1:52:02

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/1 0:03:49

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…