CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现

渗透技巧 2年前 (2022) admin
3,275 0 0

★且听安全-点关注,不迷路!



CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现

★漏洞空间站-优质漏洞资源和小伙伴聚集地!


漏洞信息


接上文:


CVE-2022-31626 PHP远程命令执行漏洞成因分析与复现

XCyber,公众号:且听安全CVE-2022-31626 PHP远程命令执行漏洞成因分析与复现


PHP 同时还通报了另一个高危漏洞信息,编号为 CVE-2022-31625:


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


在 `PHP_FUNCTION` 中分配在堆上的 `char*` 数组没有被清除,如果发生转换错误,将会调用 `_php_pgsql_free_params` 函数,由于数组没有初始化,导致可以释放之前请求的值,导致远程代码执行。漏洞影响版本:


  •  5.3.0 <= PHP 5.x <= 5.6.40

  •  7.0.1 <= PHP 7.x < 7.4.30

  •  8.0.0 <= PHP 8.0.x < 8.0.20

  •  8.1.0 <= PHP 8.1.x < 8.1.7


漏洞成因


在 `PHP_FUNCTION` 中,利用 `safe_emalloc` 申请指针数组 `params` ,但是没有进行初始化,导致 `params` 数组中包含有内存中残留的数据或指针。如果发生异常,代码会执行 `_php_pgsql_free_params` 函数对整个指针数组进行释放:


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


在 `_php_pgsql_free_params` 函数中,根据数组中元素的总数量 `num_params` 逐个释放非 0 的指针,但是这个指针可能尚未被未初始化,因此导致非预期的内存释放:


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


这是典型的内存未初始化漏洞,如果攻击者能够控制未初始化的内存内容,可以实现任意内存释放,进而实现释放后再引用  UAF ,最终实现远程代码执行。在最新的 PHP 版本中,已经对该漏洞进行修复,将原来的总数 `num_params` 改为了当前计数值 `i` ,以此来保证所有释放的指针都是初始化过的:


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


漏洞复现


修改 `php.ini`,启用 `pgsql` 扩展:


extension=pgsql


postgres 数据库安装:


sudo apt install postgresql postgresql-contribsudo /etc/init.d/postgresql start


postgres 配置密码并允许网络访问。重启服务:


sudo /etc/init.d/postgresql restartsudo /etc/init.d/postgresql status


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


利用 POC ( `test.php` )触发漏洞,可以看到 `efree` 释放了一个错误地址导致进程崩溃:


php.exe -f test.php


CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现


修复方式


该内存未初始化漏洞,容易转化成 UAF 漏洞,利用难度比 CVE-2022-31626 要简单。通过远程堆风水极有可能实现任意内存释放,进而通过 UAF 实现远程代码执行。受影响客户需要尽快做好补丁升级和防护。


目前官方已发布修复版本,用户可升级至以下安全版本:


  •  PHP 8.1.7

  •  PHP 8.0.20

  •  PHP 7.4.30


有兴趣学习交流漏洞知识的小伙伴,请加入我们的漏洞空间站-致力于打造优质漏洞资源和小伙伴聚集地!



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



★且听安全-点关注,不迷路!

CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现



★漏洞空间站-优质漏洞资源和小伙伴聚集地!

CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现

原文始发于微信公众号(且听安全):CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现

版权声明:admin 发表于 2022年6月12日 上午12:01。
转载请注明:CVE-2022-31625 PHP内存未初始化导致RCE漏洞成因分析和复现 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...