LDAP未授权访问学习
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访问白名单或黑名单。
所有内容仅限于维护网络安全学习参考