漏洞简介

2022年5月10日,微软发布补丁修复了一个AD域权限提升漏洞(CVE-2022–26923)。该漏洞是由于在申请证书时对AD域中的计算机账户身份审核不够严格,经过身份验证的攻击者可以操纵他们拥有或管理的计算机帐户的属性,假冒DC从ADCS 服务器获取DC证书,最终导致普通权限用户提升至域管理员权限。这一漏洞最早由安全研究员Oliver
Lyak在2021年12月14日报告给微软,微软在2022年5月的安全更新中对其进行了修补。

01 AD CS身份识别

默认情况下,CA允许域用户注册User模板证书,允许域计算机注册Machine模板证书。两个证书模板都允许客户端身份验证。这意味着颁发的证书可用于通过PKINIT
Kerberos 扩展对KDC进行身份验证。

通过对比User和DomainController两个模板的msPKI-Certificate-Name-
Flag属性可以看到User模版包含SUBJECT_ALT_REQUIRE_UPN,DomainController包含
SUBJECT_ALT_REQUIRE_DNS。这两个字段分别标识证书中的用户和计算机的身份,用于CA识别证书的所有者。

如当我们使用User模板请求证书时,用户帐户的UPN将嵌入到证书中。在进行进行身份验证时,KDC会尝试将 UPN 从证书映射到用户。

尝试修改用户的UPN属性,如果能够将该属性修改为AD管理员账号的UPN,则可以实现欺骗AD
CS获取AD管理员权限证书,但是实际上DC会对UPN检查保持全林唯一。

虽然UPN无法假冒,但是不代表dnsHostName不可以假冒。在MS-ADTS(3.1.1.5.1.3
唯一性约束)文档中并没有标识dnsHostName属性具有唯一性。实际上,通过下面的漏洞分析也可以发现实际这个属性可以重复,这也是这个漏洞产生的主要原因。

02漏洞分析复现

成功利用该漏洞需要满足以下几个必要条件:

1、攻击者获取到一个通过认证的普通域用户凭据或计算机账户凭据

2、AD 域内已配置了 AD CS 服务

3、Machine模板证书可以自动申请

首先第一步需要获得一个已知凭据的计算机账户,如果没有可以使用普通账户通过Impacket创建一个新的计算机账户。

默认情况下每个普通用户都拥有添加10个机器账户的权限,添加机器权限可以通过编辑组策略控制,在Windows Server
2012以下版本的DC可以通过用户的属性 MS-DS-Machine-Account-Quota设置可添加计算机账户的数量。

尝试直接修改机器的dnsHostName,提示出现操作错误(无法更新属性值),但是没有提示唯一性错误,因此可以猜测该值可以修改为DC的dnsHostName,但是出于某种限制,如值的类型不对或者是有某种对象的值依赖于该值导致无法成功更新修改到AD。

观察使用账户test3创建的主机,发现其ACL信息非常有意思。虽然是test3创建的计算机账户,但是机器账户的所有者却是Domain
Admins账户。机器账户的中几条ACL信息非常有价值,分别是:

1.已验证的到DNS主机名的写入

2.已验证的到服务主体名的写入

3.已验证的到计算机属性的写入

这证明创建计算机账户的用户账户是有计算机账户的dnsHostName、servicePrincipalName和其他属性的写权限,因此修改dnsHostName属性值在ACL权限上是可行的。

通过普通域用户对其创建主机的dnsHostName进行修改,将值修改为一个不存在的主机名发现成功,因此实现本漏洞的关键是如何绕过限制进行修改。

在将dnsHostName从mc7.moin.com修改为xxx.moin.com时,发现该计算机账户的servicePricipalName属性也发生了变化,其中的两个字段包含了新的dnsHostName。可以推测这个属性对dnsHost
Name有依赖。

查看微软的官方文档https://docs.microsoft.com/en-us/windows/win32/adschema/r-validated-
spn,发现官方对servicePrincipalName属性的描述为“验证写入权限以启用符合计算机 DNS 主机名的 SPN
属性设置”,因此猜测是该属性中对应的值中包含现有的dnsHostName,尝试删除servicePrincipalName中包含hostHostName的值,也可直接删除servicePrincipalName属性。

在删除后,通过修改dnsHostName属性值为DC的dnHostName,发现修改成功。

现在成功获得一个dnsHostName与域控相同的机器账户,由于创建账户时指定了账户密码,因此可以利用该账户欺骗AD CS获取域控权限证书。

该漏洞的主要实现过程可以总结为以下几步:

1.获取一个已知密码的计算机账户

2.删除计算机账户的servicePrincipalName属性或删除其中与dnsHostName有关的值

3.修改dnsHostName为DC的dnsHostName

最后使用该机器账户向AD CS服务器申请模版为“Machine”的证书并保存的本地,此时获取的实际是DC权限的证书。

使用该证书申请TGT,能够成功获取域控账户的NT Hash,说明证书有效。这说明成功的从普通域用户权限提升到了域控权限。

查看AD CS服务器中的证书申请记录,也可以看出AD CS认为认为颁发的证书为DC。

03痕迹信息

在进行修改dnsHostName值时,会在域控产生事件ID为5136的目录服务更改日志。其中的特征为将计算机对象的dNSHostName值修改为DC的名称。

同时会产生事件ID为4742的计算机管理审核成功日志,日志信息中包含了被修改的计算机账户信息和修改后的dnsHostName信息。如若使用此漏洞后需要进行痕迹清理,这两条日志最为关键。

04 总结

本次漏洞产生的主要原因是计算机账户关键属性的ACL设置问题和AD
CS检查客户端身份不严格导致,结合之前的samAccountName欺骗漏洞,AD域中涉及身份认证标识的问题不止一次,微软在AD域中不用具有唯一性的自动编号字段SID而是其他字段作为身份认证标识在安全方面着实欠妥。

本次漏洞利用简单,流量特征不明显难以检测,同时获取的AD域证书有效时间长,因此对于AD域的提权和权限维持都有很高的利用价值。

网络安全学习路线&资源分享

【----帮助网安学习,以下所有学习资料免费领!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

03网络安全的知识多而杂,怎么科学合理安排?

初级

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级黑客

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。



一些我收集的网络安全自学入门书籍
​​

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以【点这里】加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!

CVE-2022-26923漏洞分析相关推荐

  1. 2022CTF培训(十一)IOT 相关 CVE 漏洞分析

    附件下载链接 D-Link DIR-823G 固件全系统仿真 2022CTF培训(十)IOT 相关 CVE 漏洞分析 是采用 qemu-user 对个别程序进行仿真,而对于完整的仿真需要使用 qemu ...

  2. 国产软件CVE漏洞分析系列:泛微OA系统 漏洞编号:SSV-91661

    今天开始扒拉一下各种国产软件已经公布的漏洞,有些公司自己把漏洞保密起来,其实真是傻啦吧唧的,以为不让大家知道,漏洞就不存在吗!没办法,可能也是为了上市公司的股价吧.普通人对于漏洞的理解还是有点狼来了的 ...

  3. linux内核安全数据,【漏洞分析】Linux内核XFRM权限提升漏洞分析预警(CVE–2017–16939)...

    0x00 背景介绍 2017年11月24日, OSS社区披露了一个由独立安全研究员Mohamed Ghannam发现的一处存在于Linux 内核Netlink socket子系统(XFRM)的漏洞,漏 ...

  4. 2022年漏洞事件盘点

    2022年,网络安全漏洞形势空前严峻:高危漏洞数量延续增长趋势,企业安全预算和资源难以跟上黑客工具技术迭代和漏洞增长的速度,人工智能和量子计算等新技术风险加速到来,供应链和第三方风险不断累积,漏洞优先 ...

  5. 网络靶场实战-RouterOS漏洞分析(CVE-2022-45315)

    本环境是蛇矛实验室基于"火天网演攻防演训靶场"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作.火天网演中,内置大 ...

  6. 公开仓库中Docker镜像的漏洞分析结果发布

    Federacy的一名研究人员发布了一项报告,该报告分析了公开仓库中Docker镜像的漏洞.24%的镜像发现了明显的漏洞,其中基于Ubuntu的镜像漏洞最多,而基于Debian的镜像漏洞最少. \\ ...

  7. cve-2019-11076 Cribl UI 1.5.0 未授权命令执行漏洞分析

    Cribl是一款日志分析工具.Cribl UI是其中的一个用户界面. Cribl UI 1.5.0版本中存在安全漏洞.远程攻击者可借助未认证的Web请求利用该漏洞运行任意命令. 前言 前几天瞎逛 Gi ...

  8. cve-2019-1821 思科 Cisco Prime 企业局域网管理器 远程代码执行 漏洞分析

    前言 不是所有目录遍历漏洞危害都相同,取决于遍历的用法以及用户交互程度.正如你将看到,本文的这个漏洞类在代码中非常难发现,但可以造成巨大的影响. 这个漏洞存在于思科Prime Infrastructu ...

  9. linux “大脏牛”漏洞分析(CVE-2017-1000405)

    一.背景简介 脏牛漏洞(CVE-2016–5195)是公开后影响范围最广和最深的漏洞之一,这十年来的每一个Linux版本,包括Android.桌面版和服务器版都受到其影响.恶意攻击者通过该漏洞可以轻易 ...

最新文章

  1. CV02-FCN笔记
  2. 用了这个 IDE 插件,5分钟解决前后端联调!
  3. 毫米波雷达_毫米波雷达基础知识
  4. python【蓝桥杯vip练习题库】ALGO-39数组排序去重
  5. pthread_cleanup_push与pthread_cleanup_pop的目的、作用
  6. 【重要】做AI项目,找有三AI,100+研发人员为你服务
  7. Kafka- Spark消费Kafka
  8. 【转】Asp.NET大文件上传开发总结(一)
  9. Java Stack栈类详解
  10. boost::gil::num_channels用法的测试程序
  11. python输入字母终止_将用户输入限制为字母
  12. 煤矿安全规程专家解读2016电子版_【学习】煤矿安全规程专家解读(165)
  13. 可变大小、颜色边框、样式的UISwitch
  14. 带你深入理解Java的IO到底是个啥
  15. Nodejs express 获取url参数,post参数的三种方式
  16. Linux/Unix/Mac OS下的远程访问和文件共享方式
  17. infiniband, fiber channel,RDMA
  18. 路由器连接、静态路由配置实例
  19. html静态网页设计实训总结,html网页设计总结 html静态网页设计大作业
  20. cdrom是多媒体微型计算机,2011年计算机一级考试理论试题:多媒体

热门文章

  1. Hadoop集群的安装
  2. 工作流任务调度系统--DolphinSchedule-1.3.6 window 安装配置
  3. 第一章__翠竹深林附桃源,险峰洞中别洞天.
  4. 5SHY3545L0016 3BHB020720R0002 3BHE019719R0101 GVC736BE101
  5. 华为鸿蒙新机2k曲面屏,华为5G新旗舰已确认,双曲面屏+升级到鸿蒙2.0,价格很感人...
  6. 能够语义化的编写html文档,HTML语义化 - 写给未来的自己 - OSCHINA - 中文开源技术交流社区...
  7. 最强卸载神器,使你的Windows绝对干净
  8. Windows下解压分卷压缩方法
  9. 用python实现自动化办公------Excel操作
  10. 小傻蛋的妹妹跟随小甲鱼学习Python的第十七节017