Windows平台下实现提权的新姿势

在这篇文章中,我们将给大家演示如何通过无引号服务路径来实现在Windows平台下的提权。在渗透测试的过程中,当我们以本地用户身份生成命令Shell时,我们是无法检查受限文件或目录的,因此我们才需要拿到管理员访问权。

无引号服务路径漏洞

这个漏洞跟可执行文件的路径有关,如果文件名中存在空格,或者文件路径没有包裹在双引号之中,那攻击者就可以用恶意exe文件替换掉原本合法的exe文件,并实现提权。

环境搭建

目标主机:Windows 7

攻击主机:Kali Linux

首先,我们需要在目标Windows系统中下载并安装一个名叫photodex proshow的包含漏洞的应用程序,下载镜像可以在Exploit DB上找到。

生成目标主机

为了拿到meterpreter会话,我们至少要成功入侵目标Windows设备一次,你可以从下图中看到,我们已经拿到了目标主机的meterpreter会话了。现在,打开命令Shell:

shell

你可以看到,我们拿到的shell访问权是本地用户local_user,为了拿到cmd的管理员权限,我们就需要提权。首先,我们可以枚举出目标主机上正在运行的所有服务,并找出那些没有被双引号包裹的服务路径,这一步可以用下列命令实现:

这里,我们枚举出了下列路径:

这个路径没有被双引号包裹,而且文件名中也存在空格。

现在,我们需要使用下列命令识别文件目录权限:

你可以看到,它给任何人都提供了写入权限,这也就意味着任何用户都可以重写该文件:

通过进程迁移实现提权

现在,我们只需要把恶意exe放在同一文件夹内,它就自动拥有管理员权限了,当服务重启之后,Windows将启动这个恶意exe。

在Kali Linux中打开终端,然后通过下列命令使用msfvenom生成恶意exe Payload:

上面的命令将在桌面生成一个恶意exe文件,然后将该文件发送给目标主机。Payload会尝试迁移恶意进程,如果用户通过进程ID终止了当前进程的运行,攻击者也不会丢失会话和Payload的控制权。

reboot:

与此同时,我在新的终端里开启了多个handler监听器来捕捉meterpreter会话:

一段时间之后,我们就能够拿到拥有管理员权限的shell了:

通过添加管理员组用户来实现提权

使用local_user权限生成了shell之后,我们就可以在没有管理员权限的情况下枚举完整的用户名列表了。这里我们发现,用户raaz不是管理员组的成员:

同样的,我们生成了一个exe文件,并用它来将用户raaz添加到了管理员组中,我们生成的恶意exe文件名还是叫Scsiaccess.exe:

重复上述步骤,用恶意exe文件替换掉同一目录下的合法exe,然后重启目标主机:

仔细看下面的截图,你就会发现用户raaz已经成为了管理员组成员了:

通过RDP&Sticky_key实现提权

使用msfvenom生成一个相同文件名(Scsiaccess.exe)的exe文件,然后将其发送至目标主机,同时利用自动运行脚本开启多个监听器,这样将会启用RDP服务:

类似的,当目标服务重启之后,我们可以设置自动运行脚本来启用sticky_keys:

你可以从下图中看到,命令开启了另一个meterpreter会话(session 3),这个会话拥有管理员权限,现在我们就可以通过RDP与目标主机建立连接了:

接下来,连续按下5次shift键,你将会拿到拥有管理员权限的命令行窗口:

没错,就是这么简单!

*参考来源:hackingarticles,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180914B1MP2200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券