參考文章: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