逻辑漏洞 —— 无效防重放措施绕过
一、实验基本信息
实验名称:逻辑漏洞 —— 无效的防重放措施绕过(基于 bWAPP 靶场) 实验目的:理解基于随机 salt 字段的防重放与 CSRF 防护原理,掌握 Burp Suite 中 Session Handling Rules 与 Macros 功能配置方法,完成带动态 salt 字段的登录请求暴力破解,验证防护机制的绕过方法。 实验环境:靶场为 bWAPP(Broken Auth. - Password Attacks,medium 级别),工具使用 Burp Suite。
二、实验原理
1. 防护机制分析
本次实验中,bWAPP 中级密码攻击模块采用动态随机 salt 字段作为防重放措施。每次加载登录页面时,服务器会生成一个唯一的随机字符串 salt,并以隐藏表单字段的形式嵌入 HTML 响应中。用户提交登录请求时,必须携带本次会话的 salt 值,服务器会校验该值的有效性,若请求中 salt 值与服务器当前会话的 salt 不匹配,则返回 Incorrect salt! 错误,以此阻止重放攻击和 CSRF 攻击。
2. 绕过思路分析
该防护机制存在设计缺陷,服务器仅校验 salt 的有效性,未对 salt 的使用次数做限制。攻击者可在每次发送登录请求前,先向服务器发起一次请求获取最新有效 salt 值,再将获取到的 salt 值带入后续暴力破解请求中,即可绕过校验。通过 Burp Suite 的 Session Handling Rules 和 Macros 功能,可实现这一流程的自动化,为每次暴力破解请求自动更新并携带有效 salt。
三、实验步骤
步骤 1:环境准备与抓包验证
启动 bWAPP 靶场,选择 Broken Authentication - Password Attacks 模块,将安全级别设置为 medium。打开 Burp Suite 并开启代理,配置浏览器代理后访问登录页面,输入任意用户名和密码(如 test/test),提交后抓取登录 POST 请求。将该请求发送至 Repeater 模块,直接重放请求,服务器返回 Incorrect salt! 错误,确认 salt 校验机制生效。



步骤 2:创建宏自动获取 salt
进入 Burp Suite 的 Settings,找到 Sessions 选项下的 Session handling rules,点击 Add 新建规则,命名为 Auto_Get_Salt。在 Rule actions 中点击 Add,选择 Run a macro,再点击 Add 打开宏录制器,选择登录页面的 GET 请求(该请求返回包含 salt 的页面),点击 OK 创建宏。随后点击 Configure item,再点击 Add,设置参数名为 salt,通过正则表达式从响应中提取隐藏字段的 salt 值,勾选 Update current request with parameters matched from macro response,仅更新 salt 参数。


步骤 3:配置会话规则作用域
切换至 Scope 选项卡,勾选 Repeater 和 Intruder 工具,选择 Use custom scope,添加靶场 IP 地址或域名,限定会话规则的生效范围。






步骤 4:验证规则可用性
返回 Repeater 模块,再次发送原登录请求,此时服务器不再提示 salt 错误,而是返回 Invalid credentials,说明 salt 已实现自动更新,规则配置有效。




步骤 5:配置 Intruder 暴力破解
将验证有效的登录请求发送至 Intruder 模块,攻击模式选择 Cluster bomb,标记 login 和 password 为变量,分别加载用户名字典和密码字典。将线程数设置为 1,避免多线程导致 salt 竞争失效,启动攻击后观察响应包,找到包含 Successful login! 的条目,即为有效账号密码。
四、实验结果
通过配置 Burp Suite 宏功能,成功实现每次请求自动获取并携带有效 salt,绕过了服务器的 salt 校验机制。在 Intruder 模块中完成暴力破解攻击,成功爆破出有效登录凭证,验证了该防护措施的无效性。实验过程中,单线程模式下请求有序执行,每次爆破均携带最新有效 salt,确保攻击顺利完成。
五、问题分析与讨论
1. 防护机制缺陷
该防护仅校验 salt 的有效性,未设置 salt 一次性失效机制,导致 salt 可被重复使用;同时 salt 未与用户会话强绑定,攻击者可通过自身会话获取 salt 并用于暴力破解,防护逻辑存在明显漏洞。
2. 实验关键问题说明
实验中必须将线程数设置为 1,因为宏功能为单线程执行,多线程攻击会导致不同请求同时调用宏获取 salt,出现 salt 被抢占、失效的情况。若正则表达式提取 salt 失败,可重新获取响应,调整正则表达式的前后缀,确保精准匹配 salt 字段值。
六、安全加固建议
服务器应设置 salt 字段为一次性有效,使用后立即失效,防止被复用;将 salt 字段与用户会话 ID(Cookie)强绑定,确保每个会话的 salt 仅对当前会话有效。同时增加登录错误次数限制、图形验证码、IP 锁定等防暴力破解机制,采用标准 CSRF Token 方案,结合多重防护手段提升安全性。
七、实验总结
本次实验围绕 bWAPP 靶场无效防重放措施绕过展开,深入理解了动态 salt 防护机制的原理与缺陷,熟练掌握了 Burp Suite 中 Session Handling Rules 和 Macros 功能的配置与使用方法。实验证实,仅依赖动态 salt 无法有效抵御重放攻击和暴力破解,安全防护需结合一次性失效、会话绑定、访问限制等多层机制。通过本次实操,提升了对 Web 逻辑漏洞成因、绕过思路的认知,以及安全测试与防护设计的实践能力。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)