Exchange利用

语言: CN / TW / HK

1.前言

Windows Exchange Server,是国内外应用非常广泛的邮件服务器,是微软公司的一套电子邮件服务组件。简单而言,Exchange server可以被用来构架应用于企业、学校的邮件系统。在渗透测试过程中经常会发现目标系统存在Exchange server所以便尝试总结利用方式扩展渗透的思路,这也是本文的初衷。

1.1环境搭建

参考网上的步骤和配置完成搭建即可 https://saucer-man.com/information_security/748.html 唯一要说明的是,进入安装setup步骤不用右键管理员权限,有时候右键后反而会卡住无法进行安装引导。 简单exchange测试环境搭建完成

安装完后需要配置的:允许以@方式登录

1. 允许以<username>@<domain>方式登录 2. 配置外部URL访问

配置外部URL访问 (ecp和owa都要改) 按照命令重启即可 新建用户 Exchange安装完后只有当前机器加入的域用户,在Exchange新建用户===域新建普通用户 添加用户有两种方法:

* 新建用户 * 从现有的域用户添加用户(现有域用户所在的组有什么权限,添加后的用户就有什么权限)

邮件测试

1.2 dork

microsoft exchange 2013:app="Microsoft-Exchange-2013"||app="Microsoft-Exchange-Server-2013-CU21"||app="Microsoft-Exchange-Server-2013-CU17"||app="Microsoft-Exchange-Server-2013-CU23"||app="Microsoft-Exchange-Server-2013-CU13"||app="Microsoft-Exchange-Server-2013-CU22"||app="Microsoft-Exchange-Server-2013-CU11"||app="Microsoft-Exchange-Server-2013-CU2"||app="Microsoft-Exchange-Server-2013-CU16"||app="Microsoft-Exchange-Server-2013-CU19"||app="Microsoft-Exchange-Server-2013-CU3"||app="Microsoft-Exchange-Server-2013-CU18"||app="Microsoft-Exchange-Server-2013-CU5"||app="Microsoft-Exchange-Server-2013-CU20"||app="Microsoft-Exchange-Server-2013-CU12"||app="Microsoft-Exchange-Server-2013-CU15"||app="Microsoft-Exchange-Server-2013-CU10"||app="Microsoft-Exchange-Server-2013-CU9"||app="Microsoft-Exchange-Server-2013-CU6"||app="Microsoft-Exchange-Server-2013-CU7"||app="Microsoft-Exchange-Server-2013-CU1"||app="Microsoft-Exchange-Server-2013-CU14"||app="Microsoft-Exchange-Server-2013-CU8"||app="Microsoft-Exchange-Server-2013-RTM"||app="Microsoft-Exchange-Server-2013-SP1"||app="Microsoft-Exchange-2013" microsoft exchange 2016:app="Microsoft-Exchange-Server-2016-CU19"||app="Microsoft-Exchange-Server-2016-CU3"||app="Microsoft-Exchange-Server-2016-CU12"||app="Microsoft-Exchange-Server-2016-RTM"||app="Microsoft-Exchange-Server-2016-CU7"||app="Microsoft-Exchange-Server-2016-CU17"||app="Microsoft-Exchange-Server-2016-CU2"||app="Microsoft-Exchange-Server-2016-CU1"||app="Microsoft-Exchange-Server-2016-CU14"||app="Microsoft-Exchange-Server-2016-CU5"||app="Microsoft-Exchange-Server-2016-CU11"||app="Microsoft-Exchange-Server-2016-CU9"||app="Microsoft-Exchange-Server-2016-CU16"||app="Microsoft-Exchange-Server-2016-CU10"||app="Microsoft-Exchange-Server-2016-CU6"||app="Microsoft-Exchange-Server-2016-CU13"||app="Microsoft-Exchange-Server-2016-CU18"||app="Microsoft-Exchange-Server-2016-CU8"||app="Microsoft-Exchange-Server-2016-CU4"||app="Microsoft-Exchange-2016-POP3-server" microsoft exchange 2019:app="Microsoft-Exchange-Server-2019-CU5"||app="Microsoft-Exchange-Server-2019-CU3"||app="Microsoft-Exchange-Server-2019-Preview"||app="Microsoft-Exchange-Server-2019-CU8"||app="Microsoft-Exchange-Server-2019-CU1"||app="Microsoft-Exchange-Server-2019-CU7"||app="Microsoft-Exchange-Server-2019-CU2"||app="Microsoft-Exchange-Server-2019-CU6"||app="Microsoft-Exchange-Server-2019-RTM"||app="Microsoft-Exchange-Server-2019-CU4" microsoft exchange 2010:app="Microsoft-Exchange-2010-POP3-server-version-03.1"||app="Microsoft-Exchange-Server-2010"

2.思维导图作战图

3.具体利用

3.1基础架构

在exchange 2010中,exchange包含五个服务器角色,分别为邮箱服务器,客户端访问服务器,集线传输服务器,统一消息服务器,边缘传输服务器。在后来的exchange 2013中服务器被精简为3个:邮箱服务器,客户端访问服务器,边缘传输服务器 exchange 2016和2019中则只有 邮箱服务器和边缘传输服务器了。

a.邮箱服务器mailbox server,提供托管邮箱,公共文件夹等服务,是必选的服务器角色

b.客户端访问服务器client access server,用来接收并处理不同客户端的请求,并提供各种接口给客户以访问Exchange服务,

MAPI访问 POP3和IMAP4访问 Outlook Web App访问(OWA) Outlook Anywhere访问 Autodiscover自动发现服务 可用性服务

c.集线传输服务器hub transport server,核心服务是Microsoft Exchange Transport,用于处理大多数邮件的路由、策略等以及Mail Flow。起一个邮件传输中继的作用。

e.统一消息服务器unified messaging server,用于允许邮箱用户可以在邮件中发送存储语音消息和传真消息,可选角色

f.边缘传输服务器edge transport server,通常部署于网络边界。其接受来自内部组织的邮件和来自外部可信服务器的邮件,然后应用特定的反垃圾邮件、反病毒策略,最后将通过策略筛选的邮件路由到内部的集线传输服务器,可选角色

g.常用接口通常Exchange Server 有以下接口,即可访问的接口连接如下:

接口

说明

/autodiscover

自Exchange Server 2007开始推出的一项自动服务,用于自动配置用户在Outlook中邮箱的相关设置,简化用户登陆使用邮箱的流程。

/ecp “Exchange Control Panel”

Exchange管理中心,管理员用于管理组织中的Exchange的Web控制台

/ews “Exchange Web Services”

Exchange Web Service,实现客户端与服务端之间基于HTTP的SOAP交互

/mapi

Outlook连接Exchange的默认方式,在2013和2013之后开始使用,2010 sp2同样支持

/Microsoft-Server-ActiveSync

用于移动应用程序访问电子邮件

/OAB “Offline Address Book”

用于为Outlook客户端提供地址簿的副本,减轻Exchange的负担

/owa “Outlook Web APP”

Exchange owa 接口,用于通过web应用程序访问邮件、日历、任务和联系人等

/powershell

用于服务器管理的Exchange管理控制台

/RPC

早期的Outlook还使用称为Outlook Anywhere的RPC交互

3.2信息收集

3.2.1版本确定可以通过OWA,ECP接口的HTML源代码确定版本,源代码搜索favicon.ico 或者在EWS接口,在Response Headers中的X-OWA-Version可以获得精确版本 我这边测试了一下我的2016靶机和线上的2019没有版本信息 网上2016存在版本信息、2010没有找到对应资产 ** 3.2.2 IP泄露 抓包以下接口包,将HTTP版本改为1.0,并删除HOST头,就会暴露exchange ip,有时会暴露内网IP 想要更方便的话,可以用msf的模块自动搜集 use auxiliary/scanner/http/owa_iis_internal_ip 我这里测试不同版本都没有成功

3.2.3泄露exchange服务器信息 当我们对exchange服务器进行NTLM质询时,在服务器返回challenge时同时会返回域信息,机器名等信息。以此为基础可以对exchange进行服务器信息搜集 直接nmap

nmap host  -p 443 --script http-ntlm-info --script-args http-ntlm-info.root=/rpc/rpcproxy.dll -P

3.3.密码爆破

常用于暴力破解的有 1.Autodiscover(401认证NTLM Authenticate) 2.OWA(post表单) 3.EWS(401认证NTLM Authenticate) 4.Microsoft-Server-ActiveSync(401认证+base64) autodiscover 爆破的原理是,访问autodiscover时浏览器会弹出认证框,当输入正确的凭证后则会显示XML文档内容。根据此返回的内容进行暴力判断的依据。 使用ruler工具 https://github.com/sensepost/ruler ruler是针对Exchange的半自动利用工具,其Brute功能使用率较高,主要通过Autodiscover接口进行密码枚举。准备用户名、密码字典:user.txt、pass.txt

ruler-win64.exe --url https://192.168.43.135/autodiscover --insecure brute -delay 0 --users user.txt --passwords pass.txt

测试速度比较缓慢

3.4.漏洞利用

关于漏洞版本判断通过上面收集到的对于的exchange版本号码和发表时间 https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019 查看具体的漏洞详情,如果发布的exchange版本在该漏洞补丁之前就有,那么可能存在漏洞就可以打一波,但是实战中一般都是先打一波,如果没有成功后面再来验证 https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26855 CVE-2021-26855

是⼀个SSRF,只需要能够访问Exchange服务器,

攻击者可以不经过任何类型的身份验证来利⽤此漏洞

poc:https://saucer-man.com/information_security/748.html#cl-8

CVE-2021-27065

是⼀个任意⽂件写⼊漏洞,它需要登陆的管理员账号权限才能触发

登录管理员账号后,进入:服务器——>虚拟目录——>OAB

编辑OAB配置,在外部链接中写⼊shell并保存。 保存后选择重置虚拟目录 

成功写入webshell

CVE-2021-26855+CVE-2021-27065组合拳利用

整个过程都是在未登录的状态下,利用SSRF漏洞访问内部资源,Cookie中的 X-BEResource字段内容为要访问的资源链接。利用过程如图:

1.获取server name,/ecp/xx.js,cookie中 local实际中 为目标exchange的域名;

2.通过SSRF漏洞读取autodiscover.xml文件,获取LegacyDN的值;

3.利用Legacy DN获取SID;

此处要在 LegacyDN 后面添加:

\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x09\x04\x00\x00\x09\x04\x00\x00\x00\x00\x00\x00

4.利用SID获取Session、msExchEcpCanary;

5.写入shell

保存到指定路径

exphttps://saucer-man.com/information_security/748.html#cl-8

proxyshell组合拳利用

CVE-2021-34473 - 一个ssrf漏洞 CVE-2021-34523 - 利用CVE-2021-34473配合Exchange PowerShell BackEnd提权伪造获得高权限用户token值 CVE-2021-31207 - 利用token值认证后利用伪造payload邮件任意文件写入webshell

CVE-2021-34473

payload

https://192.168.43.135/autodiscover/[email protected]/mapi/nspi/?&Email=autodiscover/autodiscover.json%[email protected]

1.首先利用CVE-2021-34473的ssrf漏洞需要获取对应账户的LegacyDn

2.利用Legacy DN获取SID

CVE-2021-34523

3.获取sid后利用脚本(脚本网上有现成的工具和使用方法这里就不赘述)构造token值,测试可以正常调用powshell接口

CVE-2021-31207

4.利用脚本构造webshell再利用该接口发送伪造的payload邮件进一步写入webshell

最后使用WsMan协议调用exchange powershell接口,将邮件保存到本地中便成功写入,这里也有大佬写好的现成脚本可以使用。

exp

https://blog.csdn.net/weixin_43820662/article/details/120669214

真实情况下使用exp脚本打的时候可能遇到没有生成webshell原因大概率是被本地defender查杀了

尝试了利用构造的免杀webshell替换成功上线

蚁剑连接

这里注意需要把忽略https证书的设置选上不然会连不上

CVE-2021-31196

由于利用条件相对比较苛刻一点就没有深入研究,等有空在进行补充

3.5邮件窃取

实战中遇到短信二次验证情况无法登陆可以利用EWS SOAP XML message访问Exchange的资源,这里可以直接使用脚本ewsManage.py、ewsManage_Downloader.py、owaManage.py进行邮件内容的导出,这里就不赘述了。