前言

在windows中,权限大概分为如下四种:

  • User:普通用户权限,系统中最安全的权限。(分配给该组的默认权限不允许成员修改操作系统的设置或用户资料)。
  • Administrators:管理员权限。可以利用windows的机制将自己提升为System权限,以便操作SAM文件等。
  • System:系统权限。可以对SAM等敏感文件进行读取。
  • TrustedInstaller:windows中最高权限。对系统文件,即使拥有System权限也无法修改。只有拥有TrustedInstaller权限的用户才能修改系统文件。

在windows系统中,如果没有管理员权限,就无法进行获取散列值、安装软件、修改防火墙规则、修改注册表等操作。提权分为如下两种:

  • 纵向提权:低权限角色获取高权限角色的权限。

常用的提权手法有: 系统内核溢出提权、数据库提权、错误的系统配置提权、组策略首选项提权、WEB中间件漏洞提权、DLL劫持提权、滥用高权限令牌提权、第三方软件和服务提权

系统内核溢出漏洞提权

关键点就是寻找系统中没有及时安装的补丁。以下是几种常用手法:

  • 手动对比:运行 systeminfo 或者 wmic qfe get Caption,Description,HotFixID,InstalledOn 获取漏洞编号,然后再对比。
  • MSF:使用MSF的 local_exploit_suggester 模块进行查询可利用的漏洞。
  • Sherlock:使用powershell下的Sherlock脚本跑(但是已经不维护更新了),然后配合CS的 elevate 功能进行提权。
  • win-exp-suggester:使用windows-exploit-suggester脚本跑,看看有哪些可以利用的EXP。

使用MSF进行提权

首先进行可利用漏洞信息收集,如下所示:

msf可利用漏洞信息收集

然后就可以根据提示使用响应的EXP进行攻击了,如下所示,使用ms16_014进行攻击,发现提权成功:

ms16-014攻击

Windows配置错误提权

主要分为如下几种手法:

  • 利用系统服务权限配置错误提权;
  • 利用注册表键AlwaysInstallElevated提权;
  • 利用可信任服务路径漏洞提权;
  • 检查自动安装配置文件中的账号密码进行提权;
  • 利用计划任务权限配置错误进行提权;

利用系统服务权限配置错误提权

能够利用此漏洞进行提权的原因:

  • Windows的服务是以System权限执行的;
  • 如果存在某个系统服务,低权限用户对其有可写目录权限,那么将存在系统服务权限配置错误漏洞;

利用手法如下:

  • 服务未运行:使用恶意服务替换原来的服务,然后重启服务;
  • 服务已运行且无法被终止:使用DLL劫持然后尝试重启服务;

针对此种漏洞,以下是使用MSF的service_permissions模块进行提权的操作:

MSF攻击服务权限配置错误漏洞

以下是使用Powerup脚本查找可利用的服务权限配置漏洞(没发现):

Powerup查找服务权限漏洞

利用注册表键AlwaysInstallElevated提权

如果设置了此键,那么任何用户都能以System权限执行安装msi程序,利用此特性进行提权;前面利用PowerUp进行扫描时,如果发现目标存在此漏洞,那么就可以直接用PowerUp进行提权;

利用可信任服务路径漏洞提权

简单来说,在windows下如果一个服务没有被双引号引起来,且包含空格,那么这个服务就存在该漏洞;

如下是针对此漏洞下使用MSF的案例(失败了):

MSF使用可信任服务路径漏洞提权

检查自动安装配置文件中的账号密码进行提权

一般内网的机器比较多,管理员一般采用脚本批量部署,此过程会安装配置文件,这些文件中包含了所有要安装的配置信息,其中一些可能包括本地管理员账号和密码信息,枚举这些文件,查看是否包含账号密码等信息进行提权。前面利用PowerUp进行扫描时,如果发现了存在这类文件,那么就可以一个个查看并利用公开的密钥解密了。

利用计划任务权限配置错误进行提权

如果某个计划任务是以高权限执行,且攻击者有其目录的读写权限,那么我们可以使用木马将计划任务目录下的程序替换掉,下次执行时将触发执行。一般常用accesschk工具来进行查询有问题的目录,然后对比计划任务中的目录,因为此工具是微软官方的,一般不会被杀。

首先输入如下命令查看计划任务:

schtasks /query /fo LIST /v

然后执行accesschk常用的查询目录权限命令,对比前面查询的计划任务目录,观察是否存在可以利用的计划任务:

# 查询指定目录下的权限配置情况
accesschk.exe -dqv "C:\Windows\system32" -accepteula
# 查询某个驱动盘下的所有有权限配置缺陷的文件
accesschk.exe -uwqs Users c:\*.*
accesschk.exe -uwqs "Authenticated Users" c:\*.*

组策略首选项提权

组策略首选项漏洞,微软在2014年进行了修复。 该漏洞形成的原因是网络管理员使用策略组统一修改域内机器的本地管理员密码。而所有的域策略都存放在 C:\\Windows\sysvol\your_domain\Policies\ 文件夹中,域内用户和域信任的用户都可以对该目录进行访问,而利用组策略更新密码时,会在这个共享目录内生成一个XML配置文件,我们可以直接查看该配置文件,可以看到一个AES-256加密的密码,但是这个密码的密钥被微软公开了,所以可以打。

利用cmd shell查看组策略中的密码如下所示:

查看组策略统一密码

利用工具解密得到明文如下所示:

利用工具解密组策略密码

当然,也可以用msf进行EXP的利用,如下所示:

msf获取cpassword

BypassUAC提权

主要是使用MSF的几个不同的bypass模块, 一般都需要当前用户在管理员组中,且UAC必须为默认设置,才能提权成功 ,如下所示:

  • exploit/windows/local/bypassuac_injection
  • exploit/windows/local/bypassuac
  • exploit/windows/local/ask
  • exploit/windows/local/bypassuac_eventvwr
  • exploit/windows/local/bypassuac_comhijack

MSF使用bypassuac_injection提权

此种方式提权直接运行在内存的反射DLL中,降低了杀毒软件查杀的风险。操作如下所示:

MSF使用bypassuac_injection提权

MSF使用bypassuac提权

操作如下所示:

msf-bypassuac

MSF使用ask提权

操作如下,会在靶机上弹出一个确认框,如果用户点击了,我们就可以弹到一个高权限的meterpreter,如下所示:

ask提权

ask提权

MSF使用bypassuac_eventvwr提权

操作如下所示:

bypassuac_eventvwr提权

MSF使用bypassuac_comhijack提权

操作如下所示:

bypassuac_comhijack提权

令牌窃取提权

主要是在MSF meterpreter下,可以列举出可用的令牌,然后通过伪造可利用的令牌进行提权。

首先在meterpreter下输入 use incognitolistT_token -u 列举出可用的令牌:

msf列举出可用令牌

然后可以输入 impersonate_token WIN7\\pinger 进行伪造,注意,需要双引号,否则容易出错:

msf伪造令牌