ValienteTechnologies/ghostbadger
GitHub: ValienteTechnologies/ghostbadger
一款与Ghostwriter和Vaultwarden深度集成的安全报告生成与分发工具,专用于自动化渲染、加密并安全交付渗透测试报告。
Stars: 11 | Forks: 1
**Ghostbadger** 是一个专门的 PDF 渲染引擎,旨在弥合 [Ghostwriter](https://github.com/GhostManager/Ghostwriter) 与安全客户端交付之间的差距。它通过直接与 Ghostwriter 的 GraphQL API 和 [Vaultwarden](https://github.com/dani-garcia/vaultwarden) 集成,自动生成精美的、受密码保护的 PDF 报告。
### 博客文章
https://valientetechnologies.com/blog/posts/introducing-ghostbadger/
### 快速设置
**使用 Docker Compose(推荐)**
```
# 1. 创建 env 文件
cat > .env <<'EOF'
SECRET_KEY=change-me
GHOSTWRITER_URL=https://your-ghostwriter-instance
VAULTWARDEN_URL=
VAULTWARDEN_ORG_ID=
VAULTWARDEN_COLLECTION_ID=
EOF
# 2. 拉取并启动
docker compose pull
docker compose up -d
```
模板和资源在首次运行时从镜像中提取到 `./resources/` 目录中——您可以随意编辑它们。
**不使用 Docker Compose**
```
docker run -d \
--name ghostbadger \
-p 80:80 \
-e SECRET_KEY=change-me \
-e GHOSTWRITER_URL=https://your-ghostwriter-instance \
-v $(pwd)/resources:/app/reporting/resources \
--restart unless-stopped \
ghcr.io/valientetechnologies/ghostbadger:latest
```
### 本地开发
**要求**
- Python 3.12+
- Node.js(用于 SysReptor 渲染包和 `bw` CLI)
- Chromium(由 Playwright 安装)
```
# 1. Clone 并进入 repo
git clone
cd ghostbadger
# 2. 创建 venv
python3 -m venv venv
# 3. 安装 Python dependencies
venv/bin/pip install -r requirements.txt
# 4. 安装 Playwright 的 Chromium 浏览器
venv/bin/playwright install chromium
# 5. 安装 Markdown package dependencies
cd packages/markdown && npm install && cd ../..
# 6. 构建 SysReptor Vue rendering bundle
cd packages/rendering && npm install && npm run build && cd ../..
# 7. (可选) 安装 Bitwarden CLI 以集成 Vaultwarden
cd packages/bitwarden && npm install && cd ../..
# 8. 配置环境
cp .env.example .env
# Edit .env 并设置 SECRET_KEY、GHOSTWRITER_URL,以及可选的 VAULTWARDEN_* 值
```
**运行**
```
FLASK_DEBUG=1 venv/bin/flask --app wsgi:application run
```
打开 http://localhost:5000,粘贴 Ghostwriter JWT token,然后进入控制面板。
**测试**
```
.venv/bin/pytest tests/ -v
```
### 项目结构
```
app/
__init__.py # App factory
config.py # Dev / Prod / Test config
ghostwriter.py # Ghostwriter GraphQL client
vaultwarden.py # Vaultwarden / bw CLI integration
auth/ # JWT validation + require_token decorator
onboarding/ # Login blueprint (/, /logout)
dashboard/ # Main blueprint + all API routes
reporting/ # Report templates (.html + .css) and evidence cache
rendering/ # PDF pipeline: Chromium → HTML → WeasyPrint → PDF
static/ # CSS
templates/ # Jinja2 templates
packages/
rendering/ # SysReptor Vue rendering bundle (pre-built)
bitwarden/ # Local bw CLI install
```
### 环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
| `SECRET_KEY` | 是 | Flask 会话签名密钥 |
| `GHOSTWRITER_URL` | 是 | Ghostwriter 实例的基础 URL |
| `GHOSTWRITER_VERIFY_SSL` | 否 | 设置为 `false` 可禁用自签名证书的 SSL 验证(默认值:`true`) |
| `GHOSTWRITER_CF_CLIENT_ID` | 否 | Cloudflare Access 服务 token 客户端 ID(如果 Ghostwriter 位于 CF Access 之后) |
| `GHOSTWRITER_CF_CLIENT_SECRET` | 否 | Cloudflare Access 服务 token 密钥 |
| `GHOSTWRITER_MEDIA_PATH` | 否 | 用于证据图像回退的 Ghostwriter 媒体卷路径(本地 Docker 部署) |
| `RENDER_LANGUAGE` | 否 | 传递给 Vue 渲染包的 BCP 47 语言标签(默认值:`en`) |
| `VAULTWARDEN_URL` | 否 | Vaultwarden 服务器 URL |
| `VAULTWARDEN_ORG_ID` | 否 | vault 条目的组织 ID |
| `VAULTWARDEN_COLLECTION_ID` | 否 | vault 条目的集合 ID |
### 模板
有关创建和修改报告模板、可用数据字段、特殊组件和页面布局的完整文档,请参阅 [app/reporting/resources/README.md](app/reporting/resources/README.md)。
### 贡献
有关如何提交补丁、新模板或其他改进的信息,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
### 致谢
PDF 渲染 pipeline 灵感来源于 [SysReptor](https://github.com/Syslifters/sysreptor) 的 PDF 导出引擎,复用了其基于 Vue 的模板渲染包和模板格式。标签:API集成, Bitwarden, Chromium, Docker, Docker Compose, Ghostwriter, GNU通用公共许可证, GraphQL, MITM代理, Node.js, PDF渲染, Playwright, ProjectDiscovery, Python, Vaultwarden, Vue, 交付物生成, 可观测性, 安全报告, 安全防御评估, 密码保护, 密码管理器, 持续交付, 数据保护, 数据展示, 文件加密, 文件系统扫描, 文档管理, 无后门, 特征检测, 红队, 网络安全, 网络调试, 自动化, 自定义脚本, 请求拦截, 逆向工具, 隐私保护