FreeIPA Pentesting
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Informations de base
FreeIPA est une alternative open-source Ă Microsoft Windows Active Directory, principalement pour les environnements Unix. Il combine un annuaire LDAP complet avec un Centre de Distribution de ClĂ©s Kerberos MIT pour une gestion similaire Ă Active Directory. Utilisant le SystĂšme de Certificats Dogtag pour la gestion des certificats CA et RA, il prend en charge lâauthentification multi-facteurs, y compris les cartes Ă puce. SSSD est intĂ©grĂ© pour les processus dâauthentification Unix.
Empreintes
Fichiers & Variables dâenvironnement
- Le fichier Ă
/etc/krb5.confest lâendroit oĂč les informations du client Kerberos, nĂ©cessaires pour lâinscription dans le domaine, sont stockĂ©es. Cela inclut les emplacements des KDC et des serveurs administratifs, les paramĂštres par dĂ©faut et les mappages. - Les paramĂštres par dĂ©faut Ă lâĂ©chelle du systĂšme pour les clients et serveurs IPA sont dĂ©finis dans le fichier situĂ© Ă
/etc/ipa/default.conf. - Les hĂŽtes au sein du domaine doivent avoir un fichier
krb5.keytabĂ/etc/krb5.keytabpour les processus dâauthentification. - Diverses variables dâenvironnement (
KRB5CCNAME,KRB5_KTNAME,KRB5_CONFIG,KRB5_KDC_PROFILE,KRB5RCACHETYPE,KRB5RCACHEDIR,KRB5_TRACE,KRB5_CLIENT_KTNAME,KPROP_PORT) sont utilisĂ©es pour pointer vers des fichiers et des paramĂštres spĂ©cifiques liĂ©s Ă lâauthentification Kerberos.
Binaires
Des outils tels que ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch, et kvno sont essentiels pour gérer les domaines FreeIPA, traiter les tickets Kerberos, changer les mots de passe et acquérir des tickets de service, entre autres fonctionnalités.
Réseau
Une illustration est fournie pour dépeindre une configuration typique de serveur FreeIPA.
Authentification
Lâauthentification dans FreeIPA, utilisant Kerberos, reflĂšte celle de Active Directory. LâaccĂšs aux ressources du domaine nĂ©cessite un ticket Kerberos valide, qui peut ĂȘtre stockĂ© Ă divers emplacements selon la configuration du domaine FreeIPA.
Fichiers de tickets CCACHE
Les fichiers CCACHE, gĂ©nĂ©ralement stockĂ©s dans /tmp avec des permissions 600, sont des formats binaires pour stocker les informations dâidentification Kerberos, importants pour lâauthentification sans le mot de passe en clair de lâutilisateur en raison de leur portabilitĂ©. Lâanalyse dâun ticket CCACHE peut ĂȘtre effectuĂ©e Ă lâaide de la commande klist, et la rĂ©utilisation dâun ticket CCACHE valide implique dâexporter KRB5CCNAME vers le chemin du fichier de ticket.
Keyring Unix
Alternativement, les tickets CCACHE peuvent ĂȘtre stockĂ©s dans le keyring Linux, offrant plus de contrĂŽle sur la gestion des tickets. La portĂ©e du stockage des tickets varie (KEYRING:name, KEYRING:process:name, KEYRING:thread:name, KEYRING:session:name, KEYRING:persistent:uidnumber), avec klist capable dâanalyser ces informations pour lâutilisateur. Cependant, la rĂ©utilisation dâun ticket CCACHE depuis le keyring Unix peut poser des dĂ©fis, avec des outils comme Tickey disponibles pour extraire les tickets Kerberos.
Keytab
Les fichiers keytab, contenant des principaux Kerberos et des clĂ©s chiffrĂ©es, sont essentiels pour obtenir des tickets de distribution de tickets valides (TGT) sans avoir besoin du mot de passe du principal. Lâanalyse et la rĂ©utilisation des informations dâidentification Ă partir des fichiers keytab peuvent ĂȘtre facilement effectuĂ©es avec des utilitaires comme klist et des scripts tels que KeytabParser.
Cheatsheet
Vous pouvez trouver plus dâinformations sur la façon dâutiliser les tickets dans linux dans le lien suivant :
ĂnumĂ©ration
Warning
Vous pouvez effectuer lâĂ©numĂ©ration via ldap et dâautres outils binaires, ou en vous connectant Ă la page web sur le port 443 du serveur FreeIPA.
HĂŽtes, Utilisateurs et Groupes
Il est possible de crĂ©er des hĂŽtes, des utilisateurs et des groupes. Les hĂŽtes et les utilisateurs sont triĂ©s dans des conteneurs appelĂ©s âGroupes dâHĂŽtesâ et âGroupes dâUtilisateursâ respectivement. Ceux-ci sont similaires aux UnitĂ©s Organisationnelles (OU).
Par défaut dans FreeIPA, le serveur LDAP permet des liens anonymes, et une grande partie des données est énumérable non authentifiée. Cela peut énumérer toutes les données disponibles non authentifiées :
ldapsearch -x
Pour obtenir plus dâinformations, vous devez utiliser une session authentifiĂ©e (consultez la section Authentification pour apprendre comment prĂ©parer une session authentifiĂ©e).
# Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
# Get users groups
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=domain_name,dc=local"
# Get all the hosts
ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
Ă partir dâune machine jointe au domaine, vous pourrez utiliser des binaires installĂ©s pour Ă©numĂ©rer le domaine :
ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show <username> --all
ipa usergroup-show <user group> --all
ipa host-find <host> --all
ipa hostgroup-show <host group> --all
Tip
Lâutilisateur admin de FreeIPA est lâĂ©quivalent des domain admins de AD.
Hashes
Lâutilisateur root du serveur IPA a accĂšs aux hashes de mot de passe.
- Le hash de mot de passe dâun utilisateur est stockĂ© en base64 dans lâattribut âuserPasswordâ. Ce hash peut ĂȘtre SSHA512 (anciennes versions de FreeIPA) ou PBKDF2_SHA256.
- Le Nthash du mot de passe est stockĂ© en base64 dans âipaNTHashâ si le systĂšme a une intĂ©gration avec AD.
Pour cracker ces hashes :
⹠Si FreeIPA est intégré avec AD, ipaNTHash est facile à cracker : Vous devez décoder base64 -> le réencoder en ASCII hex -> John The Ripper ou hashcat peuvent vous aider à le cracker rapidement.
⹠Si une ancienne version de FreeIPA est utilisée, alors SSHA512 est utilisé : Vous devez décoder base64 -> trouver le hash SSHA512 -> John The Ripper ou hashcat peuvent vous aider à le cracker.
⹠Si une nouvelle version de FreeIPA est utilisée, alors PBKDF2_SHA256 est utilisé : Vous devez décoder base64 -> trouver PBKDF2_SHA256 -> sa longueur est de 256 octets. John peut travailler avec 256 bits (32 octets) -> SHA-265 est utilisé comme fonction pseudo-aléatoire, la taille de bloc est de 32 octets -> vous pouvez utiliser seulement les 256 premiers bits de notre hash PBKDF2_SHA256 -> John The Ripper ou hashcat peuvent vous aider à le cracker.
.png)
Pour extraire les hashes, vous devez ĂȘtre root sur le serveur FreeIPA, lĂ vous pouvez utiliser lâoutil dbscan pour les extraire :
.png)
HBAC-Rules
Ce sont les rĂšgles qui accordent des permissions spĂ©cifiques aux utilisateurs ou aux hĂŽtes sur des ressources (hĂŽtes, services, groupes de servicesâŠ)
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
# Using ipa
ipa hbacrule-find
# Show info of rule
ipa hbacrule-show <hbacrule> --all
Sudo-Rules
FreeIPA permet un contrĂŽle centralisĂ© des sudo permissions via des sudo-rules. Ces rĂšgles permettent ou limitent lâexĂ©cution de commandes avec sudo sur les hĂŽtes au sein du domaine. Un attaquant pourrait potentiellement identifier les hĂŽtes applicables, les utilisateurs et les commandes autorisĂ©es en examinant ces ensembles de rĂšgles.
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
# Using ipa
ipa sudorule-find
# Show info of rule
ipa sudorule-show <sudorule> --all
ContrĂŽle dâAccĂšs BasĂ© sur les RĂŽles
Un rĂŽle est composĂ© de divers privilĂšges, chacun englobant un ensemble de permissions. Ces rĂŽles peuvent ĂȘtre attribuĂ©s aux Utilisateurs, Groupes dâUtilisateurs, HĂŽtes, Groupes dâHĂŽtes et Services. Par exemple, considĂ©rons le rĂŽle par dĂ©faut âAdministrateur dâUtilisateursâ dans FreeIPA pour illustrer cette structure.
Le rĂŽle User Administrator a ces privilĂšges :
- Administrateurs dâUtilisateurs
- Administrateurs de Groupes
- Administrateurs dâUtilisateurs de ScĂšne
Avec les commandes suivantes, il est possible dâĂ©numĂ©rer les rĂŽles, privilĂšges et permissions :
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
# Using ipa binary
ipa role-find
ipa role-show <role> --all
ipa privilege-find
ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all
Exemple de scĂ©nario dâattaque
Dans https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e, vous pouvez trouver un exemple simple de la façon dâabuser de certaines permissions pour compromettre le domaine.
Linikatz/LinikatzV2
Privesc
crĂ©ation dâutilisateur root
Warning
Si vous pouvez créer un nouvel utilisateur avec le nom
root, vous pouvez vous faire passer pour lui et vous pourrez SSH sur nâimporte quelle machine en tant que root.CECI A ĂTĂ CORRIGĂ.
Vous pouvez consulter une explication détaillée dans https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Références
- https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
- https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a
- https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1
- https://www.youtube.com/watch?v=9dOu-7BTwPQ
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.


