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. 漏洞利用条件
- 目标系统使用Monstra CMS 3.0.4或以下版本
- 攻击者具有文件上传权限
- 服务器配置允许解析特定PHP扩展名(如php7或pht)
5. 漏洞复现步骤
- 访问Monstra CMS文件上传功能
- 准备恶意PHP文件,使用以下扩展名之一:
shell.php7shell.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