我有一项服务,它使用 LDAP 目录(匿名绑定)来获取用户及其密码,以便执行身份验证。问题是,我意识到即使我在用户的密码后面添加字符,我也可以登录该用户。
例如,让密码用户1是密码。我的意思是,如果我输入用户1和密码但如果我输入用户1和密碼。只要第一个字符是真正的密码,我就可以输入,尽管我在后面输入了其他字符。
另一方面,如果我在真实密码之前输入字符,我就无法使用该服务。
我们已经在 SUSE Linux Enterprise Server 11 SP2 中安装了 OpenLDAP 2.4.26
slapd 的配置如下:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/yast.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attrs=userPassword,userPKCS12
by self write
by * auth
access to attrs=shadowLastChange
by self write
by * read
access to *
by * read
loglevel 0
database bdb
suffix xxxxxxx
rootdn xxxxxxx
rootpw xxxxxxx
directory /ldap
checkpoint 1024 5
cachesize 10000
index objectClass,uidNumber,gidNumber eq
index member,mail eq,pres
index cn,displayname,uid,sn,givenname sub,eq,pres
对于可能存在什么问题您有什么想法吗?
非常感谢
问候,
答案1
我发现了问题所在。我的密码(以及其他用户的密码)是通过使用墓穴根据其文档:
通过取密钥前八个字符的最低 7 位,得到 56 位密钥。
由于我们的密码长度为 8 个字符墓穴即使我在正确的密码后输入更多字符,也会返回相同的哈希值。
非常感谢。
此致