Metasploit許可權提升全劇終
0×01 引言
通常,我們在滲透過程中很有可能只獲得了一個系統的Guest或User許可權。低的許可權級別將會使我們受到很多的限制,所以必須將訪問許可權從Guset提升到User,再到Administrator,最後到SYSTEM級別。
滲透的最終目的是獲取伺服器的最高許可權,即Windows作業系統中管理員賬號的許可權,或LINUX作業系統中root賬戶許可權。
提升許可權的方式分為兩類。
縱向提權:低許可權角色獲得高許可權角色的許可權。比如,一個webshell許可權通過提權之後擁有了管理員的許可權,那麼這種提權就是縱向提權。
橫向提權:獲取同級別角色的許可權。比如,通過已經攻破的系統A獲取了系統B的許可權,那麼這種提權就屬於橫向提權。
所以在成功獲取目標機meterpreter shell後,我們要知道現在已經擁有了什麼許可權。1、在meterpreter shell下輸入命令shell進入目標機CMD命令列
2、輸入whoami /groups 命令
3、可以看到這個表是Mandatory Label\Medium MandatoryLevel,說明我們是一個標準使用者,需要將使用者許可權從標準使用者提升到管理員許可權,也就是Mandatory Label\High MandatoryLevel。
提權大體有以下幾種方法:
使用getsystem提升許可權
利用本地漏洞
假冒令牌
繞過Windows賬戶控制(UAC)
HASH
0×02 getsystem
利用meterpreter中的getsystem命令,該命令自動尋找各種可能的適應技術,以便將使用者許可權提升到更高階別。我們輸入getsystem –h 來看下它使用的3種技術,如下圖。
預設值0會嘗試所有列出技術來嘗試提權,直至成功。提權方式採用命令管道模擬提升的方法和令牌複製的方法。輸入getsystem命令即完成操作。具體效果見下圖。
該命令使用方便,並且簡單高效,在滲透測試中會頻繁使用到,建議所有提權過程中先行嘗試此方法。
0×03利用本地漏洞
本地漏洞提權,即使用本地漏洞的利用程式(loca>exploit)提升許可權。就是說通過執行一些現成的造成溢位漏洞的exploit,把使用者從users組或其它系統使用者中提升到administrators組(或root)。
溢位漏洞就像杯子裡裝水,水多了杯子裝不進去,就會把裡面的水溢位來。而相對計算機來說計算機有個地方叫快取區,程式的快取區長度是被事先設定好的,如果使用者輸入的資料超過了這個快取區的長度,那麼這個程式就會溢位了。
1、利用getuid命令檢視已經獲得的許可權,可以看到現在的許可權很低,是個user許可權。嘗試利用getsystem提權,失敗。見下圖:
2.輸入命令shell進入目標機CMD命令列,再利用systeminfo命令或者通過查詢 c:\windows\ 裡留下的補丁號.log來看看目標機大概打了哪些補丁。
可以看到目標機基本上沒有打任何補丁,我們可以嘗試利用Windows下已有的漏洞提權,如ms13_053,ms14_058,ms16_016,ms16_032等等。
相關漏洞的具體資訊分析和共享可以參考下面2個網站:
安全焦點,其BugTraq是一個出色的漏洞和exploit資料來源,可以通過CVE編號,或者產品資訊漏洞直接搜尋。網址:http://www.securityfocus.com/bid。
Exploit-DB,取代了老牌安全網站milw0rm。不斷更新大量的Exploit程式和報告,它的搜尋功能可以搜尋整個網站內容。網址:http://www.exploit-db.com。
Win2012
KB2360937|MS10-084
KB2478960|MS11-014
KB2507938|MS11-056
KB2566454|MS11-062
KB2646524|MS12-003
KB2645640|MS12-009
KB2641653|MS12-018
KB944653|MS07-067
KB952004|MS09-012 PR
KB971657|MS09-041
KB2620712|MS11-097
KB2393802|MS11-011
KB942831|MS08-005
KB2503665|MS11-046
KB2592799|MS11-080
KB956572|MS09-012烤肉
KB2621440|MS12-020
KB977165|MS10-015Ms Viru
KB3139914|MS16-032
KB3124280|MS16-016
KB3134228|MS16-014
KB3079904|MS15-097
KB3077657|MS15-077
KB3045171|MS15-051
KB3000061|MS14-058
KB2829361|MS13-046
KB2850851|MS13-053EPATHOBJ 0day 限32位
KB2707511|MS12-042 sysret -pid
KB2124261|KB2271195 MS10-065 IIS7
KB970483|MS09-020IIS6
KB3139914|MS16-032
KB3124280|MS16-016
KB3134228|MS16-014
KB3079904|MS15-097
KB3077657|MS15-077
KB3045171|MS15-051
KB3000061|MS14-058
KB2829361|MS13-046
KB2850851|MS13-053EPATHOBJ 0day 限32位
KB2707511|MS12-042 sysret -pid
KB2124261|KB2271195 MS10-065 IIS7
KB970483|MS09-020IIS6
KB3139914|MS16-032
KB3124280|MS16-016
KB3134228|MS16-014
KB3079904|MS15-097
KB3077657|MS15-077
KB3045171|MS15-051
KB3000061|MS14-058
KB2829361|MS13-046
KB2850851|MS13-053EPATHOBJ 0day 限32位
KB2707511|MS12-042 sysret -pid
KB2124261|KB2271195 MS10-065 IIS7
KB970483|MS09-020IIS6
3、接著我們輸入命令background,就是把你當前的metasploit shell轉為後臺執行
4.然後搜尋Metasploit中是否有相應的exploit程式,下面以ms16_016(該模組在windows 32位和64位下都有效)為例。
5.通過這個exploit進行提權,具體命令如下圖:
我們可以看到成功利用了notepad漏洞,啟動了一個PID為708的程式。接著輸入PS命令檢視目標機程式,找到PID 708這個程式,並且利用migrate命令遷移到該程式中。最後執行getsystem,再次檢視許可權,看到沒有,已經是系統許可權了。
0×04假冒令牌
令牌是系統臨時金鑰,它允許你在不提供密碼或其他憑證的前提下,訪問網路和系統資源。這些令牌將持續存在於系統中,除非系統重新啟動。我們輸入use incognito命令,然後輸入list_tokens –u,列出可用token,見下圖:
我們可以看到有二種型別的令牌,一種是Delegation Tokens,也就是授權令牌,它支援互動式登入(比如可以通過遠端桌面登陸訪問)。還有一種是Impersonation Tokens,也就是模擬令牌,它是非互動的會話。可看到令牌的數量,取決於我們meterpreter shell的訪問級別。我們可以看到已經獲得一個系統管理員的授權令牌,現在我們就是要假冒這個令牌,成功後我們就可以擁有它的許可權。接下來我們在incognito中呼叫impersonate_token命令,具體命令見下圖
執行成功,我們在meterpreter shell下執行shell命令並輸入whoami,可以看到我現在就是我們假冒的那個win-57tj4b561mt\administrator系統管理員了。
0×05 繞過Windows使用者賬戶控制(UAC)
在Windows Vista 以及更高的版本中,微軟引進了安全控制策略,分為高、中、低三個等級。高等級的程式具有管理員許可權,中等級程式擁有一個基本使用者的許可權,低階別的程式的許可權是受各種限制的,用來保證當系統受到威脅時,帶來的損害能保持到最小。
UAC有4種設定要求:
僅在程式試圖更改我的計算機時通知我:這是UAC的預設設定。本地Windows程式要使用高階別許可權時,不通知使用者。但當第三方程式要求使用高階別許可權時,它會提示本地使用者。
僅在程式試圖更改我的計算機時通知我(不降低桌面的亮度):與上一條設定要求相同,但提示使用者時不降低桌面的亮度。
從不提示:當使用者為系統管理員時,所有程式都會以最高許可權執行。
一.使用Bypassuac提權
Bypassuac主要有以下4個模組
1、我們先看下現在已經獲得的許可權?該許可權能否直接通過getsystem來直接提權?
可以看到是shuteer使用者許可權,通過getsystem提權提示許可權不夠,拒絕訪問。
2.下面利用bypassuac模組來提權,這裡使用exploit/windows/local/bypassuac模組(該模組在windows 32位和64位下都有效),本模組執行成功後將會返回一個新的meterpreter shell,設定如下圖:
已經攻擊成功,返回了一個session 5的meterpreter shell,此時我們通過sessions 命令可以看到已經有了2個meterpreter shell。
3.執行getuid檢視許可權,如果發現還是普通許可權,不要失望,繼續執行getsystem,再次檢視許可權,已經成功繞過UAC,且已經是系統許可權了。
其他幾個模組用法和上面一樣,原理有所不同,執行成功後都會返回一個新的meterpreter shell,且都需要執行getsystem才能獲取系統許可權。
使用bypassuac模組時一些注意事項:
使用bypassuac模組進行提權時,系統當前使用者必須在管理員組,而且使用者賬戶控制程式UAC設定為預設,即“僅在程式試圖更改我的計算機時通知我”。
Bypassuac模組執行時會在目標機上建立多個檔案,會被防毒軟體識別。exploit/windows/local/bypassuac_injection模組直接執行在記憶體中的反射DLL中,所以它不觸碰硬碟,可以最大限度地降低被防毒軟體檢測到的概率。
Metasploit框架攻擊目前沒有針對Windows 8的模組
二.使用RunAs提權
這種方法可以利用exploit/windows/local/ask模組(該模組在windows 32位和64位下都有效),建立一個可執行檔案,目標機會執行一個發起提升許可權請求的程式,提示使用者是否要繼續執行,如果使用者選擇“是”,就會觸發返回一個高許可權的meterpreter shell。設定如下圖:
輸入run命令後會在目標機上會彈出UAC,提示使用者是否執行
選擇“是”就會成功返回一個新的meterpreter shell。
同樣執行getuid檢視許可權,發現是普通許可權時,繼續執行getsystem,再次檢視許可權,已經是系統許可權了。
使用RunAs模組時一些注意事項:
使用RunAs模組進行提權時,系統當前使用者須在管理員組或者知道管理員的密碼,使用者賬戶控制程式UAC設定則沒有要求。
使用RunAs模組進行提權時,會建立一個可執行檔案,為了避免給防毒軟體查殺,該可執行檔案(需進行免殺處理)的建立要使用EXE::Custom選項。
RunAs攻擊的缺點是,程式企圖修改計算機設定時,系統會對使用者發出提醒。此警報可能會被管理人員認定為攻擊。建議多次執行,系統多次對使用者發出提醒後,對於缺乏安全意識或不厭其煩的管理人員會點選“是”,從而完成許可權提升。
0×06 HASH攻擊
1.使用hashdump命令
Hashdump meterpreter指令碼可以從目標機器中提取hash值,破解hash值即可獲得登陸密碼。計算機中的每個賬號(如果是域伺服器,則為域內的每個賬號)的使用者名稱和密碼都儲存在SAM檔案中,當計算機執行時,該檔案對所有賬號進行鎖定,要想訪問就必須要有“系統級”賬號。所以要使用該命令就必須要進行許可權的提升。
在meterpreter shell提示符下輸入hashdump命令,將匯出目標機SAM資料庫中HASH,見下圖:
抓取到的HASH可以使用暴力破解或者使用彩虹列表進行破解,個人建議可以直接到http://www.cmd5.com/或者http://www.xmd5.com/進行破解。
還有一個命令smart_hashdump,可以匯出域所有使用者的HASH。
2.WindowsCredentials Editor (WCE)或者MIMIKATZ
Windows Credentials Editor (WCE)是一款功能強大的windows平臺內網滲透工具,它可以列舉登陸會話,並且可以新增、改變和刪除相關憑據(例如:LM/NT hashes)。這些功能在內網滲透中能夠被利用,例如,在windows平臺上執行繞過hash或者從記憶體中獲取NT/LM hashes(也可以從互動式登陸、服務、遠端桌面連線中獲取)以用於進一步的攻擊,而且體積也非常小,是內網滲透手必備工具。
先使用upload命令將wce.exe上傳到目標主機C盤中,然後在目標機shell下輸入 wce –w命令,便會成功提取到系統明文管理員密碼。如下圖。
MIMIKATZ的使用比較簡單,就不演示了!
這2個工具必須要在管理員許可權下使用,還要注意工具的免殺。
相關文章
- Metasploit之後滲透攻擊(資訊收集、許可權提升)
- Guest許可權突破——許可權提升方法總結(轉)
- Docker安全:通過Docker提升許可權Docker
- 終於等到你--許可權工具類
- 使用LDAP查詢快速提升域許可權LDA
- Windows環境下提升程式的許可權Windows
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 許可權之選單許可權
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 基於Linux許可權提升的資訊收集Linux
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Hadoop技巧(01):外掛,終端許可權Hadoop
- 許可權系統:一文搞懂功能許可權、資料許可權
- 許可權概念、許可權提升概念以及許可權提升的分類和目的 Windows 提權的基礎原理是瞭解作業系統的安全機制和許可權管理 Windows提權攻擊的進一步知識概念Windows作業系統
- Linux-許可權管理(ACL許可權)Linux
- Android程式保活(二):利用 Notification 提升許可權Android
- 利用PATH環境變數 - 提升linux許可權~?變數Linux
- 基本Linux許可權提升(Basic Linux Privilege Escalation)Linux
- MySQL許可權提升及安全限制繞過漏洞(轉)MySql
- AIX 的許可許可權(轉)AI
- Android系統許可權和root許可權Android
- mysql許可權MySql
- MySQL 許可權MySql
- ORACLE許可權Oracle
- 基於全流量許可權漏洞檢測技術
- Linux 許可權管理之目錄許可權限制Linux
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 【LIUNX】目錄或檔案許可權,許可權授予
- 選單許可權和按鈕許可權設定
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- android動態許可權到自定義許可權框架Android框架
- Atitit godaddy 檔案許可權 root許可權設定Go
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- 許可權系統:許可權應用服務設計
- 詳解Oracle建立使用者許可權全過程Oracle
- 防溢位提升許可權攻擊解決辦法(轉)