近日,joomla官方给出了一个安全公告。从公告可知Joomla! CMS versions 2.5.0 - 3.9.16版本在处理用户组时缺少对根用户组的检查,从而导致了一个提权漏洞的产生(CVE-2020-11890)。
经过我分析之后发现,想要利用这个漏洞,必须先要有一个管理员账号,而这个漏洞的作用仅仅能将管理员提权为超级管理员。
虽然这个漏洞看起来无比鸡肋,但是分析过程却其乐无穷:既了解joomla是如何实现用户组权限划分,又复习了下数据结构。总体上来说漏洞虽小,但分析过程还是很有研究与记录价值的。
漏洞分析
本次漏洞可以将joomla系统中的Administrator用户提权为Super?Users。在分析漏洞前,我们来看一下Super?Users与Administrator有什么区别:
超级管理员?(Super?Users):拥有Joomla的所有权限。并且超级管理员只能由另一个超级管理员来创建。
高级管理员(Administrator):Administrator没有权限将一个用户升级成超级用户或者编辑一个超级用户、不可以修改Joomla的全局设置,没有权限来改变和安装模板和Joomla的语言文件。
作为测试,我们新建三个账号,分别为administrator(administrator用户组)、Super User(Super User用户组)、test(administrator用户组)
使用Administrator账号登陆,访问Joomla全局设置链接
/administrator/index.php?option=com_config
可见Administrator用户组权限不可以访问该功能页面。
使用Administration账号编辑test账号的用户组