hetsonii/Chakravyuh
GitHub: hetsonii/Chakravyuh
Chakravyuh 是一个零信任的防御型 CTF 平台,让参赛者通过修补漏洞而非利用漏洞来抵御自动化攻击。
Stars: 0 | Forks: 0
#
(梵文:चक्रव्यूह - 意为“轮型阵”,一种古老的军事阵法)是一个颠覆了传统攻击安全挑战的 Capture The Flag 平台。玩家无需入侵系统,而是必须在隔离的零信任环境中防御自动化的攻击。
## 🎯 功能
- **专注于防御的挑战**:修补漏洞,而不是利用漏洞
- **类 VSCode 编辑器**:支持语法高亮的 Monaco 编辑器
- **隔离执行**:每次提交都在安全的 Docker container 中运行
- **零信任安全**:网络隔离、资源限制和 capability dropping
- **实时反馈**:攻击验证期间的 WebSocket 更新
- **双重 Flag 模式**:
- 全攻击模式:单一按钮,修补所有漏洞后获得一个 flag
- 单攻击模式:多个按钮,每次攻击获得独立的 flag
- **Rate Limiting**:多层 Rate Limiting(每分钟、每 15 分钟、每小时)
## 🏗️ 架构
```
Frontend (React + Vite)
↓
API Gateway (Express)
↓
Backend Services
├── Challenge Manager
├── Submission Handler
└── Analytics Service
↓
Queue System (BullMQ + Redis)
↓
Orchestrator Workers
├── Docker Container Management
├── Attack Execution
└── Result Processing
```
## 📋 前置条件
- Docker & Docker Compose
- Node.js 20+(用于本地开发)
- 4GB+ RAM
- 推荐 Linux 主机(以获得更好的 Docker 性能)
## 🚀 快速开始
### 1. 克隆与配置
```
git clone
cd ctf-defense-platform
# 复制环境文件
cp .env.example .env
# 使用你的配置编辑 .env
nano .env
```
### 2. 启动服务
```
# 构建并启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 检查服务健康状态
docker-compose ps
```
### 3. 访问平台
- **前端**:http://localhost
- **后端 API**:http://localhost:3000
- **MongoDB**:localhost:27017
- **Redis**:localhost:6379
### 4. 创建首个用户
```
# 通过 API 注册或使用位于 http://localhost 的 Web 界面
curl -X POST http://localhost/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"email": "admin@example.com",
"password": "SecurePass123"
}'
```
### 5. 加载示例挑战
```
# 使用 API(首先从登录获取 JWT token)
curl -X POST http://localhost/api/challenges/load \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"challengeId": "sql-injection-101"}'
```
## 📁 项目结构
```
ctf-defense-platform/
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API & WebSocket services
│ │ └── styles/ # CSS files
│ └── Dockerfile
├── backend/ # Express API server
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ ├── middleware/ # Auth, rate limiting
│ │ └── models/ # Mongoose models
│ └── Dockerfile
├── orchestrator/ # Docker orchestration service
│ └── src/
│ ├── services/ # Container & attack management
│ ├── models/
│ └── worker.js # BullMQ worker
├── worker/ # Additional worker service
│ └── src/
├── challenges/ # Challenge definitions
│ └── sql-injection-101/
│ ├── challenge.json
│ ├── server.js
│ ├── package.json
│ └── attacks/
└── docker-compose.yml
```
## 🎮 创建挑战
### 挑战结构
```
challenges/
└── your-challenge-id/
├── challenge.json # Challenge configuration
├── [source files] # Files players will edit
└── attacks/ # Attack scripts
├── attack1.py
└── attack2.py
```
### 挑战配置示例
完整示例请查看 `challenges/sql-injection-101/challenge.json`。
核心字段:
- `flagPolicy.mode`:`"all_attacks"` 或 `"per_attack"`
- `files[].editable`:允许玩家编辑此文件
- `attacks[].buttonLabel`:按钮文本(例如:“Attack 1”或“SQL Injection”)
- `network.mode`:`"isolated"`(推荐)或 `"allowlist"`
### 攻击脚本要求
- Exit code 0 = 攻击成功(漏洞依然存在)
- Exit code 非 0 = 攻击失败(漏洞已被修补)
- 接收目标 IP 作为第一个命令行参数
- 在指定时间后 timeout
示例:
```
import sys
import requests
target_ip = sys.argv[1]
response = requests.post(f"http://{target_ip}:3000/api", ...)
sys.exit(0 if vulnerable else 1)
```
### 加载挑战
```
# 通过 API(仅限管理员)
POST /api/challenges/load
{
"challengeId": "your-challenge-id"
}
# 系统将:
# 1. 读取 challenge.json
# 2. 加载所有文件
# 3. 验证配置
# 4. 使 challenge 对玩家可用
```
## 🔒 安全功能
### Container 隔离
- 每次提交拥有隔离的 Docker 网络
- 默认无互联网访问
- 尽可能使用只读根文件系统
- Capability dropping(移除所有 capabilities)
- 资源限制(CPU、内存、磁盘、PID)
### Rate Limiting
- 每分钟 2 次尝试
- 每 15 分钟 10 次尝试
- 每小时 30 次尝试
- 基于 Redis 的分布式 Rate Limiting
### 攻击防御
- 默认禁止出站网络
- 攻击脚本在独立的 container 中运行
- 验证完成后 container 自动清理
- 强制 Timeout 机制
- 净化错误消息(无 stack trace)
## 📊 统计分析
访问 `/api/analytics` 获取分析数据(仅限管理员):
- **平台范围**:用户数、挑战统计、成功率
- **单挑战统计**:攻击成功率、平均解决时间
- **排行榜**:按得分排名的顶级解决者
- **用户统计**:个人进度与历史记录
## 🔧 配置
### 环境变量
查看 `.env.example` 了解所有选项。核心变量:
- `JWT_SECRET`:认证密钥(生产环境中务必修改!)
- `RATE_LIMIT_*`:Rate Limiting 配置
- `DEFAULT_*`:Container 的资源限制
- `QUEUE_CONCURRENCY`:并行 worker 数量
### 扩展性
扩展 worker:
```
docker-compose up -d --scale orchestrator=4 --scale worker=6
```
### 资源限制
在 `challenge.json` 中针对单个挑战进行编辑:
```
"resources": {
"cpuLimit": "1.0",
"memoryLimit": "1G",
"diskLimit": "2G",
"timeoutSeconds": 600
}
```
## 🐛 故障排除
### Container 未启动
```
# 检查日志
docker-compose logs backend
docker-compose logs orchestrator
# 验证 Docker socket
ls -la /var/run/docker.sock
# 确保正确的权限
sudo usermod -aG docker $USER
```
### 提交卡在队列中
```
# 检查 Redis
docker-compose exec redis redis-cli KEYS "*"
# 检查 worker 日志
docker-compose logs -f orchestrator
# 重启 worker
docker-compose restart orchestrator worker
```
### 前端构建问题
```
# 重新构建 frontend
docker-compose build frontend
docker-compose up -d frontend
```
## 📝 开发
### 本地开发
```
# Backend
cd backend
npm install
npm run dev
# Frontend
cd frontend
npm install
npm run dev
# 确保 Redis 和 MongoDB 正在运行
docker-compose up -d redis mongo
```
### 本地测试挑战
```
# 手动构建 challenge 容器
cd challenges/sql-injection-101
docker build -t test-challenge .
# 运行攻击脚本
docker run --rm test-challenge python attacks/sqli_basic.py localhost
```
## 📞 支持
如有问题或疑问:
- 在仓库中创建 issue
- 查看现有 issue 寻找解决方案
**尽情去 Hack 吧!🛡️**
(梵文:चक्रव्यूह - 意为“轮型阵”,一种古老的军事阵法)是一个颠覆了传统攻击安全挑战的 Capture The Flag 平台。玩家无需入侵系统,而是必须在隔离的零信任环境中防御自动化的攻击。
## 🎯 功能
- **专注于防御的挑战**:修补漏洞,而不是利用漏洞
- **类 VSCode 编辑器**:支持语法高亮的 Monaco 编辑器
- **隔离执行**:每次提交都在安全的 Docker container 中运行
- **零信任安全**:网络隔离、资源限制和 capability dropping
- **实时反馈**:攻击验证期间的 WebSocket 更新
- **双重 Flag 模式**:
- 全攻击模式:单一按钮,修补所有漏洞后获得一个 flag
- 单攻击模式:多个按钮,每次攻击获得独立的 flag
- **Rate Limiting**:多层 Rate Limiting(每分钟、每 15 分钟、每小时)
## 🏗️ 架构
```
Frontend (React + Vite)
↓
API Gateway (Express)
↓
Backend Services
├── Challenge Manager
├── Submission Handler
└── Analytics Service
↓
Queue System (BullMQ + Redis)
↓
Orchestrator Workers
├── Docker Container Management
├── Attack Execution
└── Result Processing
```
## 📋 前置条件
- Docker & Docker Compose
- Node.js 20+(用于本地开发)
- 4GB+ RAM
- 推荐 Linux 主机(以获得更好的 Docker 性能)
## 🚀 快速开始
### 1. 克隆与配置
```
git clone 标签:CTF平台, Docker, GNU通用公共许可证, MITM代理, Node.js, React, Redis, Syscalls, 安全防御评估, 搜索引擎查询, 版权保护, 网络安全, 自定义脚本, 请求拦截, 防御训练, 隐私保护