MohammadNiyaz/broken-authentication-testing
GitHub: MohammadNiyaz/broken-authentication-testing
基于 DVWA 和 bWAPP 靶场演示 SQL 注入、会话固定、会话劫持和凭证填充攻击,并提供 OWASP 缓解策略的教学项目。
Stars: 0 | Forks: 0
# 失效的身份认证测试
# 失效的身份认证测试 — DVWA & bWAPP
**编写人:** Mohammad Niyaz Khurshid Alam Shaikh
**实习项目:** NewtonAI 技术学习机会计划
**日期:** 2025 年 9 月
## 概述
本项目侧重于在受控的本地实验环境中,使用 DVWA 和 bWAPP 识别和利用失效的身份认证漏洞,
包括 SQL 注入绕过、会话固定、会话劫持和凭证填充。
缓解策略均根据 OWASP 指南进行记录。
## 目标
- 在安全的实验室中演示常见的失效身份认证攻击技术
- 利用会话管理漏洞(固定和劫持)
- 在 bWAPP 上使用 SQL 注入绕过身份认证
- 使用 Burp Suite Intruder 模拟凭证填充
- 针对每种漏洞提出符合 OWASP 标准的缓解措施
## 工具与环境
| 工具 | 用途 |
|---|---|
| DVWA (Damn Vulnerable Web App) | 会话攻击的实验靶机 |
| bWAPP | SQL 注入和凭证填充的实验靶机 |
| Burp Suite (Proxy + Intruder) | 请求拦截、篡改和自动化攻击 |
| Docker | DVWA 和 bWAPP 的本地部署 |
| Firefox 浏览器开发者工具 | Cookie 检查和会话操作 |
**实验环境搭建:**
```
# DVWA
docker run -d -p 8080:80 vulnerables/web-dvwa
# 访问 http://localhost:8080 | Login: admin / password
# bWAPP
docker run -d -p 8080:80 raesene/bwapp
# 访问 http://localhost:8080 | Login: bee / bug
```
## 演示的漏洞
### 1. 会话固定 — DVWA
**工作原理:**
- 攻击者从目标站点获取一个 Session ID
- 诱骗受害者在登录前使用该受攻击者控制的 Session ID
- 由于 DVWA 在登录后不会重新生成 Session ID,攻击者可以重用该 ID 来获取访问权限
**关键发现:** DVWA 在成功登录后未能重新生成新的 `PHPSESSID`,导致登录前的 Session ID 在认证后仍然有效。
**影响:** 无需受害者的密码即可完全接管账户。
### 2. 会话劫持 — DVWA
**工作原理:**
- 受害者登录并收到一个有效的 `PHPSESSID`
- 攻击者(通过网络嗅探、XSS 或恶意软件)窃取此 Session ID
- 攻击者在自己的浏览器 Cookie 中设置窃取的 ID,从而获得经过认证的访问权限
**关键发现:** DVWA 没有将 Session ID 与 IP 或 User-Agent 绑定,导致被窃取的会话可以被重放。
**影响:** 未经授权的账户访问和敏感数据泄露。
### 3. SQL 注入登录绕过 — bWAPP (SQLI LoginHero)
**使用的 Payload:**
用户名: ' OR 1=1 -- -
密码: (空)
**工作原理:** 注入的 Payload 将 SQL 查询转换为始终为真的条件,从而完全绕过密码验证。
**关键发现:** bWAPP 通过 Burp Suite Repeater 接受了该 Payload,并返回了成功的登录响应:*"Welcome Neo, how are you today?"*
**影响:** 未经授权的登录、权限提升,以及潜在的完整数据库访问权限。
### 4. 凭证填充 — bWAPP
**工作原理:**
- 攻击者准备一份泄露的用户名/密码对列表
- Burp Suite Intruder (Cluster Bomb) 使用每对凭证自动进行登录尝试
- bWAPP 中没有速率限制或 CAPTCHA,允许攻击肆意运行
**关键发现:** 有效的凭证对(例如,`bee:bug`)返回了成功的登录响应,可通过 Burp Intruder 中的响应长度差异来识别。
**影响:** 在用户重复使用密码的实际应用程序中实现大规模账户接管。
## 发现总结
| 漏洞 | 目标 | 严重性 | 关键发现 |
|---|---|---|---|
| 会话固定 | DVWA | 高 | 登录后未重新生成 Session ID |
| 会话劫持 | DVWA | 高 | 会话未与设备/IP 绑定 |
| SQL 注入绕过 | bWAPP | 严重 | 始终为真的查询绕过了身份认证 |
| 凭证填充 | bWAPP | 高 | 没有速率限制或账户锁定机制 |
## 缓解策略(OWASP 指南)
| 漏洞 | 快速修复 | 最佳实践 |
|---|---|---|
| 会话固定 | 在登录时重新生成 Session ID | 使用 `session_regenerate_id(true)` 生成新的 Session ID |
| 会话劫持 | 启用 `HttpOnly` + `Secure` Cookie 标志 | 将会话与 IP/User-Agent 绑定;强制使用 HTTPS |
| SQL 注入 | 转义用户输入 | 使用参数化查询 / 预处理语句 |
| 凭证填充 | 强制使用独立的高强度密码 | 在登录时启用 MFA、速率限制和 CAPTCHA |
## 关键学习要点
- 会话管理漏洞通常对用户是不可见的,但极易被攻击者利用
- 登录表单中的 SQL 注入只需一个格式错误的输入即可完全绕过身份认证
- 如果没有速率限制或 CAPTCHA,自动化的凭证填充攻击将轻而易举
- 纵深防御:始终将安全的会话处理 + 参数化查询 + MFA 结合使用
## 免责声明
## 参考文献
- [OWASP 失效的身份认证](https://owasp.org/www-project-top-ten/2017/A2_2017-Broken_Authentication)
- [OWASP SQL 注入预防备忘单](https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html)
- [OWASP 凭证填充预防](https://cheatsheetseries.owasp.org/cheatsheets/Credential_Stuffing_Prevention_Cheat_Sheet.html)
- [Burp Suite 文档](https://portswigger.net/burp/documentation)
标签:Burp Suite, bWAPP, CISA项目, Docker, DVWA, HTTP拦截, OPA, Web安全, 会话劫持, 会话固定, 凭证填充, 多线程, 安全实验, 安全测试, 安全防御评估, 安全防护, 攻击性安全, 攻击模拟, 漏洞修复, 网络安全, 网络安全培训, 自动化攻击, 蓝队分析, 请求拦截, 身份验证破缺, 隐私保护, 靶场, 驱动签名利用