scriptlog/socrates-blade
GitHub: scriptlog/socrates-blade
专为 Scriptlog PHP 博客平台设计的安全扫描框架,通过自动提取路由并匹配攻击 Payload 来检测 OWASP Top 10 常见 Web 漏洞。
Stars: 3 | Forks: 0
# Socrates Blade
**Scriptlog PHP 博客软件安全测试框架**


[](https://github.com/scriptlog/socrates-blade/actions/workflows/ci.yml)

## 什么是 Socrates Blade?
Socrates Blade 是一个为 [Scriptlog](https://github.com/cakmoel/Scriptlog)(一个 PHP 博客平台)构建的安全扫描器。它会检查您的 Web 应用程序是否存在常见的安全漏洞,并就其发现的问题为您提供清晰的报告。
可以将其视为您网站安全的健康检查。它会寻找攻击者可能试图利用的弱点,以便您在它们成为问题之前进行修复。
### 它能检测什么
| 问题 | 含义 |
|-------|---------------|
| **SQL 注入** | 攻击者可能通过输入字段篡改您的数据库 |
| **跨站脚本攻击 (XSS)** | 恶意脚本可能会被注入到您的页面中 |
| **路径遍历** | 未经授权的用户可能会访问 Web 根目录之外的文件 |
| **服务器端请求伪造 (SSRF)** | 您的服务器可能会被诱骗发出危险的请求 |
还有更多——该扫描器会针对数百种攻击模式进行测试。
## 系统要求
| 要求 | 最低版本 | 原因 |
|-------------|----------------|-----|
| **Python** | 3.8+ | 运行扫描引擎 |
| **PHP** | 7.4+ | 从您的 Scriptlog 安装中提取应用程序路由 |
| **curl** | 任何近期版本 | 向您的站点发送测试请求 |
| **OS** | Linux, macOS, Windows (WSL) | 在类 Unix 系统上效果最佳 |
要检查您的版本:
```
python3 --version
php --version
```
## 安装
### 1. 下载 Socrates Blade
```
git clone https://github.com/scriptlog/socrates-blade.git
cd socrates-blade
```
### 2. 设置虚拟环境
虚拟环境可以保持 Python 依赖项井然有序,并避免与其他项目发生冲突。
```
python3 -m venv venv
source venv/bin/activate # Linux / macOS
venv\Scripts\activate.bat # Windows (CMD)
venv\Scripts\Activate.ps1 # Windows (PowerShell)
```
### 3. 安装依赖项
```
pip install -r scanrequirements.txt
```
### 4. 验证是否有效
```
python3 socrates-blade.py --help
```
您应该会看到一条列出所有可用选项的帮助信息。
## 快速入门
### 将 Socrates Blade 放在您的 Scriptlog 安装目录中
为了获得最顺畅的体验,请将该工具复制到您的 Scriptlog 目录中:
```
cp -r socrates-blade /var/www/phpsite/public_html/
cd /var/www/phpsite/public_html/socrates-blade
```
当放置在 Scriptlog 内部时,路由提取器 (`export_routes.php`) 会自动找到您的 `config.php` 并读取正确的应用程序 URL。
### 独立安装
如果您希望将扫描器分开存放:
```
cp -r /your/scriptlog/lib /your/scanner/directory/socrates-blade/
cp /your/scriptlog/config.php /your/scanner/directory/socrates-blade/
```
### 生成应用程序路由
路由会告诉扫描器要测试哪些页面和 endpoint。
```
php export_routes.php > routes.json
```
这会生成一个 `routes.json` 文件,其中包含:
- 当前时间戳
- 来自 `config.php` 的应用程序 URL
- 您的 Scriptlog 安装中的所有可用路由(前端、管理后台、API 等)
### 运行您的首次扫描
确保您的 Web 服务器正在运行,然后:
```
./run-scan.sh http://localhost
```
扫描器将会:
1. 确认您的 URL 可访问
2. 检查系统要求
3. 设置 Python 环境
4. 针对所有发现的路由运行安全测试
5. 生成结果报告
### 先尝试模拟运行
模拟运行会展示扫描将要执行的操作,而不会实际发送任何请求:
```
./run-scan.sh http://localhost --dry-run
```
这对于在运行真实测试之前了解扫描器的工作原理非常有用。
## 常见用法示例
### 基础扫描(无身份验证)
```
./run-scan.sh http://localhost
```
### 带身份验证的扫描
您站点的某些区域需要登录。提供凭据以对这些区域进行测试:
```
./run-scan.sh http://localhost \
-u admin \
-p your_password \
-o findings.json
```
### 生成 HTML 报告
```
./run-scan.sh http://localhost \
-u admin \
-p your_password \
--html-report report.html
```
### 激进模式(深度测试)
激进模式会运行更深度的测试,但耗时更长:
```
./run-scan.sh http://localhost --aggressive --timeout 30
```
### 通过代理进行路由扫描(例如,Burp Suite)
```
./run-scan.sh http://localhost --proxy http://127.0.0.1:8080
```
### 跳过 URL 验证
如果您的目标无法直接访问,但您仍希望进行扫描,请使用此选项:
```
./run-scan.sh http://localhost --no-validate
```
## 了解扫描结果
### 严重级别
| 级别 | 含义 | 何时修复 |
|-------|---------------|-------------|
| **严重 (CRITICAL)** | 迫在眉睫的危险 - 可能发生数据泄露或系统全面被攻陷 | 24 小时内 |
| **高危 (HIGH)** | 可被利用的严重漏洞 | 7 天内 |
| **中危 (MEDIUM)** | 中等风险 - 应予以解决 | 30 天内 |
| **低危 (LOW)** | 次要问题 - 方便时修复 | 90 天内 |
### 报告格式
| 格式 | 命令 | 最适合 |
|--------|---------|----------|
| **JSON** | `-o report.json` | 自动化、CI/CD pipeline |
| **HTML** | `--html-report report.html` | 在浏览器中阅读 |
## 命令行选项
### 身份验证
| 标志 | 描述 |
|------|-------------|
| `-u, --username ` | 您的登录用户名 |
| `-p, --password ` | 您的登录密码 |
### 扫描行为
| 标志 | 描述 |
|------|-------------|
| `--aggressive` | 运行更彻底的测试(较慢) |
| `--brute-force` | 测试密码猜测 |
| `--threads ` | 并行测试的数量(默认:5) |
| `--timeout ` | 响应的最大等待时间(默认:5s) |
| `--proxy ` | 通过代理路由流量 |
| `--wordlist ` | 用于暴力破解的自定义密码列表 |
### 报告
| 标志 | 描述 |
|------|-------------|
| `-o, --output ` | 将 JSON 报告保存到文件 |
| `--html-report ` | 将 HTML 报告保存到文件 |
| `--report-dir ` | 用于存储报告的目录 |
### 其他
| 标志 | 描述 |
|------|-------------|
| `--no-sync` | 跳过路由同步 |
| `--no-validate` | 跳过 URL 可达性检查 |
| `--dry-run` | 预览操作而不执行 |
| `-v, --verbose` | 显示详细进度 |
| `-h, --help` | 显示帮助信息 |
## 运行测试
```
# URL validator 测试
./tests/bash/test_url_validator.sh
# BATS 测试套件
bats tests/bash/run-scan.sh.test.bats
```
## CI/CD 集成
将安全扫描添加到您的 GitHub Actions pipeline 中:
```
name: Security Scan
on: [push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r scanrequirements.txt
- name: Run security scan
run: |
./run-scan.sh ${{ secrets.TARGET_URL }} \
-u ${{ secrets.TARGET_USER }} \
-p ${{ secrets.TARGET_PASS }} \
-o scan-results.json \
--html-report scan-report.html
```
## 故障排除
### "找不到 Python"
安装 Python 3,然后检查:
```
python3 --version
```
### "找不到 curl"
使用您的系统包管理器安装 curl(例如,`apt install curl`,`brew install curl`)。
### "权限拒绝"
使脚本可执行:
```
chmod +x run-scan.sh
```
### 扫描连接失败
- 确保您的 Web 服务器正在运行
- 如果 URL 无法访问,请尝试 `--no-validate`
- 检查防火墙设置
## 重要提示
### 仅测试您拥有 - 或有书面许可进行测试的系统
未经授权对网站运行安全工具是非法的。请始终:
- 在测试前获得系统所有者的书面许可
- 在您自己的开发环境中使用该工具
- 如果您发现真实的漏洞,请遵循负责任的披露做法
### 遵守速率限制
不要让目标服务器不堪重负。调整 `--timeout` 和 `--threads` 以保持您的测试在合理范围内。
## 项目结构
```
socrates-blade/
├── socrates-blade.py # Main scanner engine
├── run-scan.sh # Automation wrapper (start here)
├── config.py # Scanner configuration
├── routes.json # Application routes extracted from Scriptlog
├── export_routes.php # Route extractor for Scriptlog installations
├── scanrequirements.txt # Python package dependencies
├── url-validator-lib.sh # URL validation library sourced by run-scan.sh
├── payloads/ # Attack test payloads
│ ├── xss.txt # 116 XSS test strings
│ ├── sqli.txt # 150 SQL injection test strings
│ ├── traversal.txt # 139 path traversal test strings
│ └── ssrf.txt # 191 SSRF test strings
├── wordlists/ # Brute force wordlists
│ ├── passwords.txt # 498 common passwords
│ └── usernames.txt # 1916 common usernames
├── tests/
│ ├── bash/ # Shell script tests
│ └── python/unit/ # Python unit tests
├── reports/ # Generated scan reports
├── lib/ # PHP library for route extraction
├── venv/ # Python virtual environment
├── CODE_OF_CONDUCT.md # Community guidelines
├── CONTRIBUTING.md # Contribution guide
├── LICENSE.md # MIT License
├── SECURITY.md # Security policy
└── README.md # This file
```
### 路由覆盖范围
路由提取器 (`export_routes.php`) 涵盖所有 Scriptlog endpoint:
| 类别 | 路由 | 测试内容 |
|----------|--------|---------------|
| 前端 | 12 | 主页、文章、分类、标签、归档、搜索、页面、隐私、下载 |
| 管理后台 | 75+ | 所有管理页面(身份验证、内容、用户、媒体、设置、导入/导出等) |
| API | 45 | 完整的 REST API(文章、分类、评论、归档、搜索、GDPR、媒体) |
| 公共 | 3 | 评论提交、联系表单、订阅 |
| 敏感 | 6 | 安装向导、配置文件 |
**总计:142 条路由**(从 v1.0 中的约 62 条增加而来)
## 获取帮助
- [问题跟踪器](https://github.com/scriptlog/socrates-blade/issues) - 报告 Bug 或请求功能
- 浏览源代码:`socrates-blade.py` 和 `config.py`
- 查看 `payloads/` 目录中的攻击 payload,以了解每个测试的作用
## 许可证
[MIT 许可证](LICENSE.md)
**版本**:3.2.0
**最后更新**:2026 年 4 月
**维护者**:M.Noermoehammad
标签:CISA项目, DOE合作, OpenVAS, PHP, Python, Web安全, 安全测试, 应用安全, 攻击性安全, 无后门, 蓝队分析, 逆向工具