轩辕三官 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 简介 涉及漏洞: CVE-2016-8869 CVE-2016-8870 利用上述漏洞,攻击者可以注册特权用户。 POC: https://github.com/XiphosResearch/exploits/tree/master/Joomraa https://www.exploit-db.com/exploits/40637/?简易资讯聚合 分析文章: http://paper.seebug.org/88/ http://paper.seebug.org/86/ 注: 0x01和0x02摘自分析文章。 http://paper.seebug.org/88/ http://paper.seebug.org/86/ 0x01 CVE-2016-8870 漏洞影响 当网站注册关闭时,仍然可以创建用户。 影响版本 3.4.4至3.6.3 漏洞原理 用户注册有两种方法: userscontrollerregistration:register()位于components/com _ users/controllers/registration . PHP中。 UsersControllerUser:register()位于components/com _ users/controllers/user . PHP中 与userscontrollerregistration:register()相比,UsersControllerUser:register()的实现没有这几行代码: //如果注册被禁用-重定向到登录页面。 if(jcomponentphelper:get params(' com _ users ')-get(' allowUserRegistration ')==0) { $ this-set redirect(j route:_(' index . PHP?option=com_usersview=login ',false)); 返回false } 这几行代码检查是否允许注册,也就是说,如果我们可以使用UsersControllerUser:register()的方法进行注册,就可以绕过这个测试。 补丁分析 userscontroleruser:register()方法已被正式删除。 注: 以上引自http://paper.seebug.org/86/. 0x02 CVE-2016-8869 漏洞影响 当网站注册关闭时,您仍然可以创建特权用户。 影响版本 3.4.4至3.6.3 漏洞原理 构建一个特殊的请求包,将值分配给用于表示权限的组。 补丁分析 userscontroleruser:register()方法已被正式删除。 注: 以上引自http://paper.seebug.org/88/. 0x03 实际测试 测试系统: Win8.1 x86 1、搭建php环境 下载phpStudy 安装后如图所示 配置目录是:C:\WWW 2、配置Joomla环境 从以下地址下载Joomla 3 . 6 . 3版: 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密码-e [email protected] http://192 . 168 . 1 . 111 如下图,提示您登录邮箱查看激活邮件,因此需要为邮件参数填写真实邮箱地址。 此时查看Joomla后台,发现用户添加成功,但状态为未激活,如图。 5、设置Joomla,开启发送激活邮件的功能 选择全局配置-全局-服务器。 画 设置邮箱参数 注: 需要为邮箱帐户打开SMTP功能。 选择发送测试邮件来验证邮箱,如图所示 如图所示,验证邮件是否被成功接收。 6、再次测试POC 成功收到激活邮件,如图 打开链接,报错,如图。 在以下位置检查Joomla源代码: https://github . com/Joomla/Joomla-CMS/blob/staging/components/com _ users/controllers/registration . PHP 找到了问题的原因:如果用户注册或账号激活被禁用,抛出a403。 如下图 7、开启用户注册功能 选择【全局配置】-【用户】-【用户选项】,点击【允许用户注册】,如图。 注: 从Joomla3.4开始,默认关闭用户注册功能。 8、最后测试 打开用户注册功能后,再次点击激活邮件,即可成功激活账户。 画 用户激活显示在后台,如图所示 9、得出最终结论 当用户注册在网站后台关闭,但状态为非活动时,可以利用此漏洞创建特权用户。 攻击者的邮箱只有在网站后台开启发送邮件的功能后才能收到激活邮件。 只有在网站后台开启用户注册功能,激活码才能生效,这样才能激活用户。 非活动用户不能登录。 Joomla 3.4版本以后,默认关闭用户注册功能。 Joomla升级到3.6.4后,测试poc显示攻击成功。但是网站后台没有添加用户,也没有发送激活邮件,所以防御成功。 综上所述,攻击者需要同时满足以下条件才能获得网站后台管理员权限: Joomla版本是3.4.4-3.6.3。 网站在后台开启邮件发送功能。 在后台打开用户注册功能。 0x04 备注 感谢DM的帮助。 本文仅为测试记录。 根据POC的说法,开发一个python脚本来检查网站是否开放注册。地址如下: https://github . com/3g student/Test-Exploit-for-Joomla-3 . 4 . 4-3 . 6 . 4 可以用来简单判断网站是否支持用户注册。 在此提醒网站管理员,尽快升级Joomla,如果Joomla版本过低,并且开启发送邮件和用户注册功能,那么很容易遭到攻击。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子