工具介绍
在awd比赛中,我们经常会遇到 PHP WebShell。
利用 Go 语言编写的轻量级 PHP 安全扫描工具 专门用来发现这些隐藏在源码中的后门与高危调用。

🧠 双引擎:AST 污点分析 + 签名匹配
这款工具采用了两种检测思路:
🚦 双引擎检测机制
-
AST 污点分析引擎
-
- 自动追踪变量赋值与跨行传播,
- 构建 Source → Sink 污染链,
- 精确识别「⚠️ 高危」漏洞(如 $_GET → eval())。
-
签名规则引擎(Signature Engine)
-
- 内置正则签名,可快速识别混淆代码与危险函数调用,
- 可通过 rule.json 自定义扩展规则,
- 支持 eval(base64_decode(…))、str_rot13、dynamic $var() 等变形 WebShell 检测。
🧩 检测能力
| 漏洞类型 | 识别示例 |
|---|---|
| 任意代码执行 | eval($_POST[‘cmd’]); / assert($_GET[‘x’]); |
| 命令执行 | system($_REQUEST[‘shell’]); / exec($_POST[‘cmd’]); |
| 文件读取/写入 | fopen($_GET[‘path’], “r”); / file_put_contents($_POST[‘f’], …) |
| 文件包含 | include($_GET[‘file’]); / require($_POST[‘p’]); |
| 混淆后门检测 | @eval(base64_decode(…)) / str_rot13 + explode + 动态函数调用 |
| 变量函数调用 | $func($_POST[‘payload’]); |
特性亮点
-
🔎 正则签名库:内置 + 自定义规则双支持
-
🔄 跨行分析:支持多行复杂混淆检测(RE2 + 全文件扫描)
-
⚙️ 可扩展性强:通过 rules.json 快速添加专属检测规则
-
⚡ 并发扫描:–workers 参数支持多核并行处理
-
📊 报告分级:
-
- ⚠️ 高危:确定可利用的攻击链
- ❓ 可疑:潜在危险调用,需人工复核
使用方法
运行扫描
go run main.go --rules rule.json --workers 16 /path/to/php/source
参数说明
| 参数 | 含义 |
|---|---|
| –rules | 自定义规则文件路径(JSON 格式) |
| –workers | 并发扫描线程数 |
| <path> | 待扫描的项目路径 |
📂 输出示例
📂 输出示例 ⚠️ [高危] ./admin/upload.php 行号: 35 链路: $_GET["path"] → fopen() 命中高危函数: fopen() 风险点: HTTP GET 参数 "path" 可控 访问路径: http://目标地址/upload.php?path=/etc/passwd (GET) 风险: 任意文件读取 防护建议: 验证文件路径合法性,禁止用户可控路径。 ------------------------------------------------------------ ❓ [可疑] ./class/Task.php 线索: 命中自定义规则 "rot13_dynamic_function_call" 可能链路: $_REQUEST[...] → 动态函数调用() 建议: 检测到通过 str_rot13 构造函数名并调用的混淆执行方式,请人工复核。 ------------------------------------------------------------


工具获取
https://github.com/zhaodie/sacnner
文章来源:夜组安全
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END














暂无评论内容