跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

Exchange管理中心(EAC)开发指南

精选回复

发布于

0x00 前言

Exchange Center (EAC)是Exchange Server中基于Web的管理控制台。在渗透测试和利用中,EAC通常需要通过代码来操作。这张纸将打开一个副本。

操作EAC实现代码eacManage,记录开发细节,方便后续二次开发。

0x01 简介

本文将介绍以下内容:

程序实现原理

开源代码eacManage

eacManage函数简介

0x02 EAC的基本操作

关于EAC的信息:

https://docs . Microsoft . com/en-us/Exchange/architecture/client-access/Exchange-admin-center?view=exchserver-2019

1.添加邮箱用户和设置邮箱用户的权限

添加邮箱用户需要在收件人-邮箱页面下完成,如下图所示。

2-1.png

邮箱用户的权限设置需要在权限-管理员角色页面下完成,默认在管理员角色页面下建立多个管理员角色组,如下图所示。

2-2.png

每个管理员角色组可以通过设置角色属性来设置具体的权限,如下图所示。

2-3.png

将邮箱用户添加到指定的管理员角色组以获得相应的权限,并通过创建新的管理员角色组或设置现有管理员角色组的角色属性来修改权限。

2.导出所有邮箱用户列表

您需要在收件人-邮箱页面下操作,如下图所示

2-4.png

0x03 程序实现原理

目前交换服务器没有开放程序实现的接口,但是我们可以通过构造特定格式的POST包来实现。

您可以选择以下两种方式来抓取包:

Chrome浏览器自带的数据包捕获工具可以直接捕获明文数据,只需在Chrome界面按F12选择网络即可。具体可参考之前的文章《渗透基础——通过Outlook Web Access(OWA)读取Exchange邮件的命令行实现》。

Wireshark,您需要配置一个证书来捕获明文数据。方法请参考之前的文章《渗透技巧——Pass the Hash with Exchange Web Service》。

具体的POST包格式如下:

1.查看所有管理员角色组

请求URL:/ECP/users groups/adminloregroups . SVC/getlist

参数:

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{'filter':{'SearchText':''},' sort':{'Direction':0,' PropertyName':'Name'}}

2.新建管理员角色组

创建管理员角色组时,需要设置角色属性,即设置管理员角色组的权限。

它分为以下几个步骤:

(1)获得每个角色的RawIdentity

请求URL:/ECP/用户组/管理角色. SVC/获取列表

参数:

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{'filter':{},' sort':{'Direction':0,' PropertyName':'DisplayName'}}

(2)创建管理员角色组

请求URL:/ECP/users groups/adminloregroups . SVC/new object

参数:

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{

属性':

{

姓名':

描述“:”,

聚合范围':

{

' isoorganizationalunit ':false,

ID ':' 00000000-0000-0000-0000-0000000000 '

},

角色':

[

{

__type ':'身份:ECP ',

显示名称':

“原始身份”:

}

],

}

}

3.编辑管理员角色组:

将指定的用户添加到指定的管理员角色组,以便该用户可以获得相应的权限。

它分为以下几个步骤:

(1)获得指定邮箱用户的RawIdentity

请求URL:/ECP/ddi/ddi service . SVC/getlist

参数:

(计划或理论的)纲要

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{

过滤器':

{

参数':

{

_ _ type ':' JsonDictionaryOfanyType:# Microsoft。' exchange . management . control panel ',

SearchText':'[['anr ',' startsWith ',['' '']]'

}

},

排序':{}

}

(2)获得指定管理员角色组的RawIdentity

请参见“1。查看所有管理员角色组”了解格式。

(3)编辑管理员角色组

请求URL:/ECP/users groups/adminloregroups . SVC/set object

参数:

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{

“身份”:

{

__type ':'身份:ECP ',

显示名称':

“原始身份”:

},

属性':

{

成员':

[

{

__type ':'身份:ECP ',

显示名称':

“原始身份”:

}

],

“return object type”:1

}

}

4.删除管理员角色组

请求URL:/ECP/用户组/管理员角色组。SVC/删除对象

参数:

msExchEcpCanary

数据格式:应用程序/json

发送内容:

{

"身份":

[

{

_ _类型“:”身份:ECP ',

显示名称:

"原始身份":

}

],

参数':{}

}

5.新建邮箱用户

请求URL:/ECP/DDI/DDI服务。SVC/新对象

参数:

msExchEcpCanary

(计划或理论的)纲要

数据格式:应用程序/json

发送内容:

{

属性':{

参数:

{

_ _ type ':' JsonDictionaryOfanyType:# Microsoft .交换。管理。'控制面板',

“远程存档”:假,

UserPrincipalName ':

IsNewMailbox':'true ',

显示名称:

姓名:

明文密码:

6.删除指定邮箱用户

(1)获得指定用户的RawIdentity

格式见"3.编辑管理员角色组-(1)获得指定邮箱用户的原始身份"

(2)删除指定邮箱用户

请求URL:/ECP/DDI/DDI服务。SVC/多对象执行

参数:

msExchEcpCanary

(计划或理论的)纲要

工作流程

数据格式:应用程序/json

发送内容:

{

"身份":

[

{

_ _类型“:”身份:ECP ',

显示名称:

"原始身份":

}

],

参数':{}

}

7.导出所有邮箱信息

请求网址:/ECP/用户组/下载。aspx

参数:

msExchEcpCanary

(计划或理论的)纲要

手柄类

数据格式:application/x-www-form-urlencoded

发送内容:

工作流输出=显示名称,邮箱类型,PrimarySmtpAddresstitlesCSV=显示名称,邮箱类型,电子邮件地址PropertyList=DisplayName,RecipientTypeDetails,PrimarySmtpAddress

0x04 开源代码

完整实现代码已上传至github,地址如下:

https://github。com/3g学生Python作业/blob/master/EAC管理器。巴拉圭

代码支持以下功能:

ListAdminRoles

新的最小角色

编辑管理员角色

删除管理员角色

添加邮箱

删除邮箱

ExportAllMailbox

在程序实现上,首先需要登录操作获得参数msExchEcpCanary的内容,具体细节如下:

(1)访问/owa/auth.owa

细节可参考之前的文章《渗透基础——通过Outlook Web Access(OWA)读取Exchange邮件的命令行实现》

这里新加了一个自动识别用户是否初次登录的功能,如果是初次登录的邮箱用户,需要选择时区和语言才能生效

(2)访问/ecp

在返回的饼干中获得参数msExchEcpCanary的内容

0x05 小结

本文开源了操作一个抓取光碟音轨的转换工具(精确的音频副本的缩写)的实现代码eacManage,记录开发细节,便于后续的二次开发,可应用到多个漏洞(如CVE 2020-16875,CVE 2021-24085,CVE 2021-26855,CVE 2021-27065)

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。