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

0x01 漏洞起源

說到ms14-068,不得不說silver ticket,也就是銀票。銀票是一張tgs,也就是一張服務票據。服務票據是客戶端直接發送給服務器,並請求服務資源的。若是服務器沒有向域控dc驗證pac的話,那麼客戶端能夠僞造域管的權限來訪問服務器。因此ms14-068的來源和銀票是息息相關的。html

在mimikatz做者的ppt裏面是這樣描述的:linux

ms1.png

因此說這真的是一個大漏洞,容許域內任何一個普通用戶,將本身提高至域管權限。微軟給出的補丁是kb3011780。在server 2000以上的域控中,只要沒有打這個補丁,那麼狀況將是很是糟糕的。git

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

0x02 漏洞利用

2.1 windows環境下測試shell

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

https://github.com/gentilkiwi/kekeoapi

其中的ms14-068.exe正是此漏洞的利用工具。要測試這個漏洞,前提仍是要明白kerberos的整個認證協議過程,否則是不會明白原理的,測試過程當中出了什麼問題也不知道怎麼解決。咱們做爲滲透測試人員,若是說對windows環境中這麼重要的一個認證協議都不瞭解,我想內網滲透也是浮雲吧。promise

利用這個漏洞,咱們須要一個普通域用戶的帳戶名和密碼或者是哈希,哈希傳遞我已經在別的文章中總結了,其實哈希和密碼是有相同的效果。以及域名稱,該用戶的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這個漏洞可謂是威力無窮,在域滲透中,咱們第一步就是應該檢測域控是否有這個漏洞,一旦域控沒有打上這個補丁,將會使咱們的內網滲透工做變得十分簡單。

參考鏈接:

相關文章
相關標籤/搜索