Exchange proxyshell exp编写(二)

admin 2021年12月22日01:51:33评论125 views字数 3109阅读10分21秒阅读模式

上一篇文章我们讲解了Exchange ssrf的绕过原因。这篇文章我们主要讲解该如何通过SSRF向Exchange写入一个shell。

在proxylogon漏洞中,我们最终通过登录控制台,向Exchange导出配置并写入shell。proxyshell漏洞中已经修复了这种方法向Exchange写入shell,我们需要通过Exchange online powershell去完成该任务。

当然,通过SSRF直接访问Powershell接口会报错的,提示401错误。Exchange proxyshell exp编写(二)

原因如下

在访问Exchange Powershell接口中,存在一个类似于Java Filter过滤器的东西,用来判断我们是否有权限去访问该接口。Filter列表如下

Exchange proxyshell exp编写(二)

在BackendRehydrationModule模块中,负责鉴权,如图Exchange proxyshell exp编写(二)

在processRequest方法中,会尝试获取x-CommonToken等请求头,并尝试反序列化。该请求头中包含认证信息Exchange proxyshell exp编写(二)

前面一篇文章我们讲过,Exchange 的SSRF漏洞,会将所有的请求体,请求头一并发送。但是单单不会发送关于powershell认证的头,例如x-CommonAccessToken,原因如下图,有关于代理的代码忽略了这几个头。Exchange proxyshell exp编写(二)

看代码可知,当SSRF请求中不存在x-CommonsAccessToken请求头的情况下,会尝试从url的参数中获取x-Rps-CAT的值作为ComonAccess头。Exchange proxyshell exp编写(二)

请求部分我们搞定了,下一步讲讲如何生成这个CommonAccessToken。

Exchange proxyshell exp编写(二)

这是我在系统中随便找到的一个样例CommonAccessToken生成后的内容。其实就是通过sid与username就可以生成。Exchange proxyshell exp编写(二)

首先我们需要想办法获取sid,这一步其实与proxylogon类似。首先通过ssrf,请求AutoDiscover服务,获取legacyDn 请求如图

Exchange proxyshell exp编写(二)

再通过ssrf请求mapiemsmdb接口,获取sid,效果如图

Exchange proxyshell exp编写(二)

获取到sid后,我们可以做的事情就很多了,例如通过ecp接口登录到Exchange的后台,这也是proxyLogon漏洞的下一步玩法。

Exchange proxyshell exp编写(二)

但是我们需要通过Powershell去进行下一步攻击。所以我们需要利用sid与username去计算CommonAccessToken。逆向推导比较复杂,在这里我找到一个python脚本去完成这件事。

Exchange proxyshell exp编写(二)Exchange proxyshell exp编写(二)

计算成功后,我们再次请求Powershell接口,返回200,说明成功了。如图

Exchange proxyshell exp编写(二)

下一步我们该如何请求这个powershell接口呢?这玩意不像bsh任意代码执行,直接跳出来一个web网页让我们执行代码。

通过查询资料可知,客户端通过WsMan协议,请求Exchange的Powershell接口发送指令,格式为soap。

但是WSMAN协议默认不允许我们通过SSRF这种特殊的请求方式去请求。

所以,我们现在有两个选择,魔改WSMAN客户端,或者通过http代理的方式修改请求。

Exchange proxyshell exp编写(二)

魔改的代码截图如下Exchange proxyshell exp编写(二)

请求的url替换上我们的ssrf地址,记得添加一个cookie头就可以了。

下一步就是该如何写入shell了。在BlackHat会议上,已经像我们指明通过导出邮件的方式去写入shell。向服务器导出邮件的时候,可以任意指定后缀。所以我们可以将邮件导出为aspx的文件并写入到服务器中。

exchange中,导出邮件所需要的权限为Mailbox Import Export。需要我们通过powershell接口去修改当前的用户权限,添加一个导出邮件的角色。New-ManagementRoleAssignment –Role "Mailbox Import Export" –User testadministratorExchange proxyshell exp编写(二)

然后直接导出邮件到aspx文件。

New-MailboxExportRequest -Mailbox [email protected] -FilePath –FilePath \127.0.0.1C$exchange的路径shell.aspx

Exchange proxyshell exp编写(二)

但是我们打开就可以发现,文件都是乱码,根本没办法用,如图Exchange proxyshell exp编写(二)

查阅资料可知,这种文件格式为pst,如果导出的话是通过CryptPermute加密过的。但是在文档中曾说过,假如一个邮箱的附件内容已经被CryptPermute加密过,在导出为PST格式的文件的时候会自动解密。

所以我们只需要想办法生成一个通过CryptPermute加密过的webshell即可。然后再通过接口将这个文件作为邮件的附件保存在草稿箱即可。

Exchange proxyshell exp编写(二)
ldZUhrdpFDnNqQbf96nf2v+CYWdUhrdpFII5hvcGqRT/gtbahqXahoI5uanf2jmp1mlU041pqRT/FIb32tld9wZUFLfTBjm5qd/aKSDTqQ2MyenapanNjL7aXPfa1hR+gg2pBvb3qQbfgg9rgvcG1qld2oLJMSGV+9ZUhrdpFNk=

这段base64解密后的内容是

蛋黄是我家狗名,不要作为IDS的规则。

Exchange proxyshell exp编写(二)

我们查看一下邮箱

Exchange proxyshell exp编写(二)

然后再保存,就会看到webshell

Exchange proxyshell exp编写(二)

当然,有经验的同学很容易写出Exp。详细exp在这里就不放了,防止脚本小子乱破坏。

欢迎大家报名线上java课程,从代码审计的角度讲解基础漏洞以及Java特有的安全漏洞。

Java安全课程目录,由于篇幅原因只分享部分课程目录,前面还会有很多基础的内容,我会整理为pdf文档发给大家。

第一章

Classloader 原理以及在java安全中的使用

主要讲解Classloader的原理,不同classloader的类型,双亲委派模型以及如何通过反射调用defineClass。在后面的java漏洞利用中,classloader作为将类与JVM的桥梁将会扮演很重要的角色。

讲解内容

classloader的原理,以及如何动态加载一个class文件

双亲委派模型

Tomcat中classloader的讲解,在tomcat中,并没有完全遵守双亲委派模型。为了实现更好的隔离,tomcat使用另外一种方式实现classloader 几种常见的classloader的使用讲解以及在不同漏洞中的利用方法

第二章

Java asm字节码的使用指南。在java反序列化的payload中,需要动态生成一个javaclass文件。可以通过手工,根据jvm指令构造。也可以通过javaassist自带的编译器构造。

讲解内容

动态生成字节码在java中的作用 javaassist的使用指南 java asm的使用指南 java asm在ysoserial中的使用情况 再探Java 反射原理,使用java asm实现反射机制

第四章

java反序列化协议解析, java 序列化的流协议解读 java ObjectInputstream代码解析 如何实现python读写java 流 python生成 8u20gadget 8u20 漏洞的原理 python生成反序列化Gadget的方法

第七章

内存马实战与查杀

java 漏洞实战分析

调试分析weblogic漏洞 讲解内容     T3协议漏洞 如何调试weblogic T3协议,以及T3协议内容大致讲解 如何diff补丁包 如何判断目标服务器是否存在T3反序列化漏洞(查看黑名单等方法 如何实现T3协议回显代码(cve-2020-2555 + nashorn的回显),报错回显 T3协议如何与IIOP协议配合绕过Nat 如何应急响应weblogic服务器以及如何在不停机的情况下打热补丁 weblogic xmldecoder漏洞


Exchange proxyshell exp编写(二)



本文始发于微信公众号(宽字节安全):Exchange proxyshell exp编写(二)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月22日01:51:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Exchange proxyshell exp编写(二)http://cn-sec.com/archives/457119.html

发表评论

匿名网友 填写信息