提权-Windows篇
2021-12-23 14:20:54 Author: mp.weixin.qq.com(查看原文) 阅读量:63 收藏

前   言

前段时间跟着大哥们打红队,拿到webshell进去whoami一看是iis账户;还在我查iis账户如何提权的时候,大哥已经提到了系统权限,为了减少与大哥的差距,便做了一些提权思路的总结。
so为什么要提权?

通常webshell权限比较低,例如无法查看重要文件、修改系统信息、抓取管理员密码和hash、安装特殊程序等。

    系 统 内 核 溢 出

原理

程序的缓存区是事先设定好的,如果用户输入的数据超过了这个缓存区的长度,就会造成程序溢出了。缓存区溢出漏洞主要是由于许多软件没有对缓存区检查而造成的。

提权方式

通过系统本身存在的一些漏洞,未打相应的补丁而暴露出来的提权方法,依托提权EXP和对应的补丁编号进行提权。

github上windows内核提权汇总:
https://github.com/Ascotbe/Kernelhub

1、手动查缺失补丁

Systeminfowmic qfe get Caption,Description,HotFixID,InstalledOn把查询到的补丁输入到以下提权辅助页面进行查询http://blog.neargle.com/win-powerup-exp-index/https://i.hacking8.com/tiquan

2、msf查缺失补丁

post/windows/gather/enum_patches(根据漏洞编号找出系统中安装的补丁)post/multi/recon/local_exploit_suggester(快速识别系统中可能被利用的漏洞)

3、脚本查缺失补丁

windows-exploit-suggester.py(将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息)


   系 统 配 置 错 误

一、系统服务权限配置错误

原理

windows系统服务文件在操作系统启动时加载,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以替换该文件,并伴随系统启动获得控制器。

提权方式

1.powerup的PowerUp.ps1脚本(扫描系统文件、服务等缺陷漏洞)

powershell.exe -exec bypass -command "&{Import-Module .\PowerUp.ps1;Invoke-AllChecks}


2.msf模块

exploit/windows/local/service_permissions

二、可信任服务路径

原理

利用windows文件路径解析的特性,如果一个服务调用的可执行文件没有正确处理所引用的完整路径名,这个漏洞就会被攻击者用来上传任意可执行文件。如果一个被适当命名的可执行文件(木马)被上传到受影响的目录中,服务一旦启动,该程序就会以system权限启动。

提权方式

1.wmi查询目标所有没有加引号的服务路径

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

2.查看漏洞目录是否有写权限

3.确认目标存在漏洞,把木马上传到目录并重命名;然后重启服务

4.msf模块

useexploit/windows/local/trusted_service_path

三、注册表键AlwaysInstallElevated

原理

注册表AlwaysInstallElevated 是一个策略选项。windwos 允许低权限用户以 System 权限运行安装文件。如果启用此策略设置项,那么任何权限的用户都能以 NTAUTHORITY\SYSTEN 权限来安装恶意的 MSI 文件。(默认情况下禁用此设置,需系统管理员手动启用他。)

提权方式

1.查看Windows installer特权功能是否已启用
regquery HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /vAlwaysInstallElevatedregquery HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /vAlwaysInstallElevated
开启Windowsinstaller后注册表下面可看到为16进制0x1,说明存在漏洞

2.使用msf模块

exploit/windows/local/always_install_elevated

成功会返回一个sysytem会话。

该模块会创建一个文件名随机的MSI文件,并在提权后删除所有已部署的文件。

四、自动安装配置文件

原理

网络管理员在内网中给多台机器配置同一个环境时,通常不会逐个配置,而是使用脚本批量部署。在这个过程中,会使用安装配置文件。这些文件中包含所有的安装配置信息,其中一些还可能包含管理员账号和密码。

提权方式

1、msf模块

post/windows/gather/enum_unattend

五、计划任务

原理

AccessChk用于在windows中进行一些高级查询、管理和故障排除工作。由于它是微软官方提供的工具,所以杀毒软件不会有告警。如果以高权限运行的任务所在目录具有写权限,那么就可以使用恶意程序覆盖原有的程序。

提取方式

1.查看机器上的计划任务

schtasks/query /fo LIST /v

2.使用AccessChk查看指定目录的权限配置情况(如果对以高权限运行的任务所在目录具有写入权限,就可以使用恶意程序覆盖掉原来的程序。当计划任务下次执行时,就会以高权限运行恶意程序,进而完成提权)

accesschk.exe-dqv "指定目录" –accepteula

3.PowerUp.ps1脚本(运行该脚本,会自动检查PowerUp.ps1下所有的模块,并在存在漏洞利用的模块下的AbuseFunction中直接给出利用方法)

powershell-exec bypass -c import-module .\PowerUp.ps1;Invoke-Allchecks –verbose


   组 策 略 首 选 项

原理

在一般网络环境中,所有机器脚本都是批量化部署的,数据量很大。为了方便对所有主机管控,管理员往往会使用同一策略。管理员在域中新建一个策略之后,操作系统会自动在SYSVOL共享目录中生成一个XML文件,其键名为cpassword,该文件保存了该组策略更新后的密码。

提权方式

1.powershell获取cpassword

PowerSploit中的Get-GPPPassword.ps1脚本可以获取组策略中的密码(只需要在域内任何一台以域用户权限登录的主机上都可以查询到)。
Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword
2.msf获取cpasswowrd
post/windows/gather/credentials/gpp模块可以获取组策略中的密码(只需要获取域内任何一台以域用户权限登录的机器的权限)

    UAC 绕 过

概述
UAC(User Account Control,用户账号控制)是微软为了提高系统安全性咋WindowsVista中引入的技术。作用在于验证用户是否有权限去做某些操作。

提权方式

1、msf的bypassuac模块

使用条件:

 (a)、系统当前用户必须在管理员组中

 (b)、用户账户控制程序UAC设置为默认,即“仅在程序试图更改我的计算机时通知我”

exploit/windows/local/bypassuac
该模块将通过进程注入,利用受信任的发布者证书绕过Windows UAC。该模块运行时会因为在目标机上创建多个文件而被杀毒软件识别,因此通过该模块提权成功率很低。
exploit/windows/local/bypassuac_injection

该模块直接运行在内存的反射DLL中(内存注入),所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。

exploit/windows/local/bypassuac_fodhelper

该模块通过FodHelper注册表项,通过在当前用户配置单元下劫持注册表中的特殊键,并插入将在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过Windows10 UAC。它将为我们生成另一个关闭UAC的shell。虽然该模块修改了注册表,但它会在调用payload后清除该项。

exploit/windows/local/bypassuac_eventvwr

该模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。

exploit/windows/local/bypassuac_comhijack

该模块将通过在HKCU配置单元中,创建COM处理程序注册表项来绕过Windows UAC。当加载某些高完整性进程时将会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL中包含了可提升权限的payload。在调用payload后该模块将会清除该项。

2、msf的runas模块

使用条件:

 (a)、当前用户必须在管理员组中或知道管理员密码

 (b)、用户需要手动点击弹出的程序

exploit/windows/local/ask

该模块使会运行一个发起提升权限请求的程序,提示用户是否继续,继续就返回system会话。

     令 牌 窃 取

原理

当前系统的某个进程或线程能访问到什么系统资源,完全取决于当前进程是拿着的令牌。进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。

提权方式

1、msf的incognito模块

使用条件:需要administrator权限

2、PowerSploit的Invoke-TokenManipulations.ps1脚本

列举tokenInvoke-TokenManipulation-Enumerate提权到systemInvoke-TokenManipulation-CreateProcess "cmd.exe" -username "nt authority\system"

3、烂土豆

烂土豆(RottenPotato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户。

适用范围:Windows7、8、10、2008、2012

使用条件:SeImpersonatePrivilege是烂土豆提权的必要条件

msf的meterperter会话:

use incognito(枚举有哪些用户的进程,一般有用户和system用户)list_tokens -uexecute -cH -f ./rottenpotato.exe(上传rottenpotato.exe并执行提权)impersonate_token "NT AUTHORITY\\SYSTEM"

    第 三 方 软 件 / 服 务

通过服务器上安装的第三方软件/服务的漏洞进行提权。关于提权续集,可关注公众号。

圣诞将至,提前祝各位师傅

监制:船长、铁子   策划:格纸   文案:吉米   美工:青柠

文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMzI3OTczNA==&mid=2247484421&idx=1&sn=8b3c2b51a430e21d1df8ea7417e115cf&chksm=c24fa69cf5382f8a817c5420a4bfe0789ca4792eae69f621ee1744c09585ca71034d03a2826f&mpshare=1&scene=24&srcid=1221x2LG8FinQsnc9Bmdd0VS&sharer_sharetime=1640078950493&sharer_shareid=5191b3dcb328f693d5261ba6bca8d267#rd
如有侵权请联系:admin#unsafe.sh