0x01 概述

Microsoft Exchange用户可以授权给其他用户对其邮箱文件夹进行各种级别的访问。例如,用户可以授予其他用户读取访问其收件箱中里面的电子邮件,但是要是用户(或Exchange管理员)不小心设置了不正确的访问权限,那么这将导致所有的用户都能访问读取其的邮箱。

使用MailSniper,可以快速枚举任何用户可访问的邮箱。在这篇文章中,我将说明此问题是如何产生的,如何查找存在权限问题的邮箱,以及在无需获取邮箱管理员许可的情况下阅读邮箱中的邮件。

0x02 使用Outlook设置邮箱权限

更改邮箱权限是所有用户在Microsoft Outlook客户端中都能够轻松完成的事情。如果用户右键单击文件夹“收件箱”,然后单击“属性”,然后文件夹的属性菜单就会打开。

单击“权限”选项卡能看到文件夹当前的设置。这使得事情变得有趣了。单击“添加”按钮,用户可以指定某个账户来授予各种权限。这是非常理想的,因为用户能够限制特定人员的访问。但是你会注意到在“权限”中已经包含了“默认”和“匿名”选项。“默认”项目实质上已经包含了组织中的具有访问邮件权限的每个用户。

如果用户错误地将权限级别“默认”设置为“None”之外的其他选项(除Contributor之外),则这可能允许组织中的每个成员访问该邮件文件夹。

邮箱文件夹的权限也可以由Exchange管理员设置。直接在Exchange服务器上使用Set-MailboxFolderPermission cmdlet,可以修改这些邮箱权限的设置。

0x03 Invoke-OpenInboxFinder

作为渗透测试人员,找到全世界都能访问的邮箱对我们是非常有价值的。这允许进行一些其他有趣的攻击媒介。一方面,我们可以搜索其他用户的电子邮件,来获取某些内容,例如密码或敏感数据,而无需其凭据。另一个攻击方面是,如果该用户的电子邮件地址与密码重置系统相关联,攻击者可以触发密码重置,然后访问包含密码重置链接的用户电子邮件。

我已经在MailSniper中添加了一个名为Invoke-OpenInboxFinder的功能,以帮助查找具有设置允许其他用户访问的权限的邮箱。想使用它,我们首先要从目标环境中收集一个电子邮件地址列表。MailSniper有一个名为”Get-GlobalAddressList“的模块,可用于从Exchange服务器检索全局地址列表。它将尝试Outlook Web Access(OWA)和Exchange Web服务(EWS)的方法。此命令可用于从Exchange收集电子邮件列表:

Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain \ username -Password Spring2017 -OutFile global-address-list.txt

如果你处于可以与目标组织的内部Active Directory域进行通信的系统上,也可以使用Harmj0y的PowerView来收集电子邮件列表。将PowerView脚本导入PowerShell会话并运行该脚本以获取电子邮件列表:

Get-NetUser | Sort-Object mail | ForEach-Object {$_.mail} | Out-File -Encoding ascii emaillist.txt

收集邮件列表以后,使用Invoke-OpenInboxFinder功能可以一次检查一个邮箱,以确认当前用户是否可以访问。它还将检查Exchange中是否存在可能被访问的任何公共文件夹。

要使用Invoke-OpenInboxFinder,需要将MailSniper PowerShell脚本导入到PowerShell中:

Import-Module MailSniper.ps1

接下来,运行Invoke-OpenInboxFinder函数:

Invoke-OpenInboxFinder将尝试自动发现基于邮件服务器电子邮件列表中的第一个条目。如果失败,可以使用-ExchHostname标志手动设置Exchange服务器位置。

在下面的示例中,命令终端以名为”jeclipse“的域名用户名运行。再从域中的电子邮件列表中运行Invoke-OpenInboxFinder后,发现了两个公用文件夹。此外”jQuery“可以访问”maximillian.veers@galacticempireinc.com“的收件箱。Invoke-OpenInboxFinder将会打印出每个项目的权限级别。在输出中可以看到”Default“项设置为”Reviewer“。

0x04 使用MailSniper搜索其他用户的邮箱

发现邮箱具有允许用户访问的过多权限之后,MailSniper可用于读取并搜索目标邮箱中的邮件。MailSniper的Invoke-SelfSearch功能,以前主要用于搜索正在运行它的用户的邮箱。我稍作修改,以便能够检查另一个用户的电子邮件。这里需要指定一个名为”OtherUserMailbox“的新标志来访问其他邮箱。该示例命令如下:

Invoke-SelfSearch -Mailbox target-email-address@domain.com -OtherUserMailbox

在下面的截图中,我使用”jeclipse“账户搜索maximillian.veers@galactiempireinc.com的邮箱。发现三个结果,其电子邮件的主题或主题中包含了密码或凭证。

0x05 Office365和对外开放的Exchange服务器

如果Exchange Web服务(EWS)可访问,Invoke-OpenInboxFinder也可以在Internet上的Office365和对外开放的Exchange服务器使用。除非它对外设置了自动发现,否则可能需要使用-ExchHostname手动指定主机名。要连接到Office365,主机名将是”outlook.office365.com“,指定-Remote标志让Invoke-OpenInboxFinder提示可用于向远程EWS服务进行身份验证的凭据。

用于检查托管在Office365上的邮箱以获得广泛权限的示例命令如下:

Invoke-OpenInboxFinder -EmailList。\ emaillist.txt -ExchHostname outlook.office365.com -Remote

以下是客户使用Office365时的实际评估截图。我们可以在组织中访问单个用户的凭据。通过使用从全局地址列表收集的电子邮件列表运行Invoke-OpenInboxFinder,我们可以确定组织中的三个单独的账户允许我们的用户阅读他们的电子邮件。

0x06 建议

显然,防止攻击者访问有效的用户账户是防御的第一步。问题是,它不会阻止你当前的员工去使用这种技术来访问其他用户“UR”有权限访问的邮箱。另外要注意的是,你必须拥有一个有效的相关域账户,以检查是否可以访问他人的邮箱。

如果可能的话,限制这些类在Outlook客户端上的更改非常有帮助的。我已经找到了几篇旧的文章(2010)说明权限选项卡能够用GPO锁定。我没有尝试过这些文章上面说的任何解决方案,但这值得一试。你可以在这里和这里查看这些文章。

使用MailSniper中的Invoke-OpenInboxFinder功能,或使用Exchange上的 Get-MailboxFolderPermission cmdlet审核组织中所有帐户的设置。

0x07 结论

邮箱权限是红蓝和双方都应该注意的问题。通过Outlook在文件夹属性中包含“默认”权限项的方式,这使得用户更有可能错误地授予组织中的所有人对其邮箱进行访问。在红方角度来看,这可以提供在电子邮件中进一步查找访问网络密码或其他敏感数据的机会。蓝方角度则应该担心其一些高级账户(C-Suite类型)意外地与整个公司共享了邮箱,公司员工窥探其他员工,甚至通过这些渠道合法的进行修改邮箱等。

你可以从Github下载MailSniper: https://github.com/dafthack/mailsniper

exp利用工具:https://github.com/sensepost/ruler

参考文献:

https://sensepost.com/blog/2017/outlook-forms-and-shells/

利用MailSniper越权访问Exchange邮箱的更多相关文章

  1. 逻辑漏洞介绍 & 越权访问攻击 & 修复建议

    介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...

  2. (原创)AD账户误删导致Exchange邮箱被删 莫苦恼

    由于人员变动,离职人员AD账户和邮箱经常要删除.但是在删除AD账户的时候难免会犯错,将在用的用户给删除了,这是个痛苦的事情, 然后你会发现Exchange邮箱也会跟着删除,抓狂了..,还好,幸亏这里进 ...

  3. sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户

    现象: sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户 处理办法: 1.Open the Exchange Management Shell 2.输入: New-Mana ...

  4. [转]Thunderbird 使用 Exchange 邮箱

    [转]Thunderbird 使用 Exchange 邮箱 http://my.oschina.net/MaTech/blog/295238#OSC_h3_1 公司最近邮箱只支持Exchange模式, ...

  5. Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库

    Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库时出现以下错误: Message = "每个配置文件中只允许存在一个 <configSect ...

  6. 网络基础 利用vnc viewer访问在vmware虚拟机上的linux

    利用vnc viewer访问在vmware虚拟机上的linux by:授客 QQ:1033553122 Linux服务器为架设在VMware之上的虚拟机,那么可以直接使用VMware自带的vnc,而不 ...

  7. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  8. 通达OA 越权访问-2013/2015版本

    漏洞参考 http://wiki.0-sec.org/0day/%E9%80%9A%E8%BE%BEoa/9.html 复现 根据⽹上的通达 OA的源码找这些敏感地址,如: /general/syst ...

  9. exchange邮箱的”单点登陆“

    在跟exchange集成登陆时,通常有这样的需求,用户需要点击邮件链接的时候直接打开,不再需要输入用户名密码,实现所谓的单点登陆. 通常有两种方式 1.form认证 登陆原理:用js模拟表单登陆 代码 ...

随机推荐

  1. 「Leetcode」13. Roman to Integer(Java)

    分析 把具体的情况一个一个实现即可,没有什么幺蛾子. 代码 class Solution { public int romanToInt(String s) { int ans = 0; for (i ...

  2. 该用哪个:Redis与Memcached之间如何选择呢?

    华为云分布式缓存Redis5.0和Memcached都是华为云DCS的核心产品. 那么在不同的使用场景之下,如何选择Redis5.0和Memcached呢? 就由小编为大家进行详细的数据对比分析吧 R ...

  3. CSS Grid布局指南

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...

  4. 王者荣耀交流协会--第3次Scrum会议

    Scrum master:王玉玲 要求1:工作照片 要求2:时间跨度:2017年10月15号  6:00--6:24  共计24min要求3:地点:传媒西楼204,会议室要求4:立会内容:1.从昨日会 ...

  5. HashMap和HashTable源码分析

    HashMap HashMap是一个实现了Map接口的Hash表.提供所有Map的操作,并且允许null key和null value.HashMap几乎等同于HashTable,只不过HashMap ...

  6. 个人项目----词频统计WEB(部分功能)

    需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...

  7. javac和java的使用

    java -Xmx128m -Dfile.encoding=gbk -cp ./;bin/;./*;lib/* com.qianlima.crawlOthers.Icp REM REM block e ...

  8. php缩略图

    /*引入文件Easyphpthumbnail.class.php 引用地址:http://www.itdaodan.com/article-detail-id-252.html */   class ...

  9. Django之ORM其他骚操作

    Django ORM执行原生SQL # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None, ...

  10. 在Eclipse中开发WEB项目

    本文的演示是从本地文件创建dynamic web project,从svn检出的同时创建dynamic web project于此类似.我们推荐使用解压版的tomcat6.x版本,来作为服务器.可以到 ...