安基網 首頁 安全 漏洞挖掘 查看內容

精彩!Windows再現任意文件提權漏 CVE-2020-0667漏洞情報

2020-6-11 16:22| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 在這篇文章中,我將討論我在Windows服務跟蹤中發現的一個任意文件移動漏洞。從我的測試來看,它影響了從Vista到10的所有Windows版本,但它可能更老,因為這個功能在XP中已經有了。簡介Service Tracing是一個古老的功能,最早可以追溯到Windows XP,而在更古老的操作系統中可能也存在類似功能。它旨在提 ...


在這篇文章中,我將討論我在Windows服務跟蹤中發現的一個任意文件移動漏洞。從我的測試來看,它影響了從Vista到10的所有Windows版本,但它可能更老,因為這個功能在XP中已經有了。


簡介

Service Tracing是一個古老的功能,最早可以追溯到Windows XP,而在更古老的操作系統中可能也存在類似功能。它旨在提供有關運行服務和模塊的一些基本調試信息,它可由任何本地用戶配置,只需在HKLMSOFTWAREMicrosoftTracing下編輯一些注冊表鍵和值。

一個服務或模塊往往與其中一個注冊表鍵相關聯。每個鍵包含6個值(相關設置)。我們將關注其中的三個值:EnableFileTracing(啟用/禁用“跟蹤”)、FileDirectory(設置輸出日志文件的位置)和MaxFileSize(設置日志文件的最大文件值)。

在啟用了EnableFileTracing后,目標服務將開始寫入你選擇的目錄中的日志文件。一旦輸出文件的大小超過MaxFileSize,它就會被移動(.log擴展名改為.old),并創建一個新的日志文件。

多虧了有James Forshaw的符號鏈接測試工具,讓我們利用這個漏洞變得非常簡單。我們所需要做的就是將日志目錄設置為RPC Control對象目錄的掛載點,然后創建兩個符號鏈接:

·

一個從MODULE.LOG鏈接到你控制的文件(其大小必須大于MaxFileSize)。

·

·

另外一個從MODULE.OLD鏈接到文件系統中的任意文件(例如C:WindowsSystem32WindowsCoreDeviceInfo.dll)。

·

最后,文件的一系列改動被觸發(以NT AUTHORITYSYSTEM權限),通過Update Session Orchestrator服務來執行任意命令。

The Tracing Feature for Services

如前所述,任何本地用戶都可以配置Service Tracing功能,只需在HKLMSOFTWAREMicrosoftTracing下編輯一些注冊表鍵和值即可。

使用來自Windows Sysinternals工具套件的AccessChk,我們可以看到普通用戶幾乎對所有的子鍵都具有讀/寫權限。


在本文的其余部分,我將使用RASTAPI模塊作為示例,因為它是我利用的一個模塊。這個模塊由IKEEXT服務使用。因此,通過初始化虛擬VPN連接可以很容易地觸發日志事件。下面的屏幕截圖顯示了注冊表項的默認內容。為其他服務和模塊配置了完全相同的值。



從本地攻擊者的角度來看,最有趣的在下面



通過設置這些值,我們可以:

·

將EnableFileTracing設置為0或1,強制特定的服務或模塊啟動或停止輸出日志文件(調試信息寫入日志文件)。

·

·

設置FileDirectory來指定日志文件的位置。

·

·

設置MaxFileSize指定輸出文件的最大大小。


The Arbitrary File Move Vulnerability

·

考慮到前面的上下文元素,可以很容易地解釋漏洞。


Case #1: MaxFileSize - Default value

對于第一個測試用例,我簡單地將C:LOGS設置為輸出目錄并啟用文件跟蹤。



現在,如果我們希望目標服務開始寫入這個文件,我們必須生成一些事件。一種非常簡單的方法是使用rasdial命令和一個PBK文件初始化一個虛擬VPN連接。

I它執行了,日志文件是由NT AUTHORITY系統編寫的。它的大小大約是24KB。



Case #2: MaxFileSize - Custom value

在前面的測試中,我們看到輸出日志文件的最終大小約為24KB。因此,這一次,我們將把MaxFileSize設置為0x4000(16,384字節)并重新啟動測試。



“進程監視器”捕獲的事件可以總結如下:


1.服務獲取關于日志文件的基本信息。我們可以看到EndOfFile的偏移量為23,906,這是此時文件的大小。問題是,我們指定了最大文件大小為16,384字節,因此系統將判定沒有更多的空閑空間。使用FileName=C:LOGS rasta . old調用SetRenameInformationFile。換句話說,因為現有文件被判定達到最大容量了,所以它從C:LOGS rasta . log移到了C:LOGSRASTAPI.OLD。


2. 該服務創建一個新的C:LOGS rasta . log文件并開始對其進行寫入。


3. “Move” 操作作為NT AUTHORITY系統執行。因此,它可用于所有文件移動到文件系統上的任何位置,比如C:WindowsSystem32.

利用

整體攻擊流程可概括為:

1.創建(或復制)一個大于0x8000(32768)字節的惡意DLL(FakeDll.dll)。

2.創建一個新目錄(例如C:EXPLOITmountpoint),并將其設置為RPC Control的掛載點。

3.創建以下符號鏈接:

RPC ControlRASTAPI.LOG -> ??C:EXPLOITFakeDll.dll (owner = current user)

RPC ControlRASTAPI.OLD -> ??C:WindowsSystem32WindowsCoreDeviceInfo.dll

4.在注冊表中配置以下值:

FileDirectory = C:EXPLOITmountpoint

MaxFileSize = 0x8000 (32,768? bytes)

EnableFileTracing = 1

5.使用Windows API中的RasDial功能觸發RASTAPI的相關事件。

6.觸發Update Session Orchestrator服務,以NT AUTHORITYSYSTEM權限加載惡意DLL。


Links & Resourc

MSRC - CVE-2020-0668


https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0668

-

Windows Exploitation Tricks: Exploiting Arbitrary File Writes for Local Elevation of Privilege


https://googleprojectzero.blogspot.com/2018/04/windows-exploitation-tricks-exploiting.html

i

Symbolic Link Testing Tools


https://github.com/googleprojectzero/symboliclink-testing-tools

k

UsoDllLoader


https://github.com/itm4n/UsoDllLoader

m

My PoC for CVE-2020-0668


https://github.com/itm4n/SysTracingPoc

b.com/itm4n/SysTracingPoc

·

本文翻譯至 https://itm4n.github.io/cve-2020-0668-windows-service-tracing-eop/



小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/i6831166832506831374/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人
1

路過

雞蛋

剛表態過的朋友 (1 人)

相關閱讀

最新評論

 最新
返回頂部
创业如何赚钱 黑龙江福彩22选五走势 数字基带信号码型有 中国一重股票股吧 大乐l透开奖结果 特彩吧高手论坛网齐中网 怎么看股票k线走势 云南十一选五开奖今天 有富配资 福彩广东36选7开奖结果 炒股配资股票限售股何时解禁 贵州快3开奖走势查询 网络娱乐注册送彩金 辽宁35选7停售 上证指数走势图下载 今晚开奖号码3d开奖号码 投注比例