CVE-2021-42278域内权限提升

 0x01 漏洞背景

前些日子的靶场中涉及到了域内提权,当时刚好爆出CVE-2022-42278这个域内提权漏洞,正好下载下来了POC试了试,确实不错,于是打算看看这个只需一个域用户,就能获取域控权限的漏洞怎么回事,便有了这篇文章。

0x02 环境搭建

在这里搭建了一个简单的内网环境,主机AD_USER将445端口暴露在外,并且存在ms17_010,hacker通过AD_USER的445端口进入域内,随后通过CVE-2021-42287拿下AD。环境详情:

主机IP

Hacker:192.168.80.128

AD_USER:192.168.80.133/192.168.30.20

AD:192.168.30.10

域环境

角色 USERNAME Password

域控 Administrator ???

域用户 Use qnmb@123!

0x03 POC展示

由于hacker拿下AD_USER的shell比较简单,使用ms17_010即可,所有进行省略

可见存在域的同时定位域控IP:

192.168.30.10

获取明文密码:

域控ip:192.168.30.10 ,域用户:user/qnmb@123!使用脚本成功获取Shell:

Python3 sam_the_admin.py HACKER/user:qnmb@123! -dc-ip 192.168.30.10 -shell

这个脚本仅仅利用了域控的IP和当前域用户,就成功获取了域控的Shell。

接下来详细分析一下CVE-2021-42287的问题。

Github:

https://github.com/WazeHell/sam-the-admin

0x04 分析

在这篇分析文章中,我将先简述Kerberos认证过程,并分析一下其中的一些问题,S4U2self协议,以及CVE-2021-42278的问题所在,将这些串联起来,组成我们的主角CVE-2021-42287域提权漏洞。

一、Kerberos认证简述:

在上面这张图大致简述了Kerberos认证用户访问服务的过程,但是这里存在一个问题,就是用户只需要成功获取到TGT就可以请求任何服务的TGS,这样缺少了用户权限管理,于是在微软引入了PAC的概念。

二、PAC简述

在讲述S4U2self提权之前,必须了解微软对原先Kerberos的改进,即PAC的概念

由于我们在上文提过在之前的Kerberos中存在缺少对访问服务的权限管控问题,因此在原来的Kerberos基础中加入了PAC。

通过上述的过程,我们可以发现:

1.用户请求TGS依旧是仅仅需要提供的TGT可以被kbrtgt hash即可,然后在使用TGS访问服务时才会对用户权限进行校验。

2.用户对PAC的签发和验证是无感知的,PAC签发和验证等工作是由KDC负责的。通过PAC的引入实现了用户对服务的权限控制,成为了Kerberos的安全机制之一。那么,如果我们拥有域控的TGT,然后通过S2U4self获取域控的TS(PAC有KDC生成),就获得了域控权。


三、CVE-2021-42278(伪造AD机器用户)

如果要解释CVE-2021-42287的原理,那么一定离不开CVE-2021-42278

这个是正常机器用户ROOT-PC$ ,SAMTNEADMIN-39$这两个机器用户末尾都带一个$,但是AD没有对域内机器用户名进行验证,于是可以存在这种用户:

这里的SAMTHEADMIN机器用户不存在$,而这就是CVE-2021-42278

四、 CVE-2021-42287

看完上面的CVE-2021-42278,你怕不是要说“就这?”实际上我们可以创建一个与机器用户同名的不带$的机器用户,擦除这个机器账户的SPN后,去请求一个TGT。接下来我们将这个不带$的伪域控机器名更名,这个时候我们拿着这个TGT使用S4U2self协议去请求TS:那么就会获取到一个使用域控hash加密,并且附带PAC的TS,这样我们就可以调用域控的服务了。1.使用不带$的,与域控机器账户同名的账户请求一个TGT2.擦除当前用户SPN(不擦除SPN会导致在使用S2U4self生产TS的时候报错)。3.将伪造的AD机器账户更名。4.使用刚刚获取的TGT通过S4U2self进行TGS请求5.域控在找不到刚刚伪造的机器用户后,会傻傻的给TGT中的client info中的name加一个$,然后再去查询,发现这个TGT发clint不就是俺自己嘛??然后就把自己的PAC加入TS中,并且用自己的hash加密了TS。

五、 S4U2self协议:

这个协议是在PAC引入后,引入的一种扩展协议,他被作为约束委派的实现方法之一:S4U2self协议是为了当用户没有使用kerberos认证,登陆了service A(用户可能通过Web服务NTML,或者其他方式)这个时候当这个用户想访问域内资源的时候,没有Kerberos的TGT就无法获取TS进而无法访问其他服务。S4U2self协议给出的解决方案:

                                                   图片来自微软官方

1.User通过非Kerberos登陆Service 1在请求Service 1中的某项功能时需要访问Service 2可以理解为USER通过WEB服务访问了Service 1现在需要调用Service 2的SQL中的资源。

2.这时Service 1会使用自己的TGT向KDC请求一种授权访问自己服务的TS。KDC解密来自Service 1的TGT后返回一个新的TS1(这个TS证书可转发,因为后面需要使用S4U2proxy协议),由于这个TS中的PAC是生成的并非原来TGT中发PAC,所以KDC在匹配到服务账户后,会生成与服务账户同权的PAC放入TS1,这也是CVE-2022-42287在拿着与域控同名无$的TGT返回的TS1为什么包含域控的PAC。

3. Service 1 拿着TS1通过S4U2proxy将TS1发送给KDC,即作为User的身份向KDC请求指向Service 2的TS

4. KDC解密TS1后把指向Service 2的TS 2返回给Service 1。

5. Service 1 再拿着TS2去请求Service 2的服务

总的来说,S4U2self的作用是使服务器获取用户身份,然后代理用户向KDC请求。因此S4U2self协议发送的TGSREQ中的Cname,Sname都是指向自己的。


0x05总结

在这个利用过程中,因为域控在获取TGT发送TGS时存在问题,导致CVE-2021-42278进化成了这个漏洞,KDC在解密TGT的使用使用的是Kbrtgt hash,因此AD认为这个TGT中的信息为可信的,进而进一步检索Client info被欺骗后,因为S4U2self这个协议的特殊性,导致服务证书(TS)用自己的hash加密,并且附上了生成的与域控同权限的PAC。

参考文章

1、CVE-2021-42287/CVE-2021-42278Windows域提权漏洞分析 - 安全客,安全资讯平台 (anquanke.com)

2、Kerberos 委派攻击原理之 S4U2 利用详解_HBohan的博客-CSDN博客_kerberos s4u

3、内网渗透—Kerberos认证 (qq.com)

4、域内提权漏洞 CVE-2021-42287与CVE-2021-42278原理分析 - FreeBuf网络安全行业门户

POC:https://github.com/WazeHell/sam-the-admin


声明

以上内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,042评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,877评论 0 2
  • 昨天考过了阿里规范,心里舒坦了好多,敲代码也犹如神助。早早完成工作回家喽
    常亚星阅读 3,037评论 0 1
  • 三军可夺气,将军可夺心。是故朝气锐,昼气惰,暮气归。善用兵者,避其锐气,击其惰归,此治气者也。以治待乱,以静待哗,...
    生姜牛奶泡腾片阅读 1,575评论 0 1
  • 追星逐渐从心理上的偏好转向致力于打榜花钱的形式主义,明星信息的公开化与非法售卖也导致私生饭等盲目甚至变性的行...
    黑彧阅读 1,597评论 0 3