Monstra CMS RCE漏洞分析(CVE-2020-13384)
字数 1340 2025-08-25 22:58:55

Monstra CMS RCE漏洞分析(CVE-2020-13384)技术文档

1. 漏洞概述

Monstra CMS是一款基于PHP与XML的轻量级内容管理系统,由乌克兰公司开发,无需使用数据库。在3.0.4版本中存在远程代码执行(RCE)漏洞(CVE-2020-13384),该漏洞源于文件上传功能中不完善的扩展名验证机制。

2. 漏洞原理

2.1 文件上传黑名单机制

Monstra CMS采用黑名单机制限制文件上传类型,黑名单包含以下扩展名:

'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'php', 'phtml', 'php3', 'php4', 'php5', 'phps',
'shtml', 'jhtml', 'pl', 'py', 'cgi', 'sh', 'ksh', 'bsh', 'c', 'htaccess', 'htpasswd',
'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl', 'empty'

2.2 漏洞利用点

黑名单中未包含php7扩展名,攻击者可上传shell.php7文件绕过限制。此外,pht扩展名也可被利用。

3. 技术背景

3.1 PHP相关扩展名含义

  • phtml: PHP脚本嵌在HTML代码中的文件
  • php3, php4, php5, php7: 标识PHP文件使用的开发版本
    • PHP历史版本从PHP3开始,因此没有php2扩展名

3.2 Apache解析机制

PHP文件的解析取决于Apache配置:

Windows环境(Apache 2.4.37)

  • 默认解析.php.php3
  • 配置位置:apache2.4.37/conf/httpd.conf
  • 相关配置:
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
    

Ubuntu环境(Apache 2.4.18)

  • 可解析更多PHP扩展名
  • 配置位置:
    • /etc/mime.types(定义基本映射)
    • /etc/apache2/mods-enabled/php7.0.conf
  • 关键正则表达式:
    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    
    匹配的扩展名:.php, .php3, .php4, .php5, .php7, .pht, .phtml

4. 漏洞利用条件

  1. 目标系统使用Monstra CMS 3.0.4或以下版本
  2. 攻击者具有文件上传权限
  3. 服务器配置允许解析特定PHP扩展名(如php7或pht)

5. 漏洞复现步骤

  1. 访问Monstra CMS文件上传功能
  2. 准备恶意PHP文件,使用以下扩展名之一:
    • shell.php7
    • shell.pht
  3. 上传文件
  4. 访问上传的文件执行任意PHP代码

6. 修复建议

  1. 升级Monstra CMS到最新版本
  2. 修改文件上传验证机制:
    • 使用白名单而非黑名单
    • 严格限制允许上传的文件类型
  3. 服务器配置:
    • 限制Apache解析的PHP扩展名
    • httpd.conf中明确指定允许的PHP扩展名

7. 扩展思考

  1. 文件上传漏洞防御最佳实践:

    • 文件内容验证(而非仅扩展名)
    • 文件重命名
    • 存储在非Web可访问目录
    • 设置适当的文件权限
  2. 其他可能被利用的PHP扩展名:

    • .phar
    • .inc(如果配置不当)
  3. 防御深度:

    • Web应用防火墙(WAF)规则
    • 文件上传目录禁用脚本执行

8. 参考链接

  • 漏洞POC: https://www.exploit-db.com/exploits/48479
  • Apache AddType指令文档: https://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
  • PHP历史版本: https://www.php.net/manual/zh/history.php.php
Monstra CMS RCE漏洞分析(CVE-2020-13384)技术文档 1. 漏洞概述 Monstra CMS是一款基于PHP与XML的轻量级内容管理系统,由乌克兰公司开发,无需使用数据库。在3.0.4版本中存在远程代码执行(RCE)漏洞(CVE-2020-13384),该漏洞源于文件上传功能中不完善的扩展名验证机制。 2. 漏洞原理 2.1 文件上传黑名单机制 Monstra CMS采用黑名单机制限制文件上传类型,黑名单包含以下扩展名: 2.2 漏洞利用点 黑名单中未包含 php7 扩展名,攻击者可上传 shell.php7 文件绕过限制。此外, pht 扩展名也可被利用。 3. 技术背景 3.1 PHP相关扩展名含义 phtml : PHP脚本嵌在HTML代码中的文件 php3 , php4 , php5 , php7 : 标识PHP文件使用的开发版本 PHP历史版本从PHP3开始,因此没有php2扩展名 3.2 Apache解析机制 PHP文件的解析取决于Apache配置: Windows环境(Apache 2.4.37) 默认解析 .php 和 .php3 配置位置: apache2.4.37/conf/httpd.conf 相关配置: Ubuntu环境(Apache 2.4.18) 可解析更多PHP扩展名 配置位置: /etc/mime.types (定义基本映射) /etc/apache2/mods-enabled/php7.0.conf 关键正则表达式: 匹配的扩展名: .php , .php3 , .php4 , .php5 , .php7 , .pht , .phtml 4. 漏洞利用条件 目标系统使用Monstra CMS 3.0.4或以下版本 攻击者具有文件上传权限 服务器配置允许解析特定PHP扩展名(如php7或pht) 5. 漏洞复现步骤 访问Monstra CMS文件上传功能 准备恶意PHP文件,使用以下扩展名之一: shell.php7 shell.pht 上传文件 访问上传的文件执行任意PHP代码 6. 修复建议 升级Monstra CMS到最新版本 修改文件上传验证机制: 使用白名单而非黑名单 严格限制允许上传的文件类型 服务器配置: 限制Apache解析的PHP扩展名 在 httpd.conf 中明确指定允许的PHP扩展名 7. 扩展思考 文件上传漏洞防御最佳实践: 文件内容验证(而非仅扩展名) 文件重命名 存储在非Web可访问目录 设置适当的文件权限 其他可能被利用的PHP扩展名: .phar .inc (如果配置不当) 防御深度: Web应用防火墙(WAF)规则 文件上传目录禁用脚本执行 8. 参考链接 漏洞POC: https://www.exploit-db.com/exploits/48479 Apache AddType指令文档: https://httpd.apache.org/docs/2.4/mod/mod_ mime.html#addtype PHP历史版本: https://www.php.net/manual/zh/history.php.php