haydarkadioglu/portinel
GitHub: haydarkadioglu/portinel
Portinel 是一个集成了 17+ 侦察模块和 AI 分析能力的生产级网络侦察平台,为安全团队提供从资产发现到漏洞情报的一站式评估工作流。
Stars: 0 | Forks: 0
# 🛡️ Portinel
**生产级网络侦察平台** — 端口扫描、SSL/TLS 分析、HTTP 指纹识别、子域名枚举、CVE 情报以及 AI 驱动的分析。
## 🚀 部署到 Vercel
### 1. 导入项目
- 前往 [vercel.com/new](https://vercel.com/new)
- 导入 `https://github.com/haydarkadioglu/portinel`
- 设置 **Production Branch:** `production`
### 2. 环境变量
在 Vercel → Project → Settings → Environment Variables 中添加以下内容:
```
# Supabase(Auth — 必需)
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_xxx
SUPABASE_SERVICE_ROLE_KEY=eyJxxx # for admin user management
# 数据库(使用 Supabase Pooler 或 Neon Postgres)
DATABASE_URL=postgresql://...
# Auth 加密密钥
AUTH_SECRET=generate-a-random-string
```
### 3. 数据库设置
首次部署后,运行 schema migration:
```
# 通过您的 DATABASE_URL 在本地运行
npx drizzle-kit push --force
```
或者使用 Supabase SQL Editor 运行 schema dump。
### 4. 创建您的管理员用户
1. **Supabase Dashboard → Authentication → Users → Add user**
2. 设置邮箱和密码,并标记为已验证
3. **编辑用户 → User Metadata:** `{"role": "admin", "name": "Your Name"}`
4. 访问您的 Vercel URL → `/login` → 登录
`vercel.json` 已配置了 60 秒的函数超时,适用于长时间运行的扫描。
## ✨ 功能
### 侦察引擎(17+ 模块)
- **端口扫描** — TCP 连接、banner grabbing、版本检测
- **SSL/TLS 分析** — 证书、加密算法、TLS 版本、评级
- **HTTP 指纹识别** — 标头、重定向、Cookies、CMS 检测
- **DNS 分析** — 完整枚举 + zone-transfer 测试
- **子域名发现** — CT logs (crt.sh + CertSpotter + HackerTarget) + 暴力破解
- **WAF 检测** — Cloudflare, AWS WAF, Akamai, Sucuri 等
- **Web 侦察** — 目录暴力破解、源码泄露、CORS 审计
- **CVE 情报** — 包含 CVSS 分数的本地漏洞数据库
- **OS 检测**、**WHOIS/RDAP**、**地理位置定位**
### AI 层
- **多提供商 LLM** — OpenRouter + DeepSeek + rule-engine fallback
- **对话式助手** — 解释发现结果、建议漏洞利用和修复方案
- **自主代理** — AI 可以启动子扫描并调用 MCP 工具
- **CTF 工具包** — 解码器、密码、哈希工具、JWT、XOR
### 平台
- **Supabase Auth** — 仅限邀请、RBAC 角色(admin/pentester/analyst/viewer)
- **扫描树** — 用于子域名/路径的嵌套子扫描
- **实时 SSE 进度** — 实时扫描流式传输
- **MCP 连接器** — 通过 SSE 连接外部工具服务器
- **VPN 隧道** — 用于内网扫描的 OpenVPN 配置
- **定时扫描** + **webhooks**(Slack/Discord)
- **报告生成** — Markdown, JSON, CSV, 可分享链接, PDF
## 👥 角色
| 角色 | 权限 |
|------|--------|
| **admin** | 所有权限 — 用户管理、提供商配置、所有扫描 |
| **pentester** | 扫描、子扫描、MCP、VPN、导出 |
| **analyst** | 运行和查看扫描、报告 |
| **viewer** | 只读权限 |
自注册功能已禁用。管理员通过 Admin Panel 或 Supabase Dashboard 创建账户。
## 🔑 AI 提供商设置
Dashboard → **Admin Panel → 🤖 AI Providers**:
- **OpenRouter** — 在 [openrouter.ai/keys](https://openrouter.ai/keys) 获取密钥
- **DeepSeek** — 在 [platform.deepseek.com/api_keys](https://platform.deepseek.com/api_keys) 获取密钥
- 测试、设置为活动状态、保存。如果不可用,将自动回退到内置引擎。
## 📁 项目结构
```
src/
├── app/ # Next.js App Router
│ ├── api/ # REST API + SSE + chat + MCP
│ ├── dashboard/ # Main UI
│ └── r/[token]/ # Public shareable reports
├── components/ # React components
├── lib/ # Core logic (scanner, llm, mcp, cve-db, ctf)
└── db/ # Drizzle ORM schema
```
## 🛡️ 安全性
- Supabase Auth(基于 cookie 的 SSR 会话)
- 对每个 endpoint 进行 RBAC 权限检查
- SSRF 防护、速率限制、输入验证
- 静态加密密钥(AES-256-GCM)
- 审计日志
## 📄 许可证
专有许可 — 保留所有权利。
标签:GitHub, Supabase, Web应用扫描, 子域名枚举, 实时处理, 插件系统, 测试用例, 系统安全, 自动化攻击