# FreeIPA Pentesting
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
## Basiese Inligting FreeIPA is 'n oopbron **alternatief** vir Microsoft Windows **Active Directory**, hoofsaaklik vir **Unix**-omgewings. Dit kombineer 'n volledige **LDAP-gids** met 'n MIT **Kerberos** Sleutelverspreidingsentrum vir bestuur soortgelyk aan Active Directory. Deur die Dogtag **Sertifikaatstelsel** vir CA & RA sertifikaatbestuur te gebruik, ondersteun dit **multi-faktor** outentisering, insluitend slimkaarte. SSSD is geïntegreer vir Unix-outentiseringsprosesse. ## Vingerafdrukke ### Lêers & Omgewingsveranderlikes * Die lêer by `/etc/krb5.conf` is waar Kerberos-kliëntinligting, nodig vir inskrywing in die domein, gestoor word. Dit sluit KDC's en admin-bedieners se ligging, verstekinstellings en karterings in. * Stelselwye verstekinstellings vir IPA-kliënte en -bedieners word in die lêer by `/etc/ipa/default.conf` ingestel. * Hosts binne die domein moet 'n `krb5.keytab`-lêer by `/etc/krb5.keytab` hê vir outentiseringsprosesse. * Verskeie omgewingsveranderlikes (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) word gebruik om na spesifieke lêers en instellings wat relevant is vir Kerberos-outentisering te verwys. ### Binêr Gereedskap soos `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch`, en `kvno` is sentraal vir die bestuur van FreeIPA-domeine, hanteer Kerberos-kaartjies, verander wagwoorde, en verkry dienskaartjies, onder andere funksies. ### Netwerk 'n Illustrasie word voorsien om 'n tipiese FreeIPA-bedieneropstelling uit te beeld. ## Outentisering Outentisering in FreeIPA, wat **Kerberos** benut, weerspieël dit in **Active Directory**. Toegang tot domeinbronne vereis 'n geldige Kerberos-kaartjie, wat afhangende van die FreeIPA-domeinopset op verskeie plekke gestoor kan word. ### **CCACHE Kaartjieleêrs** CCACHE-lêers, tipies gestoor in **`/tmp`** met **600**-permissies, is binêre formate vir die stoor van Kerberos-legitimasie, belangrik vir outentisering sonder 'n gebruiker se platte teks wagwoord as gevolg van hul draagbaarheid. Die ontleding van 'n CCACHE-kaartjie kan gedoen word deur die `klist`-bevel, en die hergebruik van 'n geldige CCACHE-kaartjie behels die uitvoer van `KRB5CCNAME` na die pad van die kaartjieleêr. ### **Unix Sleutelring** Alternatiewelik kan CCACHE-kaartjies in die Linux-sleutelring gestoor word, wat meer beheer oor kaartjiebestuur bied. Die omvang van kaartjiestoor wissel (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), met `klist` wat in staat is om hierdie inligting vir die gebruiker te ontled. Nietemin kan die hergebruik van 'n CCACHE-kaartjie vanuit die Unix-sleutelring uitdagings bied, met gereedskap soos **Tickey** beskikbaar vir die onttrekking van Kerberos-kaartjies. ### Keytab Keytab-lêers, wat Kerberos-prinsipale en versleutelde sleutels bevat, is krities vir die verkryging van geldige kaartjie-verleningskaartjies (TGT) sonder om die prinsipaal se wagwoord nodig te hê. Die ontleding en hergebruik van legitimasie van keytab-lêers kan maklik uitgevoer word met gereedskap soos `klist` en skripte soos **KeytabParser**. ### Spiekbrief Meer inligting oor hoe om kaartjies in Linux te gebruik, kan gevind word by die volgende skakel: {% content-ref url="privilege-escalation/linux-active-directory.md" %} [linux-active-directory.md](privilege-escalation/linux-active-directory.md) {% endcontent-ref %} ## Enumerasie {% hint style="warning" %} Jy kan die **enumerasie** uitvoer via **ldap** en ander **binêre** gereedskap, of **verbind met die webblad op poort 443 van die FreeIPA-bediener**. {% endhint %} ### Hosts, Gebruikers, en Groepe Dit is moontlik om **hosts**, **gebruikers** en **groepe** te skep. Hosts en gebruikers word in houers genaamd "**Hostgroepe**" en "**Gebruikergroepe**" geplaas onderskeidelik. Hierdie is soortgelyk aan **Organisasie-eenhede** (OU). Standaard in FreeIPA, laat die LDAP-bediener toe vir **anonieme bindmiddels**, en 'n groot deel van die data is opvraagbaar **sonder outentisering**. Dit kan alle beskikbare data sonder outentisering opvra: ``` ldapsearch -x ``` Om **meer inligting** te kry, moet jy 'n **geautentiseerde** sessie gebruik (kyk na die Auteurskapsafdeling om te leer hoe om 'n geautentiseerde sessie voor te berei). ```bash # 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" ``` Vanaf 'n domein-gekoppelde masjien sal jy in staat wees om **geïnstalleerde bineêre lêers** te gebruik om die domein te ontleed: ```bash ipa user-find ipa usergroup-find ipa host-find ipa host-group-find ------------------- ipa user-show --all ipa usergroup-show --all ipa host-find --all ipa hostgroup-show --all ``` {% hint style="info" %} Die **admin** gebruiker van **FreeIPA** is die ekwivalent van **domain admins** van **AD**. {% endhint %} ### Hasse Die **root** gebruiker van die **IPA bediener** het toegang tot die wagwoord **hasse**. * Die wagwoordhas van 'n gebruiker word gestoor as **base64** in die “**userPassword**” **eienskap**. Hierdie has kan **SSHA512** wees (ou weergawes van FreeIPA) of **PBKDF2\_SHA256**. * Die **Nthash** van die wagwoord word as **base64** gestoor in “**ipaNTHash**” as die stelsel geïntegreer is met **AD**. Om hierdie hasse te kraak: • As FreeIPA geïntegreer is met AD, is dit maklik om **ipaNTHash** te kraak: Jy moet die **base64** **dekodeer** -> dit weer as **ASCII** heks herkodeer -> John The Ripper of **hashcat** kan jou help om dit vinnig te kraak • As 'n ou weergawe van FreeIPA gebruik word, word **SSHA512** gebruik: Jy moet die **base64** dekodeer -> vind SSHA512 **hash** -> John The Ripper of **hashcat** kan jou help om dit te kraak • As 'n nuwe weergawe van FreeIPA gebruik word, word **PBKDF2\_SHA256** gebruik: Jy moet die **base64** dekodeer -> vind PBKDF2\_SHA256 -> dit se **lengte** is 256 byte. John kan werk met 256 bits (32 byte) -> SHA-265 word gebruik as die pseudorandom funksie, blokgrootte is 32 byte -> jy kan net die eerste 256 bits van ons PBKDF2\_SHA256 hash gebruik -> John The Ripper of hashcat kan jou help om dit te kraak
Om die hasse te onttrek, moet jy **root in die FreeIPA bediener** wees, daar kan jy die instrument **`dbscan`** gebruik om hulle te onttrek:
### HBAC-Reëls Dit is die reëls wat spesifieke toestemmings aan gebruikers of gasheer oor bronne (gasheer, dienste, diensgroepe...) toeken. ```bash # 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 --all ``` #### Sudo-Reëls FreeIPA maak gesentraliseerde beheer oor **sudo-toestemmings** moontlik deur sudo-reëls. Hierdie reëls maak die uitvoering van beveelde met sudo op gasheer binne die domein moontlik of beperk dit. 'n Aanvaller kan moontlik die toepaslike gasheer, gebruikers, en toegelate beveelde identifiseer deur hierdie reëlreeks te ondersoek. ```bash # 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 --all ``` ### Rolgebaseerde Toegangsbeheer 'n **Rol** bestaan uit verskeie **voorregte**, elk waarvan 'n versameling van **regte** insluit. Hierdie rolle kan toegewys word aan Gebruikers, Gebruiker **Groepe**, **Gasheer**, Gasheer Groepe, en Dienste. Byvoorbeeld, oorweeg die verstek "Gebruiker Administrateur" rol in FreeIPA om hierdie struktuur te illustreer. Die rol `Gebruiker Administrateur` het hierdie voorregte: * **Gebruiker Administrateurs** * **Groep Administrateurs** * **Fase Gebruiker Administrateurs** Met die volgende opdragte is dit moontlik om die rolle, voorregte en regte op te som: ```bash # Using ldap ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" # Using ipa binary ipa role-find ipa role-show --all ipa privilege-find ipa privilege-show --all ipa permission-find ipa permission-show --all ``` ### Aanvalscenario-voorbeeld In [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) kan jy 'n eenvoudige voorbeeld vind van hoe om sekere toestemmings te misbruik om die domein te compromitteer. ### Linikatz/LinikatzV2 * [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2) * [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz) ## Privesc ### ~~root-gebruikerskepping~~ {% hint style="warning" %} As jy **'n nuwe gebruiker met die naam `root` kan skep**, kan jy hom naboots en sal jy in staat wees om **SSH na enige masjien as root te gebruik.** **DIT IS GEPAATCH.** {% endhint %} Jy kan 'n gedetailleerde verduideliking in [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) nagaan. ## Verwysings * [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](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-i-authentication-77e73d837d6a) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) * [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ)
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.