登录
首页 >  文章 >  软件教程

windows提权技巧详解(上)

时间:2025-05-13 20:28:45 349浏览 收藏

在渗透测试中,提升权限是一个常见且关键的任务。本文详细介绍了在Windows系统上进行提权的多种方法和技巧。首先,通过webshell获取权限是较为常见的方式,尤其在网站部署在Windows系统时。此外,文章还探讨了利用溢出提权、可信任服务路径漏洞、错误配置的系统服务以及不安全的注册表和文件/文件夹权限等多种提权途径。通过这些方法,攻击者可以提升权限,从而实现横向渗透和进一步的攻击。本系列文章将持续深入探讨各种提权技术,帮助读者全面了解Windows提权的技巧和策略。

在渗透测试中,提升权限是一个常见的问题。通常情况下,最容易获取的权限是通过webshell,特别是当网站部署在Windows系统上时。此外,在进行横向渗透时,如果收集到可以远程连接桌面的账号,也需要提升权限。实际操作中,提权是经常需要的,本系列文章将详细介绍各种提权方式。

提权基础在进行提权之前,首要任务是对目标系统的操作系统进行信息收集。关于信息收集的具体内容,请参阅之前的文章《Windows环境下的信息收集》。这里简要提及几个关键命令:

溢出提权是提权过程中最常见的方法,但其关键在于目标系统的安全补丁更新不及时,这才为攻击者提供了机会。以下是一些较新的溢出exp示例。

windows提权系列上篇由于运营者的错误配置,有时可以为我们提供提权的便利,从而提高提权成功率。下面将简单介绍这方面的提权方法。

可信任服务路径漏洞(Trusted Service Paths)是由系统中的“CreateProcess”函数引起的,利用了Windows文件路径解析的特性,并涉及了服务路径的文件/文件夹权限。存在缺陷的服务程序利用了属于可执行文件的文件/文件夹权限。如果权限合适,我们可以上传恶意可执行文件。简单来说,就是查找系统服务文件中存在非引用路径。如果一个服务调用可执行文件时,未正确处理引用的全路径名,就可以利用这个漏洞。Metasploit集成了trusted_service_path(http://www.zeroscience.mk/codes/msfsession.txt)漏洞利用模块

Windows服务通常以System权限运行,因此系统在解析服务的二进制文件路径中的空格时也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。例如,有如下文件路径:

对于上述文件路径中的每一个空格,Windows都会尝试寻找并执行名称与空格前的部分匹配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上的例子中,Windows会依次尝试确定和执行以下程序:

因此,如果我们能上传一个适当命名的恶意可执行程序到受影响的目录,服务一旦重启,我们的恶意程序就会以system权限运行(大多数情况下)。

利用步骤如下:

  1. 检测目标主机是否存在该漏洞

    如果存在以下结果,则表示存在漏洞:

    FABS - Helping agent for MAGIX media database FabsC:\Program Files (x86)\Common Files\MAGIX Services\Database\bin\FABS.exe /DisableUI     Auto
  2. 检查对有漏洞目录是否有写入权限。使用Windows内建工具icacls查看路径中受影响文件夹的权限,(M)代表修改权限,(F)代表完全控制,(CI)代表从属容器将继承访问控制项,(OI)代表从属文件将继承访问控制项。

    windows提权系列上篇

  3. 攻击。将我们需要执行的exe根据需要重命名并放置在可写入的有漏洞目录下,然后运行如下命令尝试重启服务,如果失败的话等待服务器重启时执行exe,成功提权后记得清理痕迹。

    sc stop service_namesc start service_name

    如果我们的exe会弹回一个SYSTEM权限的meterpreter shell,但是我们新得到的会话很快就中断了。这是因为当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。我们所有需要做的就是在终止载荷进程之前,将它迁移到其它进程,也可以使用自动迁移set AutoRunScript migrate -f

系统服务的错误权限配置漏洞Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。例如,JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站是否有新版JAVA程序。而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。因此,如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。Metasploit集成了漏洞利用模块exploit/windows/local/service_permissions。手工测试步骤如下:

  1. 检查易受攻击的服务。SERVICE_ALL_ACCESS的意思是我们对“Vulnerable Service”的属性拥有完全控制权。

    #"Authenticated Users"指Windows系统中所有使用用户名、密码登录并通过身份验证的账户,不包括来宾账户Guest。也可以使用当前用户用户名来列出所以可以被当前用户修改的服务。#-->RW 360rp#       SERVICE_ALL_ACCESS
  2. 查看可以完全控制的服务的属性。

    windows提权系列上篇

  3. 修改服务配置执行命令。BINARY_PATH_NAME参数指向了该服务的可执行程序(360rps.exe)路径。如果我们将这个值修改成任何命令,那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行。

    windows提权系列上篇

    当尝试启动服务时,它会返回一个错误。这一点我们之前已经讨论过了,在Windows系统中,当一个服务在Windows系统中启动后,它必须和服务控制管理器通信。如果没有通信,服务控制管理器会认为出现了错误,并会终止这个进程。上面的“net user”肯定是无法和服务管理器通信的,但是不用担心,我们的命令已经以SYSTEM权限运行了,并且成功添加了一个用户。

  4. 提权成功后修改服务配置,清理痕迹。

不安全的注册表权限配置在Windows中,与Windows服务有关的信息存储在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services注册表项中。以服务360rp为例,服务对应的程序路径存储在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\360rp\ImagePath中。如果我们对这一键值有写入权限就可以修改服务对应的程序路径,让系统以SYSTEM权限运行我们的程序,从而达到提权的目标。如下所示,我们可以使用SubInACL(https://www.microsoft.com/en-us/download/details.aspx?id=23510)工具去检查注册表项的权限。建议本地安装后找到 subinacl.exe 拷贝到目标机器上运行。

如果我们对注册表有写入权限,就可以修改注册表,使得服务启动时运行我们的恶意程序:

在下一次启动该服务时,adduser.exe将会以SYSTEM权限运行。成功提权后记得修改回配置。

不安全的文件/文件夹权限配置可信任服务路径漏洞产生的原因就是不安全的文件夹权限以及“CreateProcess”函数。如果我们对系统服务对应的应用程序所在文件夹有写入权限,便可以直接使用恶意程序替换原来的可执行文件,从而完成提权。

任意用户以NT AUTHORITY\SYSTEM权限安装msiAlwaysInstallElevated是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。msf集成了漏洞利用模块:exploit/windows/local/always_install_elevated。详细利用步骤如下:

  1. 判断是否启用了AlwaysInstallElevated策略。当两个注册表键值查询结果均为1时,代表该策略已启用。

  2. 使用msfvenom生成恶意程序上传

  3. 运行恶意程序。

    # /quiet    安装过程中禁止向用户发送消息# /qn       不使用GUI# /i        安装程序

计划任务可以使用如下命令查看计算机上的计划任务。

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

总结本文作为这个提权系列的上篇,主要讲了提权的一些基础信息,提到了溢出提权、错误配置导致的提权等。由于作者尚未完全完成这个系列的所有内容,所以可能有不全的地方,请大家理解,随后会慢慢放出作者已经完成的部分。

终于介绍完啦!小伙伴们,这篇关于《windows提权技巧详解(上)》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>