12 KiB
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!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en 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 {% 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).
# 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:
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
{% 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.
# 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-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.
# 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
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:
# 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
Aanvalscenario-voorbeeld
In 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
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 nagaan.
Verwysings
- 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
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!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.