首页/安全/渗透测试与安全评估速查/ldapsearch 目录只读查询
工具使用要点60 条

ldapsearch 目录只读查询

ldapsearch 查询目录服务的对象与属性:-x 简单认证、-b 基节点、-E pr 分页;仅查询审计所需属性,避免拉取全量目录。

ldapsearch 的用途

ldapsearch 通过 LDAP 协议查询目录服务里的对象与属性,是最通用的只读目录查询工具,对 AD 与 OpenLDAP 都适用。评估中它用来核对账号属性、组成员与目录结构,重点是只取审计所需字段、控制查询范围,避免把整棵目录树拉回本地。

基本信息

关键参数-x 简单认证、-H 服务地址、-D 绑定账号、-W 交互输入口令、-b 基节点
分页-E pr=500/noprompt 分批取回结果
属性只列出必要字段,如 sAMAccountName、userAccountControl
协议ldap 默认 389,ldaps 默认 636
记录查询语句与时间入项目日志,便于复核

典型使用场景

  • 账号清点:核对是否存在长期未登录或口令永不过期的账号
  • 组成员核实:确认高权限组里有哪些成员与嵌套组
  • 目录结构梳理:了解组织单位划分,为后续权限评估定位范围
  • 属性核对:检查描述字段是否被用来存放不该放的凭据信息
  • 与自动化对接:把查询结果导出为结构化文件,供脚本做差异对比

查询示例

查询示例
# 简单认证加分页,只取两个必要属性,避免全量拉取
ldapsearch -x -H ldap://dc01.example.com -D 'audit@example.com' -W -b 'DC=example,DC=com' -E pr=500/noprompt '(&(objectClass=user)(objectCategory=person))' sAMAccountName userAccountControl
# 查询指定组的成员
ldapsearch -x -H ldap://dc01.example.com -D 'audit@example.com' -W -b 'DC=example,DC=com' '(cn=Domain Admins)' member
# 结果落文件后统计条数,确认查询范围符合预期
ldapsearch -x -H ldap://dc01.example.com -D 'audit@example.com' -W -b 'DC=example,DC=com' '(objectClass=user)' sAMAccountName > ldap-users.txt

输出逐列读法

输出内容含义使用注意
dn条目唯一名称与路径据此判断对象在目录树中的位置
sAMAccountName登录名与人员台账核对,注意离职账号
userAccountControl账号状态位含禁用与口令永不过期等标志
member / memberOf组成员关系注意嵌套组带来的间接权限
numResponses--count 下的条目总数数字异常偏大说明范围写宽了
批量查询会进入目录服务审计日志:查询计划与时间窗先同步给客户管理员,避免被当成异常行为;查询语句里要写清基节点与过滤条件,出问题时能一眼看出范围有没有写宽。
-W 需要交互输入,放到脚本或计划任务里会直接失败:自动化场景改用 -w 并把口令从命令行历史中清理掉,或改用凭据文件。

易错点

  • 属性范围过宽,拉取全量目录
  • -W 交互输入在自动化任务中失败
  • 基节点写太靠上,返回远超审计需要的条目
  • 把口令写在命令行里,遗留在历史记录与进程列表中
  • 使用明文 ldap 传输绑定口令,同网段抓包即可获取凭据

数据来源与参考

  • OpenLDAP 官方文档(ldapsearch)
  • Microsoft Learn(LDAP 查询语法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌