389,636,2368,3269 - LDAP

ldapsearch

์˜ˆ๋ฅผ ๋“ค์–ด, ldapsearch๋Š” LDAP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ LDAP ๋””๋ ‰ํ† ๋ฆฌ ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ต์…˜ ์„ค๋ช…

  • -x : ์ต๋ช… ๋กœ๊ทธ์ธ

  • -s base : ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ์ง€์ •

  • namingcontexts : namingcontexts๋Š” LDAP ์„œ๋ฒ„์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์†์„ฑ์ž…๋‹ˆ๋‹ค

    • ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ(namingcontexts)๋Š” LDAP ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…, ์ด๋ฅผ ๋น„์œ ํ•˜์ž๋ฉด, ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ๋Š” LDAP ์„œ๋ฒ„์˜ "์ตœ์ƒ์œ„ ํด๋”"๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      LDAP ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์กฐ์งํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ์—์„œ ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ๋Š” ๊ฐ€์žฅ ์ƒ์œ„์— ์œ„์น˜ํ•˜๋ฉฐ, ๊ทธ ์•„๋ž˜์—๋Š” ์กฐ์ง, ๋„๋ฉ”์ธ, ๋ถ€์„œ, ์‚ฌ์šฉ์ž ๋“ฑ์˜ ํ•˜์œ„ ํ•ญ๋ชฉ๋“ค์ด ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

      ์˜ˆ๋ฅผ ๋“ค์–ด, "dc=example,dc=com"๋ผ๋Š” ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์„œ "dc"๋Š” '๋„๋ฉ”์ธ ๊ตฌ์„ฑ ์š”์†Œ(Domain Component)'๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, "example"์€ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. "dc=example,dc=com"์€ LDAP ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ์ด "example.com"์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

      ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด LDAP ์„œ๋ฒ„์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์กฐ์งํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฐพ๊ฑฐ๋‚˜, ์กฐ์ง์˜ ๊ตฌ์„ฑ์›์„ ์กฐํšŒํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ๋„ค์ž„ ์ปจํ…์ŠคํŠธ๋Š” LDAP ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฆ‰ namingcontexts ์—ด๊ฑฐ๋ฅผ ํ†ตํ•ด ๊ฐ์ข… ๋„๋ฉ”์ธ ๋ฐ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

  • -b "DC=cascade,DC=local" : ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ์ง€์ •, DC=cascade,DC=local๋กœ

ldapsearch

realblackcat@htb[/htb]$ ldapsearch -H ldap://ldap.example.com:389 -D "cn=admin,dc=example,dc=com" -w secret123 -b "ou=people,dc=example,dc=com" "(mail=john.doe@example.com)"

#๋‹จ์ˆœํ•œ ์˜ˆ์‹œ
ldapsearch -H LDAP://10.10.10.192 -D cn=support,dc=blackfield,dc=local -w '#00^BlackKnight' -x -b 'dc=blackfield,dc=local'

์ด ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํฌํŠธ 389์—์„œ ldap.example.com ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„๋ฐ€๋ฒˆํ˜ธ secret123์„ ์‚ฌ์šฉํ•˜์—ฌ cn=admin,dc=example,dc=com์œผ๋กœ ๋ฐ”์ธ๋”ฉ(์ธ์ฆ)ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ DN ou=people,dc=example,dc=com์œผ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•„ํ„ฐ (mail=john.doe@example.com )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ํ•ญ๋ชฉ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ด๋Š” ์‘๋‹ต์„ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค:

์ฝ”๋“œ: ldap

dn: uid=jdoe,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: John Doe
sn: Doe
uid: jdoe
mail: john.doe@example.com

result: 0 Success

์ด ์‘๋‹ต์—๋Š” ๊ฒ€์ƒ‰ ๊ธฐ์ค€๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์˜ DN(๊ณ ์œ  ์ด๋ฆ„) ๊ณผ ํ•ด๋‹น ์†์„ฑ ๋ฐ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

โ”Œโ”€โ”€(b1ackcatใ‰ฟkali)-[~/Downloads/HTB_LAB]
โ””โ”€$ ldapsearch -H ldap://support.htb -x -s base namingcontexts
# extended LDIF
#
# LDAPv3
# base <> (default) with scope baseObject
# filter: (objectclass=*)
# requesting: namingcontexts 
#

#
dn:
namingcontexts: DC=support,DC=htb
namingcontexts: CN=Configuration,DC=support,DC=htb
namingcontexts: CN=Schema,CN=Configuration,DC=support,DC=htb
namingcontexts: DC=DomainDnsZones,DC=support,DC=htb
namingcontexts: DC=ForestDnsZones,DC=support,DC=htb

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

#๋งŒ์•ฝ LDAP์— ์ต๋ช…๋กœ๊ทธ์ธ์ด ํ—ˆ์šฉ๋˜์–ด์žˆ๋‹ค๋ฉด
ldapsearch -h 10.10.10.182 -x -b "DC=support,DC=htb" > ldap-anonymous

#์‚ฌ๋žŒ๋งŒ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด 
ldapsearch -h 10.10.10.182 -x -b "DC=cascade,DC=local" '(objectClass=person)' > ldap-people

ldapsearch

์ž๊ฒฉ ์ฆ๋ช…์ด ๋ฌดํšจ์ด๊ฑฐ๋‚˜ ์ž๊ฒฉ ์ฆ๋ช…์ด ์œ ํšจํ•œ์ง€ ํ™•์ธ

ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
# CREDENTIALS NOT VALID RESPONSE
search: 2
result: 1 Operations error
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
 tion a successful bind must be completed on the connection., data 0, v3839

"๋ฐ”์ธ๋”ฉ์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค" ๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ž๊ฒฉ ์ฆ๋ช…์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๋Š” ๋œป

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ์—์„œ ๋ชจ๋“ ๊ฒƒ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Œ

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
-x Simple Authentication
-H LDAP Server
-D My User
-w My password
-b Base site, all data from here will be given

์‚ฌ์šฉ์ž ์ถ”์ถœ

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"

์ปดํ“จํ„ฐ ์ถ”์ฒ 

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"

๋‚ด ์ •๋ณด ์ถ”์ถœ

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"

๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž ์ถ”์ถœ

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"

๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค:

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ด€๋ฆฌ์ž๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค:

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"

๊ด€๋ฆฌ์ž๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค:

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"

์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ๊ทธ๋ฃน์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค:

ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"

๋น„๋ฐ€๋ฒˆํ˜ธ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•œ ํ›„ grep์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

<ldapsearchcmd...> | grep -i -A2 -B2 "userpas"

์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์‹ค์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

Last updated