Joomla 3.4.4-3.6.3 Account Creation 和 Privilege Escalation 测试记录
0x00 简介
涉及漏洞:
- CVE-2016-8869
- CVE-2016-8870
利用上述漏洞,攻击者可以注册特权用户
POC:
- https://github.com/XiphosResearch/exploits/tree/master/Joomraa
- https://www.exploit-db.com/exploits/40637/?rss
分析文章:
注:0x01 和 0x02 内容节选自分析文章
0x01 CVE-2016-8870
漏洞影响
网站关闭注册的情况下仍可创建用户
影响版本
3.4.4 to 3.6.3
漏洞原理
存在两个用于用户注册的方法:
- 位于 components/com_users/controllers/registration.php 中的 UsersControllerRegistration::register()
- 位于 components/com_users/controllers/user.php 中的 UsersControllerUser::register()
相对于 UsersControllerRegistration::register(),UsersControllerUser::register() 的实现中并没有这几行代码:
// If registration is disabled - Redirect to login page.
if (JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0)
{
$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
return false;
}
这几行代码是检查是否允许注册,也就是说如果我们可以用 UsersControllerUser::register() 这个方法来进行注册就可以绕过这个检测
补丁分析
官方删除了 UsersControllerUser::register()
方法
注:以上引用自 http://paper.seebug.org/86/
0x02 CVE-2016-8869
漏洞影响
网站关闭注册的情况下仍可创建特权用户
影响版本
3.4.4 to 3.6.3
漏洞原理
构造特殊的请求包实现对用来表示权限的 groups 进行赋值
补丁分析
官方删除了 UsersControllerUser::register() 方法
注:以上引用自 http://paper.seebug.org/88/
0x03 实际测试
测试系统:
Win8.1 x86
1、搭建 php 环境
下载安装 phpStudy
安装后如图
配置目录为:C:\WWW
2、配置 Joomla 环境
下载 3.6.3 版本的 Joomla,地址如下:https://github.com/joomla/joomla-cms/releases/download/3.6.3/Joomla_3.6.3-Stable-Full_Package.tar.gz
解压后将文件放于 C:\WWW
下
访问 http://localhost 进入安装页面
如图
数据库类型选择 MySQL,如图
登陆数据库,默认密码为 root
如图
等待安装完成
3、网页登陆,测试
环境配置成功,如图
4、poc 测试
poc 地址:https://github.com/XiphosResearch/exploits/tree/master/Joomraa
参数如下:
joomraa.py -u hacker -p password -e hacker@example.com http://192.168.1.111
如下图,提示需要登陆邮箱查看激活邮件,所以邮箱参数需要填写真实的邮箱地址
此时查看 Joomla 后台,发现用户添加成功,但是状态为未激活,如图
5、设置 Joomla,开启发送激活邮件的功能
选择 Global Configuration-Global-Server
如图
设置邮箱参数
注: 邮箱账户需要开启 SMTP 功能
选择 Send Test Mail
验证邮箱,如图
如图,验证邮件接收成功
6、再次测试 POC
成功收到激活邮件,如图
点开链接后报错,如图
查看 Joomla 源码,位置如下:https://github.com/joomla/joomla-cms/blob/staging/components/com_users/controllers/registration.php
找到问题原因: If user registration or account activation is disabled, throw a 403.
如下图
7、开启用户注册功能
选择 Global Configuration-Users-User Options,点击允许用户注册,如图
注:自 Joomla3.4 以后,用户注册功能默认关闭
8、最后测试
开启用户注册功能后,再次点击激活邮件,成功激活账户
如图
后台显示用户激活,如图
9、得出最终结论
利用该漏洞可在网站后台关闭用户注册的情况下创建特权用户,但是状态为未激活
只有网站后台开启发送邮件的功能后,攻击者邮箱才能收到激活邮件
只有网站后台开启用户注册功能,激活码才能生效,使得用户被激活
未激活的用户无法用于登录
高于 3.4 版本的 Joomla,用户注册功能默认关闭
Joomla 升级到 3.6.4 后,测试 poc 显示攻击成功,然而网站后台并没有添加用户,也不会发送激活邮件,防御成功
综上, 攻击者想要获得网站后台管理员权限,需要同时满足以下条件:
- Joomla 版本为 3.4.4-3.6.3
- 网站后台开启发送邮件功能
- 网站后台开启用户注册功能
0x04 备注
感谢 DM 的帮助
本文仅为测试记录
根据 POC 开发了一个检查网站是否开放注册功能的 python 脚本,地址如下:https://github.com/3gstudent/Test-Exploit-for-Joomla-3.4.4-3.6.4
可用来简单判断网站是否支持用户注册
在此提醒网站管理员,尽快升级 Joomla,如果 Joomla 版本过低,并且开启发送邮件和用户注册功能,那么很容易遭到攻击。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论