PHP 代码安全扫描器, 快读识别代码执行、命令执行、文件操作、文件包含等漏洞

华盟原创文章投稿奖励计划

工具介绍

awd比赛中,我们经常会遇到 PHP WebShell。

利用 Go 语言编写的轻量级 PHP 安全扫描工具 专门用来发现这些隐藏在源码中的后门与高危调用。

自动草稿

🧠 双引擎:AST 污点分析 + 签名匹配

这款工具采用了两种检测思路:

🚦 双引擎检测机制

  1. AST 污点分析引擎


    • 自动追踪变量赋值与跨行传播,
    • 构建 Source → Sink 污染链,
    • 精确识别「⚠️ 高危」漏洞(如 $_GET → eval())。
  2. 签名规则引擎(Signature Engine)


    • 内置正则签名,可快速识别混淆代码与危险函数调用,
    • 可通过 rule.json 自定义扩展规则,
    • 支持 eval(base64_decode(…))str_rot13dynamic $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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容