三、Windows权限提升

在渗透测试中,拿到目标机器的Shell后会判断当前用户所拥有的权限。在Windows操作系统中,权限从低到高分为User,Administrator、System、TrustedInstaller四种权限。

目录

1 系统内核溢出漏洞

1.1 命令行查看补丁

1.2 利用metasploit发现补丁

1.3 利用Windows Exploit Suggester工具

1.4 Sherlock脚本

2 利用系统配置提权

2.1 系统服务权限配置错误

1)创建服务提权

2)DLL劫持注入

 2.2 受信任服务路径漏洞

3 绕过UAC提权

3.1 使用Bypassuac

3.2 RunAS模块

3.3 CobaltStrike

4 令牌窃取提权

4.1 Metasploit

4.2 Cobaltstrike

4.3 Rotten Potato


1 系统内核溢出漏洞

1.1 命令行查看补丁

在获取shell后,执行whoami /groups 命令,查看当前权限,当前权限 medium:

使用Systeminfo查看已有的补丁,

 使用wmic qfe get Caption,Description,HotFixID,InstalledOn查看已安装补丁

 可以根据:https://github.com/SecWiki/windows-kernel-exploits

查看系统存在什么危险

1.2 利用metasploit发现补丁

msfconsole启动Metasploit工具。

1)获取一个基本shell

 2) use post/windows/gather/enum_patches

进入到 meterpreter 的shell下,执行 run  post/windows/gather/enum_patches 可以直接查看哪些补丁没有打。

 

可以使用post/multi/recon/local_exploit_suggester模块: 

use post/multi/recon/local_exploit_suggester

set lhost x.x.x.x

set session 1

exploit

3)寻找利用模块

输入 background 退回到MSF下,然后 search  cve-2018-8120  ,可以看到找到了一个漏洞利用Exploit模块

 设置 session 为我们刚刚获得权限的 session ID,exploit 运行。可以看到,我们获得了 System 权限。

1.3 利用Windows Exploit Suggester工具

1)先将目标系统的信息获取出来,

 

 2)首先python windows-exploit-suggester.py --update更新一下

 python windows-exploit-suggester.py -d 2021-03-05-mssb.xls -i patches.txt

1.4 Sherlock脚本

#搜索所有未安装的补丁

Import-Module  .\Sherlock.ps1;Find-AllVulns

#也可以搜索单个漏洞

Import-Module  .\Sherlock.ps1;Find-MS14058 

2 利用系统配置提权

2.1 系统服务权限配置错误

        Windows的系统服务是在操作系统启动时加载和执行的,对用户是无感知的。系统服务可以是一个可执行程序,也可以是一个可执行程序运行的DLL进程。Windows服务是由上一级的services.exe来管理的,用户使用SC命令行命令可以与服务控制管理器进行通信,查看和管理系统服务。

        系统服务权限配置错误有两种形式:一种是在服务未运行时,使用恶意服务程序替代原来的服务可执行程序,然后启动服务,进而获得权限;另一种是服务已经正常启动,用户无法随意终止,此时使用DLL劫持技术来辅助提权。

1创建服务提权

执行命令sc Create syscmd binPath= "cmd /K start" type= own type= interact来创建一个名称位syscmd的服务。

执行命令sc start syscmd启动这个服务,启动之后使用命令whoami就可以看到当前的权限已经变成System权限。

2)DLL劫持注入

        DLL全称是动态链接库,主要加载方式有:静态加载、动态加载和延迟加载。动态加载是Windows用 LoadLibrary 函数加载动态链接库到内存,再用 GetProcAddress函数动态获得 DLL 的入口地址。LoadLibrary加载DLL时可以使用DLL的相对路径,这时系统会按顺序搜索特定目录下的DLL文件。

        使⽤相对路径时系统会按以下顺序搜索DLL文件:程序所在⽬录、加载DLL时的当前⽬录、SYSTEM32 ⽬录、 SYSTEM ⽬录、Windows⽬录、环境变量⽬录。DLL劫持就发⽣在系统按照顺序搜索这些特定⽬录的过程中。只要攻击者能够将恶意的DLL放在优先于正常DLL所在的⽬录,就能够欺骗系统优先加载恶意DLL,来实现“劫持”。

 在Windows XP系统中使用Pinjector可以进行DLL注入,执行命令pinjector.exe -l可以列出可注入的进程PID,再执行命令Pinjector.exe -p [PID] cmd [PORT]便可成功劫持注入。

 2.2 受信任服务路径漏洞

        受信任服务路径漏洞是基于Windows文件路径的解析特性,操作系统遇到文件路径中含有空格情况时,会找到并执行与空格前路径相符的可执行文件。当一个服务的可执行文件的路径还有空格却没有被双引号引起来时,则可能存在此漏洞。

执行命令wmic service get name,displayname,startmode,pathname | findstr /i /v "C:\Windows\\" |findstr /i /v """,检测路径。

执行命令sc qc phpStudySrv查看对应服务的输出信息,出现START_TYPE: 2   AUTO_START则说明该服务是系统启动时自启动的。

使用命令icacls C:\phpstudy_pro\COM\可以查看C:\phpstudy_pro\COM\路径下用户的操作权限,

        当目标机器的路径中存在“Everyone:(OI)(CI)(F)”时,则说明任何用户对这个文件夹有修改权限,则可以将Meterpreter的恶意程序重命名为要替代的程序并放置到该文件夹下。然后重启服务,系统在匹配目标程序时,会先从该文件夹下匹配到恶意程序,从而运行恶意程序达到权限提升。也可以直接使用Meterpreter的Winodws Service Trusted Path Privilege Escalation模块进行自动化提权测试。

3 绕过UAC提权

        UAC (User Account Control,用户账号控制)是微软在 Windows Vista 以后版本引入的一种安全机制。默认情况下普通用户和管理员都会在普通用户安全上下文中访问资源和运行应用程序,当低权限用户执行以下任务需要经过UAC:

  1. 配置windows update
  2. 增加/删除账户
  3. 更改账户类型
  4. 更改UAC的设置
  5. 安装ActiveX
  6. 安装/卸载程序
  7. 安装设备驱动程序
  8. 将文件移动/复制到Program FIles或WIndows 目录下
  9. 查看其他用户的文件夹

在获取meterpreter的一个 Shell后,可以使用Metasploit自带的payload载荷进行攻击。与UAC相关的载荷有Bypassuac、Bypassuac_injection、Bypassuac_eventvwr、 Bypassuac_fodhelper、Bypassuac_comhijack等模块。

3.1 使用Bypassuac

        Bypassuac模块通过进程注入,利用受信任的发布者证书绕过Windows UAC。执行命令use exploit/windows/local/bypassuac,并设置session、LHOST和LPORT,然后执行命令exploit进行攻击测试。攻击成功的结果如图所示。

3.2 RunAS模块

 

 点击是,执行

成功 获得权限

 

3.3  CobaltStrike

可以使用 UAC-dll UAC-token-duplication 这两个攻击脚本进行绕过UAC提权。UAC-dll模块使用UAC漏洞将ArtifactKit生成的DLL复制到特权位置,将本地管理员运行的有效负载从低权限提升到高权限。UAC-token-duplication模块允许普通权限进程窃取高权限进程中的令牌启动任意进程,从而将其从低权限提升到高权限。

4 令牌窃取提权

        令牌(Token)是指系统中的临时密钥,可以在无其他凭证或账号密码的情况下访问计算机的资源。访问令牌是Windows操作系统一种安全机制,用户运行的所有进程都有访问令牌的拷贝,从而系统通过令牌控制用户的访问对象和操作权限。访问令牌记录着用户的SID、组ID及特权列表等信息。

4.1 Metasploit

首先使用Metasploit尝试令牌获取,在获取Shell后执行命令use incognito,ist_tokens -u列出可以使用的令牌。

从结果中可以看到存在两种令牌,分别是Delegation Tokens和Impersonation Tokens,即授权令牌(主令牌)和模拟令牌。主令牌是由Windows内核创建并分配给进程的默认访问令牌,每一个进程有一个主令牌,它描述了与当前进程相关的用户帐户的安全上下文,支持交互式登录。模拟令牌主要是跟线程相关,支持非交互式的会话。

此时使用执行命令impersonate_token WIN7-WEB\\LSJ,模拟LSJ用户的模拟令牌进行渗透测试。

​ 

4.2 Cobaltstrike

使用CobaltSrike工具也可以进行模拟令牌获取管理员权限。首先列出目标主机的进程信息,选中要窃取令牌的程序,点击Steal Token按钮,程序会自动执行steal_token PID命令。

4.3 Rotten Potato

如果目标系统统中存在有效的令牌,可以通过Rotten Potato程序快速模拟用户令牌来实现权限的提升。首先输入“use incognito”命令,然后输入“list_tokens -u”命令,列出可用的令牌

下载完成后,RottenPotato目录下会有一个rottenpotato.exe可执行文件。执行如下命令,将 rottenpotatocxe上传列日标机器中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值