mllamazares/dvwa-modsec-arena
GitHub: mllamazares/dvwa-modsec-arena
本地搭建带有ModSecurity WAF保护的DVWA靶场环境,通过双端口对比模式帮助理解WAF防护机制和练习绕过技术。
Stars: 0 | Forks: 0
# 🧱 DVWA + ModSecurity WAF 竞技场
快速搭建一个本地环境,运行受 [ModSecurity WAF](https://github.com/coreruleset/modsecurity-crs-docker) 保护并使用 [OWASP Core Rule Set](https://coreruleset.org/) 的 [DVWA (Damn Vulnerable Web App)](https://github.com/digininja/DVWA)。
提供了两个端点,以便您对比有无 WAF 时的行为:
| 端点 | 端口 | WAF |
|---|---|---|
| `http://localhost:7979` | 7979 | ModSecurity CRS |
| `http://localhost:7978` | 7978 | 无 |
认证已禁用 —— 无需登录。
## 设置
1. **克隆仓库:**
git clone https://github.com/mllamazares/dvwa-modsec-arena.git
cd dvwa-modsec-arena
2. **启动环境:**
PARANOIA=1 ANOMALY_INBOUND=5 ANOMALY_OUTBOUND=6 docker compose up
等待 `setup` 容器打印出 `Database initialized successfully.`
3. **访问应用:**
- 有 WAF:`http://localhost:7979`
- 无 WAF:`http://localhost:7978`
要完全重置数据库并重新开始:
```
docker compose down -v
```
## 测试
### 标准查询(应通过两个端点)
```
curl -I http://127.0.0.1:7979/
curl -I http://127.0.0.1:7978/
```
预期:`HTTP/1.1 200 OK`
### 恶意查询(被 WAF 拦截,无 WAF 时允许)
**SQL 注入:**
```
# 经过 WAF — 拦截
curl -I "http://127.0.0.1:7979/vulnerabilities/sqli/?id=1'%20OR%20'1'='1&Submit=Submit"
# 直接 — 允许
curl -I "http://127.0.0.1:7978/vulnerabilities/sqli/?id=1'%20OR%20'1'='1&Submit=Submit"
```
预期:`403 Forbidden` (WAF) vs `200 OK` (直连)
**XSS:**
```
# 经过 WAF — 拦截
curl -I "http://127.0.0.1:7979/vulnerabilities/xss_r/?name="
# 直接 — 允许
curl -I "http://127.0.0.1:7978/vulnerabilities/xss_r/?name="
```
预期:`403 Forbidden` (WAF) vs `200 OK` (直连)
## 日志
查看 WAF 日志(包含触发的规则详情):
```
docker compose logs -f waf
```
ModSecurity 审计日志也以 JSON 格式挂载在本地的 `./modsec-logs/audit.log`。
标签:AppImage, BurpSuite集成, CISA项目, Docker, Docker Compose, DVWA, HTTP安全, ModSecurity, OPA, OWASP CRS, OWASP核心规则集, TGT, WAF, Web安全, Web应用防火墙, XSS, 安全测试, 安全防御评估, 安全防护, 攻击性安全, 攻防演练, 数据展示, 本地环境, 漏洞情报, 漏洞演练, 红队, 网络安全, 蓝队分析, 规则测试, 请求拦截, 跨站脚本攻击, 隐私保护, 靶场