【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞

渗透技巧 3年前 (2022) admin
1,179 0 0
漏洞信息


Bitbucket Data Center是Atlassian的Git存储库管理解决方案,它为需要高可用性和大规模性能的企业提供源代码协作。


近日爆出Atlassian BitBucket Data Center存在CVE-2022-26133未授权反序列化漏洞,问题所在的服务位于5701 Hazelcast接口,经过测试发现在开启集群授权License后漏洞可用。


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


影响版本为:


  • All 5.x versions >= 5.14.x

  • All 6.x versions

  • All 7.x versions < 7.6.14

  • All versions 7.7.x through 7.16.x

  • 7.17.x < 7.17.6

  • 7.18.x < 7.18.4

  • 7.19.x < 7.19.4

  • 7.20.0


环境搭建


搭建7.18.2 windows版本测试环境,安装的时候选择`Data Center instance`:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


在`_start-webapp.bat`中添加xdebug选项进行远程调试:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


cluster授权问题


`Bitbucket Data Center`使用`Hazelcast`进行内存数据缓存,它是一个分布式内存数据存储和计算平台,作为内存数据存储,`Hazelcast`通过将数据存储在内存中,让您可以更快地访问数据。


`Hazelcast`默认情况下开启端口 5701 ,Bitbucket通过`EnterpriseNodeExtension`启动`HazelCast`实例,通过`getSocketInterceptorConfig`获取Socket配置:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


在`NetworkConfig`中可以看到默认的端口为`5701`:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


使用telnet或nc默认访问`5701`端口,提示`Clustering is not enabled`,之后TCP连接被强制断开:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


调试代码可知使用`isClusteringEnabled`检查是否具有`Cluster`授权:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


注意看`clusterEnabled`字段,这里的license并没有授权:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞



使用Idea的Evaluate功能将修改为`clusteringEnabled=True`:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


之后便能正常访问该接口了:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


触发点分析


问题代码并不太复杂,`BitBucket Hazelcast`接收到TCP连接后,首先执行`ClusterJoinSocketInterceptor.onAccept`函数:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


然后动态调用`DefaultClusterJoinManager.accept`函数:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


在`checkAcceptingClusterConnections`函数中检查系统状态和`Cluster`模式是否可用(在上一节中调试过):


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


接下来继续执行`this.clusterAuthenticator.authenticate(request)`:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


执行`com.atlassian.stash.internal.cluster.SharedSecretClusterAuthenticator.runMutualChallengeResponse`函数,`SharedSecretClusterAuthenticator`为BitBucket自行实现的一个身份认证代码:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


`receiveObject`处存在反序列化调用:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


执行`receiveObject`前需通过`verifyGroupName`检查:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


比较幸运的是判断`groupName`前服务端会通过`out.writeUTF`会返回自身`groupName`,这样我们就可以探测服务器的名称了。之后如果报文中读取不到`RemoteGroup`的话TCP会一直保持连接:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


漏洞利用


首先是获取目标服务器的`groupName`,使用wireshark捕获返回`groupName`报文,分析可知格式为`4字节长度+字符串`格式:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


发送`x00x00x00x01x31`字节数据,服务器成功读取到`remoteGroup`并断开了TCP连接:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


对于反序列化利用报文,虽然请求失败,依然可以从返回的数据中推测反序列化头以`xffxffxffx9c`开头:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


得到反序列化请求格式如下:


LEN_GROUPNAME[4bit] + GROUPNAME + xffxffxffx9c + XACXEDX00X05......


最后是利用链问题,`Hazelcast`低版本曾经存在CVE-2016-10750反序列化漏洞,但在BitBucket中并不能直接使用,可以结合cb1链实现RCE:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


补充说明


Confluence Data Center同样可能受到影响,请在防火墙中限制以下端口:


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


感兴趣的小伙伴可以自行对Confluence Data Center进行研究。



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。


【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


点关注,不迷路!

【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞

原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞

版权声明:admin 发表于 2022年4月19日 上午12:00。
转载请注明:【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...