RaashidMalla/Web-Security-Scanning-Script
GitHub: RaashidMalla/Web-Security-Scanning-Script
一个基于PHP的轻量级被动Web安全扫描脚本,可对Laravel和WordPress站点进行非侵入式安全检查并匹配CVE。
Stars: 0 | Forks: 0
# Web 安全扫描脚本
一个轻量级、基于浏览器的 PHP 扫描器,可对目标 Web 应用程序执行**只读/非侵入式**安全检查。它检测常见配置错误,并将检测到的版本与 CVE 数据库进行匹配——无需发送任何利用载荷。
## 法律声明(请先阅读)
**仅扫描您拥有或已获得测试许可的网站。**
未经授权扫描第三方网站可能违反您所在司法管辖区的计算机滥用法(例如美国的《计算机欺诈和滥用法》、英国的《计算机滥用法》以及其他地区的类似法律)。
此工具需要在每次扫描前勾选同意复选框。使用它即表示您接受全部责任,确保您已获得扫描目标的授权。
## 功能说明
扫描器对目标 URL 执行一系列**被动**检查:
### 通用检查(适用于所有站点)
- 缺失的安全头部 — HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy
- 服务器 / X-Powered-By 版本信息泄露
- 暴露的敏感文件 — `.env`、`.git/config`、`.DS_Store`、`composer.lock`、`package.json`、`phpinfo.php`、备份存档
### Laravel 特定检查
- 生产环境中 `APP_DEBUG=true`(带堆栈跟踪泄露)
- 公开可访问的 Laravel Telescope
- 公开可访问的 Laravel Horizon
- 暴露的 Laravel Debugbar
- Laravel 版本信息泄露
### WordPress 特定检查
- WordPress 版本检测(meta 标签 + RSS 回退)
- 从页面源码中**枚举插件**
- 针对检测到的插件版本进行** CVE 匹配**
- `xmlrpc.php` 暴露(暴力破解放大向量)
- 通过 REST API 枚举用户(`/wp-json/wp/v2/users`)
- `/readme.html` 可访问性
### 报告
每个发现包括:
- 严重程度(严重 / 高 / 中 / 低)
- 观察到的问题
- 利用该漏洞的攻击向量
- 修复步骤
## 不执行的操作
此扫描器特意限定为被动侦察范围。它不会:
- 向目标发送 SQLi / XSS / RCE 载荷
- 尝试登录或暴力破解凭据
- 向目标上传文件或 POST 数据
- 执行 DoS 或对目标进行速率 flooding
如果您需要主动测试,请使用具有适当渗透测试范围的专用框架——[OWASP ZAP](https://www.zaproxy.org/)、[Burp Suite](https://portswigger.net/burp)、[Nuclei](https://github.com/projectdiscovery/nuclei) 或 [WPScan](https://wpscan.com/)。
## 需求
- PHP **8.0+**(使用 `match`、`str_contains`、命名参数)
- PHP cURL 扩展(随 XAMPP 捆绑)
- Web 服务器 — Apache(XAMPP / WAMP / MAMP)或 `php -S` 均可
## 安装
### 选项 1 — XAMPP(推荐给初学者)
1. 安装 [XAMPP](https://www.apachefriends.org/)。
2. 将此仓库克隆到 `htdocs/`:
cd C:/xampp/htdocs
git clone https://github.com/RaashidMalla/Web-Security-Scanning-Script.git
3. 从 XAMPP 控制面板启动 Apache。
4. 在浏览器中打开 `http://localhost/Web-Security-Scanning-Script/`。
### 选项 2 — 内置 PHP 服务器
```
git clone https://github.com/RaashidMalla/Web-Security-Scanning-Script.git
cd Web-Security-Scanning-Script
php -S localhost:8000
```
然后打开 `http://localhost:8000/`。
## 使用方法
1. 在浏览器中打开扫描器。
2. 输入目标 URL(例如 `https://my-site.test`)。
3. 勾选 **"我确认已获得扫描此目标的授权"** 复选框。
4. 点击 **运行扫描**。
5. 查看报告 — 发现按严重程度排序:严重 → 低。
### 示例输出
```
Detected stack: WordPress Version: 6.2.1 Findings: 7
CRITICAL .env file exposed
APP_KEY and DB credentials are publicly readable.
Attack: full credential takeover.
Fix: move .env outside docroot, rotate all secrets.
HIGH Vulnerable plugin: contact-form-7 v5.3.1
CVE-2020-35489 — Unrestricted file upload bypass.
Attack: upload a disguised .php for RCE.
Fix: update Contact Form 7 to ≥5.3.2.
MEDIUM Missing Content-Security-Policy
...
```
## 项目结构
```
Web-Security-Scanning-Script/
├── index.php # Web UI + form handler
├── lib/
│ ├── Scanner.php # Orchestrator
│ ├── Http.php # cURL wrapper
│ └── Checks/
│ ├── Headers.php # Security headers
│ ├── ExposedFiles.php # Sensitive file probes
│ ├── Laravel.php # Laravel-specific checks
│ └── WordPress.php # WordPress-specific checks
├── data/
│ └── wp_plugin_vulns.json # CVE database (sample)
├── assets/
│ └── style.css # Report styling
└── README.md
```
## 如何扩展
### 添加新的暴露文件探测
编辑 `lib/Checks/ExposedFiles.php` 并向 `PATHS` 常量添加一行。无需修改代码。
### 添加新的易受攻击的 WordPress 插件
编辑 `data/wp_plugin_vulns.json` — 键为插件别名,值为漏洞记录数组。
### 添加对新框架的支持
1. 创建 `lib/Checks/Drupal.php`(或其他),遵循与 `Laravel.php` 相同的结构。
2. 扩展 `Scanner::fingerprint()` 以检测新技术栈。
3. 将其接入 `Scanner::run()`。
### 作为 CLI 工具运行
编写一个小型 CLI 入口脚本,包装 `Scanner` 以读取 `$argv[1]` 并打印 `json_encode($result)`。
## 计划功能
- [ ] 从 WPScan API 自动同步 WP 漏洞数据库
- [ ] Drupal 和 Joomla 检查模块
- [ ] 适用于 CI/CD 管道的 JSON 输出模式
- [ ] CLI 入口点
- [ ] 请求之间进行速率限制(对目标更友好)
- [ ] 使用 SQLite 的扫描历史
## 许可证
MIT — 见 [LICENSE](LICENSE)。
## 免责声明
此软件仅供**教育目的**和**授权的安全测试**使用。作者对滥用不承担任何责任。在大多数司法管辖区,未经明确许可扫描系统是违法的,在这一点上本工具也不例外。请负责任地使用。
标签:Claude, CVE检测, ffuf, Laravel安全, OpenVAS, PHP, Snort++, Web安全, WordPress安全, 图计算, 安全头检测, 安全扫描, 实时处理, 插件漏洞, 操作系统监控, 敏感文件检测, 时序注入, 版本检测, 蓝队分析, 被动扫描, 配置错误检测