1.内核溢出漏洞提权
利用Metasploit发现缺失补丁
2.Windows操作系统配置错误利用分析及防范
系统服务权限配置错误
Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件。因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。Windows服务是以System权限运行的,因此,其文件夹、文件和注册表键值都是受强访问控制机制保护的。但是,在某些情况下,操作系统中仍然存在一些没有得到有效保护的服务。
系统服务权限配置错误(可写目录漏洞)有如下两种可能。
- 服务未运行:攻击者会使用任意服务替换原来的服务,然后重启服务。
- 服务正在运行且无法被终止:这种情况符合绝大多数的漏洞利用场景,攻击者通常会利用DLL劫持技术并尝试重启服务来提权。
Metasploit下的实战利用
在Metasploit中,对应的利用模块是service _permissions。选择“AGGRESSIVE”选项,可以利用目标机器上每一个有缺陷的服务。该选项被禁用时,该模块在第一次提权成功后就会停止工作
执行“run”命令,会自动反弹一个新的meterpreter ( System权限)
service_permissions模块使用两种方法来获得System权限:如果meterpreter 以管理员权限运行,该模块会尝试创建并运行一个新的服务;如果当前权限不允许创建服务,该模块会判断哪些服务的文件或者文件夹的权限有问题,并允许对其进行劫持。在创建服务或者劫持已经存在的服务时,该模块会创建一个可执行程序,其文件名和安装路径都是随机的。
注册表键AlwaysInstallElevated
注册表键AlwaylanalElvated是一个策略设置项。Windows 允许低权限用户以System权限运行安装文件。如果启用此策略设置项,那么任何权限的用户都能以NT AUTHORITY\SYSTEM权限来安装恶意的MSI文件。
可以利用Metasploit的 exploiexploit/windows/local/always_install_elevated模块完成以上操作。使用该模块并设置会话参数,输入“run”命令,会返回一个System权限的meterpreter。该模块会创建一个文件名随机的MSI文件,并在提权后删除所有已部署的文件。
只要禁用注册表键AlwaysInstallElevated,就可以阻止攻击者通过MSI文件进行提权。
可信任服务路径漏洞
可信任服务路径(包含空格且没有引号的路径)漏洞利用了Windows 文件路径解析的特性并涉及服务路径的文件/文件夹权限(存在缺陷的服务程序利用了属于可执行文件的文件/文件夹的权限)。如果-个服 务调用的可执行 文件没有正确地处理所引用的完整路径名, 这个漏洞就会被攻击者用来上传任意可执行文件。也就是说,如果一个服务 的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的。
该漏洞存在如下两种可能
- 如果路径与服务有关,就任意创建一个服务或者编译Sericce模板。
- 如果路径与可执行文件有关,就任意创建个可执行文件
Trusted Service Paths漏洞产生的原因
因为windows服务通常都是以System权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以系统权限进行。
例如,有一个文件路径"C:\Program Files\ Some Folder\Service.exe",对于该路径中的每一个空格,Windows 都会尝试寻找并执行与空格前面的名字相匹配的程序。操作系统会对路径中空格的所有可能情况进行尝试,直至找到一个能够匹配的程序。
在本例中,Windows 会依次尝试确
C:\Program.exe
C:\Program Files\ Some.exe
C:\Program Files\ Some Folder\Service.exe
因此,如果一个被“适当”命名的可执行程序被上传到可受影响的目录中,服务一旦重启,该程序就会以Syten权限运行(在大多数情况下)
Metasploit 下的实战利用
使用msf中的WINDOWS Service Trusted Path Privilege Escalation模块进行渗透测试。该模块会将可执行程序放到受影响的文件夹中,然后讲受影响的服务重启
msf6 > us