LDAP未授權訪問學習
一、LDAP
介紹
LDAP的全稱爲Lightweight Directory Access Protocol(輕量級目錄訪問協議), 基於X.500標準, 支持 TCP/IP。
LDAP目錄爲數據庫,通過LDAP服務器(相當於DBMS)處理查詢和更新, 以樹狀的層次結構來存儲數據,相對關係型數據庫, LDAP主要是優化數據讀取的性能,適用於比較少改變、跨平臺的信息。
LDAP屬性
屬性 | 全名 | 描述 |
---|---|---|
dn | distinguished name | 唯一標識名,類似於絕對路徑,每個對象都有唯一標識名。 例如:uid=tester,ou=People,dc=example,dc=com |
rdn | relative | 相對標識名,類似於相對路徑。 例如:uid=tester |
uid | user id | 通常指用戶登錄名。 例如:uid=tester |
sn | sur name | 通常指一個人的姓氏。 例如:sn: Su |
giveName | 通常指一個人的名字。 例如:giveName: Aldwin | |
I | 通常指一個地方的地名。 例如:I: Beijing | |
objectClass | objectClass是特殊屬性,包含數據存儲的方式以及相關屬性信息。 | |
dc | domain component | 通常指定一個域名。 例如:dc=example,dc=com |
ou | organization unit | 通常指定一個組織單元的名稱。 例如:ou=people,dc=example,dc=com |
cn | common name | 通常指一個對象的名稱。如果是人,需要使用全名。 |
c | country | 一個二位的國家代碼。 例如:CN、US、HK、JP等。 |
二、LDAP&phpldapadmin搭建
Ubuntu系統搭建LDAP服務及web端管理服務phpldapadmin
參考文章:
https://my.oschina.net/u/2496664/blog/801996
上面文章寫的很詳細,有些步驟由於可能版本更新而有微小的差異。
比如不用選擇數據庫;注意編輯配置文件的時候不需要改註釋內的東西,改註釋外的代碼即可。下圖爲完成界面。
三、LDIF文件
關於LDIF文件:
LDIF 完全獨立於在所有特定目錄中使用的儲存格式,LDIF 通常用於從 LDAP 服務器導出目錄信息或將數據導入 LDAP 服務器。
demo
dn: dc=Zh1z3ven,dc=com
objectclass: top
dc: Zh1z3ven
dn: ou=People,dc=Zh1z3ven,dc=com
objectclass: organizationalUnit
ou: People
dn: uid=Zh1z3ven,ou=People,dc=Zh1z3ven,dc=com
uid: Zh1z3ven
objectClass: inetOrgPerson
userPassword: 111111
sn: Zh
cn: Zh1z3ven Zh
四、LDAP未授權漏洞
0x01 產生原因
未對LDAP的訪問進行密碼驗證,導致未授權訪問。
這一般是大部分LDAP服務出現此漏洞的主要原因,導致可以使用ldapbrowser直接連接,獲取目錄內容。
0x02 簡述
比如我上面搭建好的環境明明是有密碼123456的,但是利用ldapbrowser可以直接讀取到目錄內容而跳過了web端那種密碼驗證的方式
注意Anonymous bind那裏要勾選上,因爲默認的LDAP服務都是開啓匿名訪問的,但是隻能進行read和search操作,不可以刪除和修改。
如需指定用戶則需要在下圖紅框內指定cn和相應的password
五、修復建議
0)關於如何禁止LDAP匿名訪問:
https://www.cnblogs.com/rusking/p/4936341.html
1)修改ldap的acl,不允許匿名訪問。
2)根據業務設置ldap訪問白名單或黑名單。