ctrl-sid2099/auth-bypass-bruteforce-logic-flaw

GitHub: ctrl-sid2099/auth-bypass-bruteforce-logic-flaw

通过在暴力破解过程中交替注入有效登录请求来重置失败计数器,从而绕过基于尝试次数限制的身份验证防护机制。

Stars: 0 | Forks: 0

# 🔐 通过逻辑缺陷绕过身份验证 – 工具辅助漏洞利用 (PortSwigger 实验室) 1 lab ## 📌 概述 本项目演示了暴力破解防护中的一个逻辑缺陷,即在成功登录后登录尝试计数器会重置。 目标是利用此行为暴力破解受害者账户,同时通过定期登录有效账户 来绕过锁定机制。 ## 🧠 理解漏洞 应用程序实现了一种保护机制: - 在 2 次失败的登录尝试后,后续的尝试将被阻止。 - 但是,成功的登录会重置尝试计数器。 👉 这就产生了一个缺陷: 如果我们每 2 次失败尝试后插入一次有效登录,我们就可以完全绕过锁定机制。 ## ⚙️ 逐步漏洞利用 ### 1️⃣ 分析登录机制 - 首先发送使用有效用户名和随机密码的登录尝试。 - 观察行为: - 2 次失败尝试后 → 后续尝试被阻止。 - 成功登录后,计数器重置。 2 2-attemempts ✅ 结论: 我们必须确保每第三个请求是一次有效登录,以保持攻击持续进行。 ## 2️⃣ 自动化字典注入 为了自动化此模式,我构建了一个自定义 Python 工具: 📄 查看此[工具](https://github.com/ctrl-sid2099/auth-bypass-bruteforce-logic-flaw/blob/main/wordlist-injector)。 ### 🔧 它的功能: - 接收一个字典文件 - 每隔 N 行注入一个特定密码 - 包含: - 文件验证 - 输入验证 - 自定义输出处理 ### 💡 使用逻辑: - 每 2 次密码尝试后 → 插入一个已知的有效密码 - 示例: pass1 pass2 VALID_PASS pass3 pass4 VALID_PASS 这确保了登录尝试计数器不断被重置。 ## 3️⃣ 构建攻击模式 我们需要交替使用: - 目标用户 → carlos - 有效用户 → wiener 模式: ``` carlos → attempt 1 carlos → attempt 2 wiener → valid login (reset) carlos → attempt 3 carlos → attempt 4 wiener → valid login (reset) ``` 实现步骤: - 使用此脚本来准备密码注入 5 user-txt ## 4️⃣ 配置 Burp Suite Intruder ### 🎯 关键设置: - Positions 选项卡: - 为以下项设置 payload 位置: - Username - Password - Payloads: - 使用注入了有效密码的生成字典 6 set-position ## ⚠️ Resource Pool 配置(重要) 设置 Resource Pool = 每次发送 1 个请求 7 resourcePool-1 ### ❓ 为什么? 如果并行发送多个请求: - 服务器可能会乱序处理它们 - “重置”请求(有效登录)可能不会恰好在 2 次失败后发生 - 这会破坏绕过逻辑 👉 通过强制顺序请求,我们确保: ``` fail → fail → success → fail → fail → success ``` ✅ 这保证了计数器的正确重置。 ## 5️⃣ 识别有效凭证 在 Burp Intruder 中: - 过滤结果: - Username = wiener(以定位重置点) - 然后: - 按 HTTP 状态代码对响应进行排序 🔍 要寻找的内容: - 302 Found → 表示成功登录 8 success 这有助于识别: - 有效的登录响应 - 最终找到 carlos 的正确密码 ## 6️⃣ 账户接管 - 使用发现的凭证 - 通过 My Account 面板登录 ✅ 成功的身份验证确认了漏洞利用成功 9 end ## 🧩 核心要点 - 暴力破解防护可能会因为逻辑缺陷而失效,而不仅仅是由于弱阈值 - 如果重置机制未与 session/用户上下文正确绑定,就可能被滥用 - 顺序请求控制在漏洞利用中至关重要
标签:PoC, PortSwigger, Python自动化, Web安全, 字典注入, 安全测试, 并发限制绕过, 攻击性安全, 暴力破解, 登录安全, 网络安全, 蓝队分析, 身份验证绕过, 逆向工具, 逻辑漏洞, 隐私保护