LDAP的学习

Posted zpchcbd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LDAP的学习相关的知识,希望对你有一定的参考价值。

参考文章:https://www.anquanke.com/post/id/196238 参考文章:https://www.anquanke.com/post/id/195737

#什么是LDAP

LDAP(Lightweight Directory Access Protocol),轻量目录访问协议,是一种用来查询与更新 Active Directory 的目录服务通信协议。

在AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。

目录服务:是由目录服务数据库(是树状结构的数据库,和mysql等表状结构数据库有差别)和一套访问协议组成 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树 条目:树中的每个节点是一个条目 DN:每个条目有自己的唯一可区别的名称(DN),比如这一条uid=bob,ou=people,dc=acme,dc=org就是一个唯一可区别的名称

技术图片

#如何进行LDAP的查询

这里自己就单纯的讲下在域中的查询,因为自己也了解这个

通过对应的LDAP的语法,我们可以在域中可以准确、单一的请求我们想要查询的数据

这里拿adfind来进行演示

比如先查询:`adfind DC=PENTEST,DC=GOD -f"

那么就会遍历列出DC=PENTEST,DC=GOD目录下的所有条目,如下图显示,因为命令行显示有限,所以就展览在文本中进行显示了

技术图片

比如查询:adfind DC=PENTEST,DC=GOD -f "(objectClass=user)"

技术图片

那么就会给出对应的数据objectClass=user下面的所有条目,ObjectClass是一个内置的数据属性,这里面的话计算机账号和用户账号都存在user这个属性,如图中所示:

技术图片

用户常见属性介绍:

displayName
objectSid
userPrincipalName
sAMAccountName
whenCreateds
pwdLastSet
Lastlogon

查询adfind DC=PENTEST,DC=GOD -f "(objectclass=user)" displayName objectsid

那么给出的数据就是对应其中条目的每个displayName 和 objectsid 的属性

技术图片

#什么是userAccountControl

现在继续讲关于用户的userAccountControl属性介绍

userAccountControl对应的介绍文章:https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties

技术图片

每个用户自身的权限都会记录在这个属性值里面

技术图片

最上面的查询可以看出来每个用户都有各自的权限,举个例子比如自身的密码永不过期等等的属性,如果用上面的查询方法是不能具体的查询到的,这时候就需要用到文章中讲的位操作查询

adfind自身提供了便利的查询方法,方便了AND OR INCHAIN NEST DNWDATA 的写法

技术图片

查询密码永不过期的用户

密码永不过期的flag是DONT_EXPIRE_PASSWORD 0x10000 65536,十进制为65536

那么只需要查询语法是:adfind DC=PENTEST,DC=GOD -f "&(objectClass=user)(UserAccountControl:AND:=65536)" -bit

技术图片

以上是关于LDAP的学习的主要内容,如果未能解决你的问题,请参考以下文章

西部开源学习笔记BOOK2《ldap网络帐号》

IOS开发-OC学习-常用功能代码片段整理

LDAP的学习

LDAP的学习

java SpringRetry学习的代码片段

python 机器学习有用的代码片段