FreeIPA Pentesting
Reading time: 8 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Basic Information
FreeIPA ni mbadala wa chanzo wazi kwa Microsoft Windows Active Directory, hasa kwa mazingira ya Unix. Inachanganya LDAP directory kamili na Kituo cha Usambazaji wa Funguo za MIT Kerberos kwa usimamizi unaofanana na Active Directory. Inatumia Mfumo wa Cheti wa Dogtag kwa usimamizi wa vyeti vya CA & RA, inasaidia uthibitishaji wa multi-factor, ikiwa ni pamoja na kadi za smart. SSSD imeunganishwa kwa michakato ya uthibitishaji wa Unix.
Fingerprints
Files & Environment Variables
- Faili katika
/etc/krb5.conf
ndiyo mahali ambapo taarifa za mteja wa Kerberos, zinazohitajika kwa kujiandikisha katika eneo, zinahifadhiwa. Hii inajumuisha maeneo ya KDCs na seva za admin, mipangilio ya chaguo-msingi, na ramani. - Mipangilio ya chaguo-msingi kwa wateja na seva za IPA imewekwa katika faili iliyoko
/etc/ipa/default.conf
. - Hosts ndani ya eneo lazima iwe na faili ya
krb5.keytab
katika/etc/krb5.keytab
kwa michakato ya uthibitishaji. - Mabadiliko mbalimbali ya mazingira (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
) yanatumika kuashiria faili maalum na mipangilio inayohusiana na uthibitishaji wa Kerberos.
Binaries
Zana kama ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
, na kvno
ni muhimu katika kusimamia maeneo ya FreeIPA, kushughulikia tiketi za Kerberos, kubadilisha nywila, na kupata tiketi za huduma, miongoni mwa kazi nyingine.
Network
Mchoro umeandaliwa kuonyesha usanidi wa kawaida wa seva ya FreeIPA.
Authentication
Uthibitishaji katika FreeIPA, ukitumia Kerberos, unafanana na ule katika Active Directory. Upatikanaji wa rasilimali za eneo unahitaji tiketi halali ya Kerberos, ambayo inaweza kuhifadhiwa katika maeneo mbalimbali kulingana na usanidi wa eneo la FreeIPA.
CCACHE Ticket Files
Faili za CCACHE, ambazo kawaida huhifadhiwa katika /tmp
zikiwa na ruhusa 600, ni muundo wa binary wa kuhifadhi taarifa za Kerberos, muhimu kwa uthibitishaji bila nywila ya mtumiaji ya maandiko kwa sababu ya kubebeka kwake. Kuchambua tiketi ya CCACHE kunaweza kufanywa kwa kutumia amri ya klist
, na kutumia tena Tiketi halali ya CCACHE kunahusisha kusafirisha KRB5CCNAME
hadi kwenye njia ya faili la tiketi.
Unix Keyring
Kwa upande mwingine, Tiketi za CCACHE zinaweza kuhifadhiwa katika funguo za Linux, zikitoa udhibiti zaidi juu ya usimamizi wa tiketi. Mipaka ya uhifadhi wa tiketi inatofautiana (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), huku klist
ikiwa na uwezo wa kuchambua taarifa hii kwa mtumiaji. Hata hivyo, kutumia tena Tiketi ya CCACHE kutoka funguo za Unix kunaweza kuleta changamoto, huku zana kama Tickey zikiwa zinapatikana kwa ajili ya kutoa tiketi za Kerberos.
Keytab
Faili za keytab, zinazojumuisha wakuu wa Kerberos na funguo zilizofichwa, ni muhimu kwa kupata tiketi halali za kutoa tiketi (TGT) bila kuhitaji nywila ya mkuu. Kuchambua na kutumia tena taarifa kutoka kwa faili za keytab kunaweza kufanywa kwa urahisi kwa kutumia zana kama klist
na skripti kama KeytabParser.
Cheatsheet
Unaweza kupata maelezo zaidi kuhusu jinsi ya kutumia tiketi katika linux katika kiungo kinachofuata:
{{#ref}} privilege-escalation/linux-active-directory.md {{#endref}}
Enumeration
warning
Unaweza kufanya enumeration kupitia ldap na zana nyingine za binary, au kuungana na ukurasa wa wavuti katika bandari 443 ya seva ya FreeIPA.
Hosts, Users, and Groups
Inawezekana kuunda hosts, users na groups. Hosts na watumiaji wamepangwa katika vyombo vinavyoitwa “Host Groups” na “User Groups” mtawalia. Hizi zinafanana na Organizational Units (OU).
Kwa chaguo-msingi katika FreeIPA, seva ya LDAP inaruhusu anonymous binds, na sehemu kubwa ya data inaweza kuhesabiwa bila uthibitisho. Hii inaweza kuhesabu data yote inayopatikana bila uthibitisho:
ldapsearch -x
Ili kupata maelezo zaidi unahitaji kutumia kikao kilichothibitishwa (angalia sehemu ya Uthibitishaji kujifunza jinsi ya kuandaa kikao kilichothibitishwa).
# 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"
Kutoka kwa mashine iliyojiunga na kikoa utaweza kutumia binaries zilizowekwa kuhesabu kikoa:
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
note
Mtumiaji wa admin wa FreeIPA ni sawa na domain admins kutoka AD.
Hashes
Mtumiaji wa root kutoka kwa IPA server ana uf access kwa hashes za nywila.
- Hash ya nywila ya mtumiaji inahifadhiwa kama base64 katika “userPassword” attribute. Hash hii inaweza kuwa SSHA512 (toleo la zamani la FreeIPA) au PBKDF2_SHA256.
- Nthash ya nywila inahifadhiwa kama base64 katika “ipaNTHash” ikiwa mfumo una integration na AD.
Ili kuvunja hizi hashes:
• Ikiwa freeIPA imeunganishwa na AD, ipaNTHash ni rahisi kuvunja: Unapaswa decode base64 -> re-encoded kama ASCII hex -> John The Ripper au hashcat inaweza kukusaidia kuivunja haraka
• Ikiwa toleo la zamani la FreeIPA linatumika, basi SSHA512 inatumika: Unapaswa decode base64 -> pata SSHA512 hash -> John The Ripper au hashcat inaweza kukusaidia kuivunja
• Ikiwa toleo jipya la FreeIPA linatumika, basi PBKDF2_SHA256 inatumika: Unapaswa decode base64 -> pata PBKDF2_SHA256 -> urefu wake ni 256 byte. John anaweza kufanya kazi na 256 bits (32 byte) -> SHA-265 inatumika kama kazi ya pseudo-random, saizi ya block ni 32 byte -> unaweza kutumia tu bits 256 za kwanza za hash yetu ya PBKDF2_SHA256 -> John The Ripper au hashcat inaweza kukusaidia kuivunja
Ili kutoa hashes unahitaji kuwa root katika server ya FreeIPA, hapo unaweza kutumia chombo dbscan
kutoa hizo:
HBAC-Rules
Kuna sheria ambazo zinatoa ruhusa maalum kwa watumiaji au mwenyeji juu ya rasilimali (wenyeji, huduma, vikundi vya huduma...)
# 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 inaruhusu udhibiti wa kati juu ya sudo permissions kupitia sudo-rules. Sheria hizi zinaruhusu au kuzuia utekelezaji wa amri kwa kutumia sudo kwenye mwenyeji ndani ya eneo. Mshambuliaji anaweza kutambua wenyeji, watumiaji, na amri zinazoruhusiwa kwa kuchunguza seti hizi za sheria.
# 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
Udhibiti wa Ufikiaji Kulingana na Majukumu
Jukumu linajumuisha privileges mbalimbali, kila moja ikiwa na mkusanyiko wa permissions. Majukumu haya yanaweza kutolewa kwa Watumiaji, Makundi ya Watumiaji, Hosts, Makundi ya Hosts, na Huduma. Kwa mfano, fikiria jukumu la “Msimamizi wa Mtumiaji” la default katika FreeIPA ili kuonyesha muundo huu.
Jukumu la Msimamizi wa Mtumiaji
lina privileges hizi:
- Misimamizi wa Watumiaji
- Misimamizi wa Makundi
- Misimamizi wa Watumiaji wa Jukwaa
Kwa amri zifuatazo, inawezekana kuhesabu majukumu, privileges na 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
Mfano wa Hali ya Shambulio
Katika https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e unaweza kupata mfano rahisi wa jinsi ya kutumia ruhusa fulani kuathiri eneo.
Linikatz/LinikatzV2
Privesc
kuunda mtumiaji wa root
warning
Ikiwa unaweza kuunda mtumiaji mpya kwa jina root
, unaweza kujifanya kuwa yeye na utaweza SSH kwenye mashine yoyote kama root.
HII IMEPATWA.
Unaweza kuangalia maelezo ya kina katika https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Marejeleo
- 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
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.