一、LDAP基础概念
LDAP(轻量目录访问协议) 是一种用于访问和管理分布式目录服务的协议,广泛应用于企业用户认证、资源管理等领域。其核心特点包括:
- 树形数据结构:数据以条目(Entry)形式组织,每个条目由属性和唯一标识符(DN,Distinguished Name)构成,例如
uid=user1,ou=users,dc=example,dc=com - 高效查询:针对读取操作优化,适合静态数据的快速检索,但写入性能较低
- 协议版本:主流版本为LDAPv3,支持扩展操作和安全性增强
与LDAPS的区别:
LDAPS(LDAP over SSL/TLS)是LDAP的加密版本,默认使用端口636,通过SSL/TLS加密传输数据,防止中间人攻击
二、OpenLDAP安装与配置
1. 环境部署(以Ubuntu为例)
# 安装OpenLDAP服务端和客户端工具
sudo apt-get update
sudo apt-get install slapd ldap-utils
# 配置管理员密码和基础DN
sudo dpkg-reconfigure slapd
# 输入管理员密码,设置Base DN如 dc=example,dc=com
2. 编辑配置文件
# 修改slapd.conf(部分系统为olc配置)
vim /etc/ldap/slapd.conf
# 添加以下内容
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
3.生成默认SSHA加密密码
# 生成默认SSHA加密密码
slappasswd -s "your_password"
# 指定其他加密方式(如SHA、MD5)
slappasswd -h {SHA} -s "admin" # 输出{SHA}0DPiKuNIrrVmD8IUCuw1hQxNqZc=
4. 添加测试用户
# 创建用户条目文件user.ldif
dn: uid=user1,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
uid: user1
cn: Test User
sn: User
userPassword: {SSHA}加密字符串
# 导入数据
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f user.ldif
三、LDAP漏洞利用实战
1. 未授权访问漏洞
漏洞原理:未配置访问控制列表(ACL),允许匿名用户读取敏感数据
复现步骤:
- 使用
ldapsearch匿名查询:
ldapsearch -x -H ldap://<target_ip>:389 -b "dc=example,dc=com"
2.通过工具(如LdapAdmin)连接,获取用户列表及密码哈希
2. LDAP注入攻击
场景:应用程序未对用户输入过滤,构造恶意查询绕过认证。
示例:
假设登录过滤条件为 (&(uid=<input>)(userPassword=<password>)),攻击者可注入:
uid=*)(uid=*))%00
绕过密码验证,获取所有用户信息
3. LDAPNightmare漏洞(CVE-2024-49113)
影响:通过恶意CLDAP请求导致域控LSASS服务崩溃,触发系统重启
利用工具:
使用公开的PoC脚本发送特制数据包:
# 伪代码示例
send_ldap_request(target_ip, payload="恶意lm_referral值")
四、安全加固方案
1. 启用加密传输
- 配置LDAPS:生成SSL证书并修改配置:
# 修改slapd.conf启用TLS
TLSCertificateFile /etc/ssl/certs/server.pem
TLSCertificateKeyFile /etc/ssl/private/server.key
强制加密:禁用LDAP明文端口389,仅开放636
2. 访问控制
- 限制匿名访问:
# 在slapd.conf中添加
access to * by anonymous none
基于角色的ACL:仅允许特定用户组修改数据
3. 证书与密钥管理
- 使用可信CA签发证书,定期轮换密钥。
- 配置客户端验证服务器证书
4. 漏洞修复与监控
- 补丁更新:及时修复如CVE-2024-49113等漏洞
- 日志审计:监控异常查询和连接尝试,例如:
# 使用tcpdump抓取异常流量
tcpdump -i any port 636 -w ldaps_traffic.pcap
3384

被折叠的 条评论
为什么被折叠?



