Joomla RCE (CVE-2020-10238) analysis

漏洞描述

Joomla!是美国Open Source Matters团队的一套使用PHP和MySQL开发的开源、跨平台的内容管理系统(CMS)。在其<= 3.9.15版本中由于后台模板功能存在缺陷,导致可向目标存在的php文件中写入恶意代码进而导致远程代码执行。

影响范围

Joomla <= 3.9.15

漏洞分析

首先我们根据现有的poc加入调试代码,大体看一下具体的利用过程,对后面定位分析文件做一个初步判断

根据option参数找到对应的模板操作的主入口文件administrator/components/com_templates/templates.php

该文件首先使用JFactory工厂对对象进行初始化并接收传入的task参数,最后交由execute执行对应的操作跟进execute

根据task获取到对应执行的函数名称,继续跟进save

获取要操作的基础参数,并进行一系列的检查,随后对data进行验证

但是此处校验并非检测data内容,而是检测如果我们传入的是xml格式,此方法会解析出要存入的内容,所以对我们的payload并无大碍
随后调用此模型的save函数,进行具体的写入操作

首先对接受的参数进行解码,路径过滤,判断文件是否可写。如果条件满足则最后调用joomla的文件处理模块进行写入操作

整个过程中未对写入内容和写入文件进行限

漏洞验证

环境&POC

Joomla 3.8.2
CVE-2020-10238

参考链接

JoomlaRCE远程代码执行-CVE-2020-11890-10238-10239( 三个)复现