文章导览
本文篇幅较长,将会拆分为上下两篇内容发出。
文章内容概览如下:
一、Windows权限介绍
⼆、系统内核溢出漏洞提权分析及防御
1.内核溢出漏洞提权分析
2.内核溢出漏洞列表
3.内核溢出漏洞查询
4.内核溢出漏洞提权防范
三、系统配置错误利⽤分析及防范
1.权限配置错误
2.可信任服务路径漏洞
3.不安全的注册表权限配置
4.注册表键AlwaysInstallElevated
四、组策略⾸选项提权分析及防范
1.组策略⾸选项提权简介
2.针对组策略⾸选项提权的防御措施
五、绕过UAC提权分析及防范
1.绕过UAC提权分析
2.绕过针对UAC提权的防御措施
六、令牌窃取分析与防范
1.令牌窃取提权简介
2.令牌窃取⽅法
3.令牌窃取提权的防御措施
七、数据库提权
1.Mysql提权
2.Mssql提权
一
Windows权限介绍
在Windwos中,权限⼤概分为四种,分别是Users、Administrator、System、TrustedInstaller。在这四种权限中,我们经常接收到的是前三种,下⾯我们对这⼏种权限进⾏分析:
Users:普通⽤户权限,是系统中最安全的权限(因为分配给该组的默认权限不允许成员修改操作系统的设置或⽤户资料)。
Administrator:管理员权限,可以利⽤Windows的机制将⾃⼰提升为System权限,以便操作SAM⽂件等。
System:系统权限,可以对SAM等敏感⽂件进⾏读取,往往需要将Administrator权限提升到System权限才可以对散列值进⾏Dump操作。
TrustedInstaller:Windows中的最⾼权限,对系统⽂件,即使拥有System权限也⽆法修改,只有拥有TrustedInstaller权限才可以修改系统⽂件。
提升权限的⽅式分为以下两类:
纵向提权:低权限⻆⾊获得⾼权限⻆⾊的权限。例如,⼀个Webshell权限通过提权,拥有了管理员权限,这种权限就是纵向提权,也称为权限升级。
横向提权:获得同级别⻆⾊的权限。例如,在系统A中获得了系统B的权限,就称为横向提权。
常⻅的权限提升⽅法有系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略⾸选项提权、Web中间件漏洞提权、DLL劫持提权、滥⽤⾼权限令牌提权、第三⽅软件/服务提权等,下⽂我们将对⼀些常⻅的提权⽅法及防范进⾏分析。
二
系统内核溢出漏洞提权
分析及防御
一、内核溢出漏洞提权分析
系统内核溢出漏洞提权是⼀种通⽤的提权⽅法,攻击者可以使⽤该⽅法绕过系统的所有安全限制。攻击者利⽤该漏洞的关键是⽬标系统没有及时安装补丁——即使微软已经针对某个漏洞发布了补丁,但如果系统没有⽴即安装补丁,就会让攻击者有机可乘。然⽽,这种提权⽅法也存在⼀定的局限性——如果⽬标系统的更新⼯作较为迅速和完善,那么攻击者想要通过这种⽅法提权,就必须找到该系统存在的0day漏洞。
二、内核溢出漏洞列表
漏洞利⽤内核列表:
https ://github.com/SecWiki/windows-kernel-exploits
*左右滑动查看更多
-
MS17-017 [KB4013081] [GDI 调⾊板对象本地权限提升] (windows 7/8)
-
CVE-2017-8464 [LNK 远程代码执⾏漏洞] (windows 10/8.1/7/2016/2010/2008)
-
CVE-2017-0213 [Windows COM 特权提升漏洞] (windows 10/8.1/7/2016/2010/2008)
-
CVE-2018-0833 [SMBv3 空指针取消引⽤拒绝服务](Windows 8.1/Server 2012 R2)
-
CVE-2018-8120 [Win32k 特权提升漏洞] (Windows 7 SP1/2008 SP2,2008 R2 SP1)
-
MS17-010 [KB4013389] [Windows 内核模式驱动程序](Windows 7/2008/2003/XP)
-
MS16-135 [KB3199135] [Windows 内核模式驱动程序] (2016)
-
MS16-111 [KB3186973] [内核 api] (Windows 10 10586 (32/64)/8.1)
-
MS16-098 [KB3178466] [内核驱动程序] (Win 8.1)
-
MS16-075 [KB3164038] [热⼟⾖] (2003/2008/7/8/2012)
-
MS16-034 [KB3143145] [内核驱动程序] (2008/7/8/10/2012)
-
MS16-032 [KB3143141] [辅助登录句柄] (2008/7/8/10/2012)
-
MS16-016 [KB3136041] [WebDAV] (2008/Vista/7)
-
MS16-014 [K3134228] [远程代码执⾏] (2008/Vista/7)
-
MS03-026 [KB823980] [RPC 接⼝中的缓冲区溢出] (/NT/2000/XP/2003)
三、内核溢出漏洞查询
提权辅助⽹⻚:
https://bugs.hacking8.com/tiquan/
*左右滑动查看更多
提权辅助⽹⻚可以帮助我们查询Windos主机上有没有可以⽤来提权的漏洞补丁,把主机上systeminfo的信息粘贴进去:
四、内核溢出漏洞提权防范
在关于此提权⽅式的分析中已经提到过了,防范的最好⽅法就是按时打官⽅发布的最新补丁。
查看缺失补丁:
可以通过⼿动⽅法或⾃动⽅法轻松识别缺失补丁的发现。⼿动可以通过执⾏以下命令轻松完成,该命令将枚举所有已安装的补丁。
wmic qfe get Caption,Description,HotFixID,InstalledOn
*左右滑动查看更多
三
系统配置错误利用分析及防范
在Windows操作系统中,攻击者通常会使⽤系统内核溢出漏洞来提权,但是如果⽆法通过系统内核溢出漏洞提取权限的情况,就会利⽤系统中的配置错误来提权,Windows操作系统中常⻅的配置错误包括管理员凭据配置错误、服务配置错误、故意削弱的安全措施、⽤户权限过⾼等。
一、权限配置错误
1.不带引号的服务路径
当系统管理员配置Windows服务时,他们必须指定要执⾏的命令,或者运⾏可执⾏⽂件的路径。
当Windows服务运⾏时,会发⽣以下两种情况之⼀。如果给出了可执⾏⽂件,并且引⽤了完整路径,则系统会按字⾯解释它并执⾏。但是,如果服务的⼆进制路径未包含在引号中,则操作系统将会执⾏找到的空格分隔的服务路径的第⼀个实例。
示例:
C:Program FilesVulnerable ServiceSub Directoryservice.exe
*左右滑动查看更多
Windows命令解释程序可能会遇到名称中的空格,并且希望通过将字符串包装在引号中来对它们进⾏转义。在上⾯的示例中,如果系统运⾏该服务,它将尝试运⾏以下可执⾏⽂件:
C:Program .exe
C:Program FilesVulnerable. exe
C:Program FilesVulnerable ServiceSub.exe
C:Program FilesVulnerable ServiceSub Directoryservice.exe
*左右滑动查看更多
可以使⽤以下命令查看错误配置的路径:
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i
/v "C:Windows\" | findstr /i /v ""
*左右滑动查看更多
sc qc 服务名称: 查看是否为自启动
msf内置了⼀个针对错误配置进⾏提权的模块:
exploit/windows/local/trusted_service_path
*左右滑动查看更多
2.弱⽂件夹权限
寻找⼀个允许任意⽤户修改的服务,并且权限是⾼权⽤户所执⾏的,得到所有⽤户都可以访问的结果后,⽣成⼀个exe将其改名为服务启动的exe替换,或者直接把存放服务指定⼆进制的⽂件夹给改名了,⾃⼰在创建服务指定的⼆进制⽂件的⽂件夹。
3.弱服务权限
msf内置了弱服务提权的模块:
exploit/windows/local/service_permissions
*左右滑动查看更多
二、可信任服务路径漏洞
1.可信任服务路径漏洞分析
可信任服务路径(包含空格且没有引号的路径)漏洞利⽤了Windows ⽂件路径解析的特性,并涉及服务路径的⽂件/⽂件夹权限(存在缺陷的服务程序利⽤了属于可执⾏⽂件的⽂件/⽂件夹的权限)。如果⼀个服务调⽤的可执⾏性⽂件没有正确的处理所引⽤的完整路径名,这个漏洞就会被攻击者利⽤上传任意可执⾏⽂件,也就是说,如果⼀个服务的可执⾏⽂件的路径没有被双引号引起来且包含空格,那么这个服务是有漏洞的。
该漏洞存在如下两种可能性:
-
如果路径与服务有关,就创建任意⼀个服务或者编译Service模板
-
如果路径与可执⾏⽂件有关,就任意创建⼀个可执⾏⽂件
2.可信任服务路径漏洞防范
可信任服务路径漏洞是由开发者没有将⽂件路径⽤引号引起来导致的。将⽂件路径⽤引号引起来,就不会出现这种问题了。
3.⾃动安装配置⽂件
⽹络管理员在内⽹中给多台机器配置同⼀个环境时,通常不会逐台配置,⽽会会⽤脚本批量部署的⽅法。这⼀过程中,会使⽤安装配置⽂件。这些⽂件包含所有的安装配置信息,其中的⼀些还可能包括本地管理员的账号和密码等消息。在进⾏渗透测试中,可以找到此类相关的⽂件进⾏分析。
4.计划任务
可以使⽤命令 :schtasks /query /fo LIST /v ,查看计算机的计划任务,如果攻击者对以⾼权限运⾏的任务所在的⽬录具有写权限,就可以使⽤恶意程序性覆盖原来的程序,这样,在计划任务下次执⾏时,就会以⾼权限来运⾏恶意程序。
三、不安全的注册表权限配置
1.注册表提权原理
将⼀个伪造的服务,通过注册表写⼊,在开启这个服务,那么伪造的服务就会运⾏我们的恶意代码(服务是以system权限运⾏的)。
NT AUTHORITYINTERACTIVE 当前用户的权限,利用他可以完全控制注册表的权限提权(如果配置不当)
powershell
Get-Acl -Path hklm:SystemCurrentControlSetservices* | select Path,AccessToString
|Format-List > test.txt
在test.txt中查找"NT AUTHORITYINTERACTIVE",直到找到一个Allow FullControl
powershellGet-Acl -Path hklm:SystemCurrentControlSetservicesa | fl (a为NT
AUTHORITYINTERACTIVE用户Allow FullControl的服务)
把windows_service.c在kali中编译成exe文件
x86_64-w64-mingw32-gcc windows_service.c -o test.exe
然后放到temp目录下,然后把提升权限的exe路径添加到查出来的服务
reg add HKLMSYSTEM|CurrentControlSetservicesa /v ImagePath /t REG_EXPAND_SZ /d
c:temptest.exe /f
添加成功后,运行伪造好的服务:
sc start a
net user 查看已经是admin用户组了
*左右滑动查看更多
四、注册表键AlwaysInstallElevated
注册表键AlwaysInstallElevated是⼀个策略设置项。Windows允许低权限⽤户以System权限运⾏安装⽂件。如果启⽤此策略设置项,那么任何权限对的⽤户都能以NT AUTHORITY/SYSTEM权限来安装恶意的MSI(Microsoft Windows Installer)⽂件。
1.漏洞产⽣的原因
该漏洞产⽣的原因是⽤户开启了Windows Installer特权安装功能。
2.Windows Installer介绍
Windows Installer 是Windows操作系统的组件之⼀,专⻔⽤来管理和配置软件服务。Windows Installer除了是⼀个安装程序,还⽤于管理软件的安装、管理软件的安装、管理软件的添加和删除、监视⽂件的还原、通过回滚进⾏灾难恢复等。
Windows Installer分为客户端安装服务(Msiexec.exe)和MSI⽂件两部分,它们是⼀起⼯作的。Windows Installer通过 Msiexec.exe安装 MSI⽂件包含的程序。MSI⽂件是 Windows Installer的数据包。它实际上是⼀个数据库,包含安装和卸载软件时需要使⽤的⼤量指令和数据。Msiexec.exe⽤于安装MSI⽂件,⼀般运⾏Microsoft Update安装更新或者安装⼀些软件的时候使⽤,占⽤内存较多。简单的说,双击MSI⽂件就会运⾏Msiexec.exe。
3.防范漏洞的⽅法
禁⽤注册表键AlwaysInstallElevated。
(未完待续)
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| 权限提升分析及防御(一)