|
楼主 |
发表于 2021-10-22 00:00:44
|
显示全部楼层
0x01 Windows内核溢出漏洞提权
Windows内核溢出漏洞提权通过系统本身存在的一些漏洞,未曾打相应的补丁而暴露出来的提权方法,依托可以提升权限
的EXP和它们的补丁编号,进行提升权限本地溢出提权首先要有服务器的一个普通用户权限,攻击者通常会向服务器上传
本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出Administrator权限。github上windows系统溢出漏洞
提权的汇总:https://github.com/SecWiki/windows-kernel-exploits
实战中最常用的本地溢出提权有 CVE-2018-8120、MS16-032、MS15-051 和 MS14-058 。在MSF中,最常用的提权模块是CVE-2018-8120;在CobaltStrike中,最常用的提权模块的是 MS14-058。这四个提权,都有对应的exe程序。exe程序均支持32和64位的机器。
手工查找补丁情况
systeminfo
Wmic qfe get Caption,Description,HotFixID,InstalledOn
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"
#直接找是否存在cve-2018-8120对应的KB4131188补丁
1605453409_5fb14661688db7d8fef67.png!small
1605453460_5fb146945ea3bee46bfa1.png!small
可以看到只安装了3个补丁
WMIC是Windows Management Instrumentation Command-line的简称,它是一款命令行管理工具,提供了从命令行接口
到批命令脚本执行系统管理的支持,可以说是Windows平台下最有用的命令行工具。使用WMIC,我们不但可以管理本地计
算机,还可以管理统一局域网内的所有远程计算机(需要必要的权限),而被管理的计算机不必事先安装WMIC
利用Metasploit发现缺失补丁
利用post/windows/gather/enum_patches 模块 可以根据漏洞编号快速找出系统中缺少的补丁
设置获取的session即可运行
1605453476_5fb146a4e804520f15256.png!small
MSF下还提供了 post/multi/recon/local_exploit_suggester 模块,该模块用于快速识别系统中可能被利用的漏洞
1605453506_5fb146c2131bfb488b3de.png!small
Windows Exploit Suggester
该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。
#更新漏洞数据库,会生成一个xls的文件,如下 2020-11-11-mssb.xls
python windows-exploit-suggester.py --update
#查看目标主机系统信息,保存为sysinfo.txt文件
systeminfo > sysinfo.txt
#然后运行如下命令,查看该系统是否存在可利用的提权漏洞
python windows-exploit-suggester.py -d 2020-11-11-mssb.xls -i sysinfo.txt
1605453521_5fb146d1f1b380ebfcd2e.png!small
漏洞复现
选择利用模块攻击
search cve-2018-8120
可以看到找到了一个漏洞利用Exploit模块,我们使用该模块
use exploit/windows/local/ms18_8120_win32k_privesc
1605453531_5fb146db5fca06577acb1.png!small
设置 session 为我们刚刚获得权限的 session ID,run运行。
1605453539_5fb146e33a77243124f39.png!small
可以看到,我们获得了 System 权限。
0x02 Windows系统配置错误提权
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持
1.系统服务权限配置错误
windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用
的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。windows服务是以system权限运行的,
其文件夹、文件和注册表key-value都是受强制访问控制保护的。但是在某些情况下,操作系统中依然存在一些没有得到有
效保护的服务。
利用方式
1.Powershell中的PowerUp脚本
https://github.com/PowerShellMaf ... Privesc/PowerUp.ps1
加载模块并执行 列出可能存在问题的所有服务
分析能否利用
2.Metasploit中的攻击模块
exploit/windows/local/service_permissions
service_permissions模块会使用 两种方式获取system权限
如果以管理员权限运行 会尝试创建并运行一个新的服务
如果当前权限不允许创建服务 会判断哪些服务的文件或文件夹的权限有问题 并对其进行劫持
在劫持服务时会创建一个可执行程序 其文件名和安装路径都是随机的
1605453545_5fb146e9cf95cc99605e2.png!small
2.注册表键AlwaysInstallElevated
允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NT
Authority\System权限来安装恶意的MSI文件。
windows install是windows操作系统的组件之一,专门用来管理配置软件服务。它除了是一个安装程序,还用于管理软
件的安装、组件的添加、删除、监视文件的还原、通过回滚进行灾难恢复。windows install通过msiexec.exe安装MSI
文件,双击MSI文件就会运行msiexec.exe。
原理:是因为用户打开了windows installer 特权安装功能
1605453551_5fb146efe6fdf69d4b829.png!small
利用方式
1.powerup下的Get-RegistryAlwaysInstallElevated模块检查注册表键是否被设置
如果被设置则意味MSI文件是以system权限下能运行
2.Metasploit的exploit/windows/local/always_install_elevated模块
该模块会创建一个文件名随机的MSI文件 并在提权后删除所有已部署的文件
1605453558_5fb146f662cc4ef09afc8.png!small
可以看到成功提权
只要禁用注册表键AlwaysInstallElevated 就可以阻止攻击者通过MSI文件进行提权
3、可信任服务路径漏洞
利用了windows文件路径解析的特性,如果一个服务调用的可执行文件没有正确处理所引用的完整路径名,这个漏洞就会
被攻击者用来上传任意可执行文件。如果一个被适当命名的可执行文件(木马)被上传到受影响的目录中 服务一旦重启
该程序就会以system权限运行通俗的说,如果一个服务的可执行文件的路径(带空格)没有被双引号引起来,那么这个服
务就有漏洞。
寻找存在漏洞的服务
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v
"C:\Windows\\" | findstr /i /v """
检测是否有对目标文件夹的写权限 可以使用icacls 工具
如果确认目标机器存在此漏洞 把我们的木马上传到目并重命名
重启服务
sc stop service_name
sc start service_name
可以直接使用metasploit中的
exploit/windows/local/trusted_service_path模块
正常接收到会话后,不久就会自动断开连接,需要开启命令自动迁移进程
set AutoRunScript migrate -f
1605453568_5fb14700c4f195c8c7f32.png!small
上述表示没有可利用的漏洞将文件路径用引号引起来 就不会出现问题
4、自动安装配置文件
网络管理员在内网中给多台机器配置同一个环境时,通常不会逐个配置,而是使用脚本批量部署。在这个过程中,会使用安装配置文件。这些文件中包含所有的安装配置信息,其中一些还可能包含管理员账号和密码。
1605453576_5fb14708979a0aeadf5fe.png!small
Metasploit集成了漏洞利用模块
post/windows/gather/enum_unattend
1605453580_5fb1470cb6d4d572fd0f9.png!small
5、计划任务
可以使用如下命令查看计算机计划任务
schtasks /query /fo LIST /v
AccessChk用于在windows中进行一些高级查询、管理和故障排除工作。由于它是微软官方提供的工具,所以杀毒软件不会有告警。如果黑客对以高权限运行的任务,所在的目录具有写权限,那么就可以使用恶意程序覆盖原有的程序。这样,在计划任务下次执行的时候,就会以高权限运行恶意程序。
通过AccessChk查看指定目录的权限配置情况:
accesschk64.exe -dqv "C:\Program Files (x86)" -accepteula
1605453587_5fb1471300f800fae1760.png!small
常用命令
accesschk64.exe /accepteula 第一次运行SysInternals工具包里的工具时 会弹出一个许可协议对话框 使用accepteula参数自动接受许可协议accesschk64.exe -uwdqsUsers C:\ 查看某个驱动器下所有「权限配置」有问题的文件夹:accesschk64.exe -uwdqsUsers c:\*.* 查看某个驱动器下所有「权限配置」有问题的文件:
PowerUp.ps1脚本的使用
PowerUp.ps1脚本是 Privsec
目录下的一个脚本,功能非常强大。拥有很多用来寻找目标主机Windows服务配置错误来进行提权的模块。当我们无法通过 windows
内核漏洞进行提权的话,这个时候我们就可以利用该脚本来寻找目标主机上Windows服务配置错误来进行提权,或者利用常见的系统服务,通过其继承的系统权限来完成提权。
Invoke-Allchecks模块
powershell -exec bypass -c import-module .\PowerUp.ps1;Invoke-Allchecks -verbose
运行该脚本,该脚本会自动检查PowerUp.ps1下所有的模块,并在存在漏洞利用的模块下的AbuseFunction中直接给出利用方法
1605453595_5fb1471b085f9aa540422.png!small
|
|