AbdullahZeynel/pwn-vault
GitHub: AbdullahZeynel/pwn-vault
一款面向红队渗透测试的漏洞记录与追踪数据库,支持结构化存储漏洞信息和证明截图。
Stars: 1 | Forks: 0
# 🛡️ Red Team VulnDB
**红队漏洞与利用数据库** — 网络安全专家用于记录在渗透测试期间发现的安全漏洞,并附带证明截图的 Web 门户。





## 📸 截图
| 登录 | 仪表盘 |
|-------|-----------|
| 企业登录界面 | Vulnerability 列表 + 搜索 |
| 详情 | Dark Mode |
|-------|-----------|
| BLOB 图像渲染 | 暗黑模式支持 |
## ✨ 功能特性
- 🔐 **身份验证** — 基于 Spring Security 的表单登录 + BCrypt 密码加密
- 📋 **CRUD 操作** — Vulnerability 的添加、列表查看、更新、删除
- 🖼️ **BLOB 图像存储** — 证明图像在数据库中以 `byte[]` 形式存储(使用 `columnDefinition = "BYTEA"` 而非 `@Lob`)
- 🔍 **智能搜索** — 在标题和目标系统字段中进行不区分大小写的并发搜索(JPQL `@Query`)
- 🌙 **Dark Mode** — 通过 LocalStorage 实现持久化的主题偏好设置
- 📱 **响应式设计** — 移动端适配的企业级 UI
- 🐳 **Docker 支持** — 一键安装(`docker compose up`)
- 🎯 **演示数据** — 应用启动时自动生成 6 条真实的 vulnerability 记录
## 🏗️ 架构
```
Katmanlı Mimari (Layered Architecture)
┌──────────────────────────────────────┐
│ Presentation Layer │
│ Thymeleaf + CSS + JavaScript │
├──────────────────────────────────────┤
│ Controller Layer │
│ AuthController, VulnController, │
│ ImageController │
├──────────────────────────────────────┤
│ Service Layer │
│ VulnerabilityService, │
│ OperatorDetailsService │
├──────────────────────────────────────┤
│ Repository Layer │
│ OperatorRepository, │
│ VulnerabilityRepository │
├──────────────────────────────────────┤
│ Entity Layer │
│ Operator, Vulnerability, Severity │
├──────────────────────────────────────┤
│ PostgreSQL │
└──────────────────────────────────────┘
```
## 🛠️ 技术栈
| 层级 | 技术 |
|--------|-----------|
| Backend | Java 17, Spring Boot 3.2.5 |
| Security | Spring Security, BCrypt |
| ORM | Spring Data JPA (Hibernate 6) |
| Database | PostgreSQL 16 |
| Frontend | Thymeleaf, HTML5, CSS3, Vanilla JS |
| Build | Maven |
| Deploy | Docker, Docker Compose |
## 🚀 安装
### 方式 1: 使用 Docker (推荐) ⭐
只需安装 [Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/)。
```
# 1. 克隆仓库
git clone https://github.com/KULLANICI_ADI/redteam-vulndb.git
cd redteam-vulndb
# 2. 一键启动 (PostgreSQL + 应用)
docker compose up --build
# 3. 在浏览器中打开
# http://localhost:8080
# 登录: admin / admin123
```
停止运行:
```
docker compose down # Durdur
docker compose down -v # Durdur + veritabanı verilerini sil
```
### 方式 2: 手动安装
#### 前置条件
- Java 17+ (`java -version`)
- Maven 3.8+ (`mvn -version`)
- PostgreSQL 14+ (`psql --version`)
#### 步骤
```
# 1. 克隆仓库
git clone https://github.com/KULLANICI_ADI/redteam-vulndb.git
cd redteam-vulndb
# 2. 创建 PostgreSQL 数据库
sudo systemctl start postgresql
sudo -u postgres psql -c "CREATE DATABASE vulndb;"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
# 3. 启动应用
mvn spring-boot:run
# 4. 在浏览器中打开
# http://localhost:8080
# 登录: admin / admin123
```
## 📁 项目结构
```
redteam-vulndb/
├── pom.xml # Maven bağımlılıkları
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml # PostgreSQL + App orchestration
├── .gitignore
├── README.md
└── src/main/
├── java/com/redteam/vulndb/
│ ├── VulnDbApplication.java # @SpringBootApplication entry point
│ ├── entity/
│ │ ├── Severity.java # Enum (LOW, MEDIUM, HIGH, CRITICAL)
│ │ ├── Operator.java # Kullanıcı entity
│ │ └── Vulnerability.java # Vulnerability + BLOB proof image
│ ├── repository/
│ │ ├── OperatorRepository.java # findByUsername (Derived Query)
│ │ └── VulnerabilityRepository.java # searchByKeyword (@Query JPQL)
│ ├── service/
│ │ ├── OperatorDetailsService.java # Spring Security UserDetailsService
│ │ └── VulnerabilityService.java # CRUD + MultipartFile→byte[]
│ ├── controller/
│ │ ├── AuthController.java # Login page
│ │ ├── VulnerabilityController.java # 7 CRUD endpoints
│ │ └── ImageController.java # BLOB → HTTP Response
│ └── config/
│ ├── SecurityConfig.java # Filter chain + BCrypt
│ └── DataInitializer.java # Seed data (admin + 6 demo vulns)
└── resources/
├── application.properties # DB + JPA + Multipart config
├── templates/
│ ├── login.html # Giriş ekranı
│ ├── dashboard.html # Ana sayfa + tablo + arama
│ ├── vulnerability-form.html # Ekleme/düzenleme formu
│ └── vulnerability-detail.html # Detay + BLOB render
└── static/
├── css/terminal.css # Kurumsal tema + dark mode
└── js/app.js # Theme toggle + validation
```
## 🔑 默认用户
| 用户名 | 密码 | 角色 |
|---------------|-------|-----|
| `admin` | `admin123` | OPERATOR |
## 📊 API Endpoint
| Method | URL | 描述 |
|--------|-----|----------|
| GET | `/login` | 登录页面 |
| GET | `/dashboard` | Vulnerability 列表 |
| GET | `/dashboard?search=keyword` | 搜索 (title + targetSystem) |
| GET | `/vulnerability/new` | 新建记录表单 |
| POST | `/vulnerability/save` | 保存 (multipart/form-data) |
| GET | `/vulnerability/{id}` | 详情页面 |
| GET | `/vulnerability/{id}/edit` | 编辑表单 |
| POST | `/vulnerability/{id}/update` | 更新 |
| POST | `/vulnerability/{id}/delete` | 删除 |
| GET | `/image/{id}` | 提供 BLOB 图像服务 |
## 🔒 安全性
- 使用 **BCrypt** 进行密码哈希处理(单向、加盐)
- 通过 **Spring Security Filter Chain** 实现基于 URL 的访问控制
- 启用 **CSRF 防护**(Thymeleaf 自动生成 token)
- **Session-based authentication**
- 使用 POST 方法进行删除操作(使用 GET 删除存在安全风险)
## 📝 许可证
本项目为大学作业课程设计开发。
标签:BCrypt, BLOB存储, CRUD, Docker, Docker Compose, GPT, Java 17, JPQL, meg, PoC, PostgreSQL, Spring Boot, Spring Security, Thymeleaf, Web安全, XXE攻击, 企业级应用, 信息安全, 响应式设计, 域名枚举, 子域名变形, 安全测试, 安全防御评估, 密码管理, 攻击性安全, 数据展示, 数据库, 暗黑模式, 暴力破解, 概念验证, 测试用例, 漏洞管理, 漏洞记录, 漏洞跟踪, 红队, 网络安全, 蓝队分析, 请求拦截, 隐私保护