(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证

# (CVE-2017-14596)Joomla! 1.5 <= 3.7.5 LDAP注入绕过登录认证 ==================== 一、漏洞简介 ------------ 通过在登录页面利用该漏洞进行攻击,非特权的远程攻击者可以提取出LDAP服务器中所有的用户凭证(用于安装Joomla!),这些凭证包括特权用户以及Joomla!管理员的用户名以及密码。获取到这些凭证之后,攻击者就可以使用这些信息来登录Joomla!的管理员控制面板并完全接管Joomla!,或者通过上传自定义的Joomla!扩展实现远程代码执行并相关的Web服务器。 二、漏洞影响 ------------ Joomla! 1.5 \<= 3.7.5 三、复现过程 ------------ ### 漏洞分析 我们的代码分析解决方案RIPS能够自动化识别出下列代码段中的安全漏洞。首先在LoginController中,Joomla!应用可以从登录表单中接收用户提供的凭证数据。 ### /administrator/components/com\_login/controller.php ![1.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId26.png) 凭证数据会被传递给login方法,而login方法中又会调用authenticate方法。 ### /libraries/cms/application/cms.php ![2.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId28.png) ### /libraries/joomla/authentication/authentication.php ![3.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId30.png) authenticate方法可以向onUserAuthenticate方法发送用户凭证,具体方法取决于管理员所使用的身份验证插件。如果Joomla!在进行身份验证时使用的是LDAP,那么这里将需要调用LDAP插件的内置方法。 ### /plugins/authentication/ldap/ldap.php ![4.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId32.png) 在LDAP插件中,username嵌入在LDAP查询语句(在search\_string选项中指定)中。根据Joomla!的官方文档,search\_string配置选项是一个用于搜索用户的查询字符串,其中的\[search\]会被登录表单中的搜索文本直接替换,例如"uid=\[search\]"。接下来,LDAP查询语句会被传递给LdapClient中的simple\_search方法,这个函数负责与LDAP服务器建立连接并执行ldap\_search方法。 ### /libraries/vendor/joomla/ldap/src/LdapClient.php ![5.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId34.png) 即使RIPS没有能够发现LDAP查询字符串是从一个外部配置文件加载进来的,但RIPS仍然能够成功检测并报告这个漏洞的根本原因:传递给ldap\_search函数的用户输入虽然嵌入在了LDAP查询语句中,但输入数据并没有经过数据清洗。 ### 漏洞复现 由于没有对LDAP查询语句中的username数据进行过滤,这将导致攻击者能够修改LDAP搜索的结果集合。通过使用特殊字符并观察不同的认证错误信息,攻击者将能够通过不断地发送测试payload来暴力破解出凭证字符。 XXX;(&(uid=Admin)(userPassword=A*)) XXX;(&(uid=Admin)(userPassword=B*)) XXX;(&(uid=Admin)(userPassword=C*)) ... XXX;(&(uid=Admin)(userPassword=s*)) ... XXX;(&(uid=Admin)(userPassword=se*)) ... XXX;(&(uid=Admin)(userPassword=sec*)) ... XXX;(&(uid=Admin)(userPassword=secretPassword)) 其中的每一行Payload代码都可以从LDAP服务器中提取出目标数据,而这也是一种相对非常高效的LDAP盲注攻击方式。 可通过一次次爆破尝试出后台账号密码![6.png](./resource/(CVE-2017-14596)Joomla!1.5<=3.7.5LDAP注入绕过登录认证/media/rId36.png)![7.png](/static/qingy/(CVE-2017-14596)Joomla!_1.5__=_3.7.5_LDAP注入绕过登录认证/img/rId37.png) 参考链接 -------- > https://www.freebuf.com/articles/web/149059.html
>
> https://twitter.com/ripstech/status/1094999251417993216

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容