scriptlog/socrates-blade

GitHub: scriptlog/socrates-blade

专为 Scriptlog PHP 博客平台设计的安全扫描框架,通过自动提取路由并匹配攻击 Payload 来检测 OWASP Top 10 常见 Web 漏洞。

Stars: 3 | Forks: 0

# Socrates Blade **Scriptlog PHP 博客软件安全测试框架** ![Socrates Blade 吉祥物](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/901ee6b917eb643c133705b13955961b9daee4fddd27d0713228c2bc2f4be905.png) ![Version](https://img.shields.io/badge/version-3.2.0-blue) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/scriptlog/socrates-blade/actions/workflows/ci.yml) ![License](https://img.shields.io/badge/license-MIT-green) ## 什么是 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安全, 安全测试, 应用安全, 攻击性安全, 无后门, 蓝队分析, 逆向工具