快速上手指南
先用报告模式开始。扫描器会检查文件,并在不更改项目的情况下记录其发现。
开始前
确认系统中安装了 PHP 7.4 或更高版本:
php --version
如 安装 中所述,下载当前发行文件,然后将其放置在你计划扫描的目录之外。
扫描项目
针对项目根目录运行扫描器:
php scanner /var/www/example --lite --report
将 /var/www/example 替换为实际路径。Windows 下,路径中包含空格时请加引号:
php scanner "C:\Sites\example" --lite --report
这个命令使用了两个选项:
--lite在保留广泛检测能力的同时,减少常见误报。--report防止交互式文件操作,并写出报告。
默认报告路径是 ./scanner-report.html。打开该文件,在浏览器中查看每个发现,并检查其源代码上下文,然后再决定是否采取行动。
选择扫描模式
| 模式 | 选项 | 最佳用途 | 权衡 |
|---|---|---|---|
| 完整 | 无模式选项 | 事件响应和深度调查 | 产生最多发现 |
| 精简 | --lite, -l | 实用的首次扫描 | 会跳过部分噪声模式 |
| 仅签名 | --only-signatures, -s | WordPress 和已知恶意软件检查 | 可能漏掉可疑的自定义代码 |
| 仅漏洞利用 | --only-exploits, -e | 风险代码模式审查 | 可能产生误报 |
| 仅函数 | --only-functions, -f | 危险 PHP 调用审计 | 仅凭函数名缺乏上下文 |
不要在不了解过滤器相互作用的情况下组合模式。对于不熟悉的代码库,先使用 Lite,然后在需要更广泛覆盖时再运行完整扫描。
阅读发现结果
在采取任何行动前,先检查这些细节:
- 文件路径: 确认这是你原本打算扫描的应用文件。
- 检测类型: 签名的置信度与通用漏洞利用模式或危险函数不同。
- 匹配代码: 检查周围的函数、类或模板。
- 完整性结果: 已修改的供应商或平台文件值得更密切关注。
- 最近更改: 与版本控制、可信发行版本或已知备份进行比对。
发现需要上下文
一个合法插件、部署脚本或维护工具可能会使用与恶意软件相似的代码。在修改它之前,先确认文件的来源和用途。
对确认的发现采取行动
交互式扫描可以显示源代码,跳过某个发现,将其加入白名单,清理代码,隔离文件或删除文件。优先选择可逆操作。
| 操作 | 效果 | 推荐用途 |
|---|---|---|
| 显示源代码 | 显示周围代码 | 首次审查步骤 |
| 跳过 | 保持文件不变 | 你还需要更多证据 |
| 白名单 | 抑制已接受的匹配 | 你已验证该发现的准确性 |
| 清理 | 显示差异并验证 PHP 语法 | 恶意片段已被隔离 |
| 隔离 | 将文件移出原位置 | 你已确认站点在没有它的情况下可以运行 |
| 删除 | 移除文件 | 备份已存在并且文件已确认是恶意软件 |
在任何可能修改文件的扫描前使用 --backup:
php scanner /var/www/example --lite --backup
常见后续步骤
创建机器可读报告
php scanner /var/www/example --lite --report --report-format=json
可用的报告格式包括 HTML、文本、JSON 和 SARIF。
排除生成文件
php scanner /var/www/example --lite --report --ignore-paths="*/cache/*,*/logs/*"
扫描所有扩展名
php scanner /var/www/example --scan-all --report
此选项会增加扫描时间,并可能检查二进制或生成内容。对于大型项目,请使用路径过滤器和文件大小限制。
继续
浏览 命令行参考 以了解报告、归档、FTP、WordPress 数据库、路径和自动化选项。WordPress 管理员可以使用 仪表板指南。