Bitbucket Data Center是Atlassian的Git存储库管理解决方案,它为需要高可用性和大规模性能的企业提供源代码协作。
近日爆出Atlassian BitBucket Data Center存在CVE-2022-26133未授权反序列化漏洞,问题所在的服务位于5701 Hazelcast接口,经过测试发现在开启集群授权License后漏洞可用。
影响版本为:
-
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`:
在`_start-webapp.bat`中添加xdebug选项进行远程调试:
`Bitbucket Data Center`使用`Hazelcast`进行内存数据缓存,它是一个分布式内存数据存储和计算平台,作为内存数据存储,`Hazelcast`通过将数据存储在内存中,让您可以更快地访问数据。
`Hazelcast`默认情况下开启端口 5701 ,Bitbucket通过`EnterpriseNodeExtension`启动`HazelCast`实例,通过`getSocketInterceptorConfig`获取Socket配置:
在`NetworkConfig`中可以看到默认的端口为`5701`:
使用telnet或nc默认访问`5701`端口,提示`Clustering is not enabled`,之后TCP连接被强制断开:
调试代码可知使用`isClusteringEnabled`检查是否具有`Cluster`授权:
注意看`clusterEnabled`字段,这里的license并没有授权:
使用Idea的Evaluate功能将修改为`clusteringEnabled=True`:
之后便能正常访问该接口了:
问题代码并不太复杂,`BitBucket Hazelcast`接收到TCP连接后,首先执行`ClusterJoinSocketInterceptor.onAccept`函数:
然后动态调用`DefaultClusterJoinManager.accept`函数:
在`checkAcceptingClusterConnections`函数中检查系统状态和`Cluster`模式是否可用(在上一节中调试过):
接下来继续执行`this.clusterAuthenticator.authenticate(request)`:
执行`com.atlassian.stash.internal.cluster.SharedSecretClusterAuthenticator.runMutualChallengeResponse`函数,`SharedSecretClusterAuthenticator`为BitBucket自行实现的一个身份认证代码:
`receiveObject`处存在反序列化调用:
执行`receiveObject`前需通过`verifyGroupName`检查:
比较幸运的是判断`groupName`前服务端会通过`out.writeUTF`会返回自身`groupName`,这样我们就可以探测服务器的名称了。之后如果报文中读取不到`RemoteGroup`的话TCP会一直保持连接:
首先是获取目标服务器的`groupName`,使用wireshark捕获返回`groupName`报文,分析可知格式为`4字节长度+字符串`格式:
发送`x00x00x00x01x31`字节数据,服务器成功读取到`remoteGroup`并断开了TCP连接:
对于反序列化利用报文,虽然请求失败,依然可以从返回的数据中推测反序列化头以`xffxffxffx9c`开头:
得到反序列化请求格式如下:
LEN_GROUPNAME[4bit] + GROUPNAME + xffxffxffx9c + XACXEDX00X05......
最后是利用链问题,`Hazelcast`低版本曾经存在CVE-2016-10750反序列化漏洞,但在BitBucket中并不能直接使用,可以结合cb1链实现RCE:
Confluence Data Center同样可能受到影响,请在防火墙中限制以下端口:
感兴趣的小伙伴可以自行对Confluence Data Center进行研究。
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞