msf中的getsystem的原理

本文介绍了Windows命名管道的概念,它是进程间通信的一种方式,支持本地和远程进程连接。命名管道采用C/S架构,允许设置访问权限。通过ImpersonateNamedPipeClient()函数,服务端可能获取客户端权限,从而实现权限提升,如在MSF中getsystem的过程。该技术涉及到系统安全和权限管理,可用于系统渗透测试和安全研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows的命名管道

命名管道基于smb协议通信

用来让两个进程间进行通信,两个进程可以是本地进程,也可以是远程进程,类似于socket连接,是用来传输数据的,可以设置具体的权限让指定权限的进程才能连接命名管道,理论上每个程序都能连接命名管道,只是连接之后能做的事情不同,具体能做什么事跟服务端的配置有关系。

命名管道是啥

1.命名管道是C/S架构,必须让服务端某个进程先创建命名管道。

2.命名管道可以被任何符合权限的进程去访问,且何种权限可以访问是可以自定义的。

3.客户端可以是本地的某个进程或者远程的某个进程,本地进程访问命名管道方式为.\pipe\pipename,远程进程访问命名管道方法为\ip\pipe\pipename。

4.在powershell中使用dir .\pipe\ | select name可以查看当前所有命名管道的名称。

命名管道还有一个特点就是当服务端进程被客户端进程连接的时候,理论上说服务端进程有可能获取到客户端的权限。ImpersonateNamedPipeClient()这个api可以帮助我们进行实现,前提是我们当前用户具有SeImpersontePrivilege权限。

msf中的getsystem的原理

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

过程

在一个拥有SeImpersonatePrivilege权限的用户(User组)启动一个进程,作用是创建一个命名管道等待连接,连接成功后模拟客户端的权限,并用这个权限启动一个cmd窗口。

whoami /priv查看权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值