首页 > 其他分享 >web渗透测试(13):LDAP 攻击

web渗透测试(13):LDAP 攻击

时间:2023-08-03 12:44:33浏览次数:46  
标签:hacker web 13 cn 身份验证 INPUT2 LDAP 过滤器

在本节中,我们将介绍LDAP攻击。LDAP通常用作身份验证的后端,尤其是在单点登录(SSO)解决方案中。LDAP有自己的语法,我们将在以下示例中更详细地看到。

 

如有不懂什么是LDAP请查看

 

Example 1

在第一个示例中,使用您的用户名和密码连接到LDAP服务器。在这种情况下,LDAP服务器不会对您进行身份验证,因为您的凭据无效。

 

但是,某些LDAP服务器授权NULL绑定:如果发送NULL空值,LDAP服务器将继续绑定连接,并且PHP代码将认为凭据是正确的。 要获取具有2个空值的bind绑定,您需要从查询中完全删除此参数。 如果您在URL中保留了username=&password=之类的内容,则这些值将不起作用,因为它们不会为null; 相反,它们将是空的。

 

这是对将来要测试的所有登录表单执行的重要检查,即使后端不是基于LDAP的。

 

Example 2

最常见的LDAP注入模式是能够注入过滤器。在这里,我们将看到如何使用LDAP注入来绕过身份验证检查。

 

首先,您需要学习一些LDAP语法。当您检索用户时,将根据其用户名使用以下内容:

(cn=[INPUT])

 

如果要添加更多条件和一些布尔逻辑,可以使用:

  • 布尔OR使用|: (|(cn=[INPUT1])(cn=[INPUT2]))获取匹配的记录[INPUT1]或[INPUT2]。
  • 布尔值AND使用 &: (&(cn=[INPUT1])(userPassword=[INPUT2]))获取cn匹配[INPUT1]和密码匹配的记录[INPUT2]。

 

如您所见,布尔逻辑位于过滤器的开头。由于您可能会在它之后注入,因此并不总是可以(取决于LDAP服务器)在过滤器内部注入逻辑,如果它只是(cn=[INPUT])。

 

LDAP经常使用通配符*字符来匹配任何值。这可以用于匹配所有*或只是子串(例如,adm*对于所有以单词开头的单词adm)。

与其他注入一样,我们需要删除服务器端代码添加的任何内容。我们可以使用NULL BYTE(编码为%00)来消除过滤器的结尾。

 

在这里,我们有一个登录脚本。我们可以看到,如果我们使用:

  • name=hacker&password=hacker 我们得到认证(这是正常的请求)。
  • name=hack*&password=hacker 我们得到验证(通配符匹配相同的值)。
  • name=hacker&password=hac* 我们没有经过身份验证(密码可能会被散列)。

 

现在,我们将看到如何在name参数中使用LDAP注入来绕过身份验证。根据我们之前的测试,我们可以推断过滤器可能看起来像:

(&(cn=[INPUT1])(userPassword=HASH[INPUT2]))

其中HASH是未加盐的哈希值(可能是MD5或SHA1)。

 

LDAP支持多种格式:`{CLEARTEXT}`, `{MD5}`, `{SMD5}` (salted MD5), `{SHA}`, `{SSHA}` (salted SHA1), `{CRYPT}`用于储存密码。

 

由于[INPUT2]是哈希,我们不能用它来注入我们的有效载荷。

 

我们这里的目标是注入内部[INPUT1](用户名参数)。我们需要注入:

使用当前过滤器的结尾hacker)。

始终为真的条件(例如(cn = *))

一个)保持有效的语法并关闭第一个)。

一个NULL BYTE(%00)来摆脱过滤器的结束。

 

一旦你把它放在一起,你应该可以使用任何密码登录hacker这个用户名。

 

然后,您可以尝试使用通配符技巧查找其他用户。 例如,您可以在过滤器的第一部分中使用a*,并检查您登录的对象。

 

在大多数情况下,LDAP注入只允许您绕过身份验证和授权检查。 检索任意数据(而不仅仅是获得更多结果)通常非常具有挑战性或不可能。

标签:hacker,web,13,cn,身份验证,INPUT2,LDAP,过滤器
From: https://www.cnblogs.com/shanhubei/p/17602999.html

相关文章

  • web渗透测试(12):命令注入
    命令注入来自缺乏对作为命令一部分使用的信息的过滤和编码。最简单的示例来自使用函数system(运行命令)并将HTTP参数作为此命令的参数。 有很多方法可以利用命令注入:例如,通过在反引号内注入命令 `id`通过将第一个命令的结果重定向到第二个命令 |id如果由第一个成功运行的......
  • 如何用DHTMLX组件为Web应用创建甘特图?(二)
    dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一,DHTMLXGantt组件提供了能提升研发甘特图功能所需的重要工具。在这篇文章中,您将学习如何添加一个基本......
  • .NET Core WebAPI中使用Swagger(完整教程)
    一、Swagger简介1.1-什么是Swagger?Swagger是一个规范且完整的框架,用于生成、描述、调试和可视化Restfull风格的Web服务。Swagger的目标是对RestAPI定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监控就可以发现和连接服务的能力。当通过......
  • SD-WebUI安装的时候的小波折
    1.外面与里面不一样 小小的眼睛大大的疑惑.jpg进到stable-diffusion-webui选中venv点击Delete后运行webui.bat就会重新创建了(没有这个文件夹就是没有虚拟环境,要还有错就继续找么(;´д`)ゞ)配置:SD-WebUI的.bat脚本报版本不对,外部查看是对的这种情况是因为python有个东西:venv......
  • 《Web安全基础》03. SQL 注入
    @目录1:简要SQL注入2:MySQL注入2.1:信息获取2.2:跨库攻击2.3:文件读写2.4:常见防护3:注入方法3.1:类型方法明确3.2:盲注3.3:编码3.4:二次注入3.5:DNSlog注入3.6:堆叠注入4:WAF绕过4.1:WAF简介4.2:绕过方法5:其他数据库注入5.1:Access5.2:SqlServer5.3:PostgreSQL5.4:Oracle5.5:MongoDB本系列侧......
  • Canvas好难,如何让研发低成本实现Web端流程图设计功能
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言相信大家在职场中经常会用到流程图,在互联网行业,绘制流程图不论在产品的设计阶段,还是后期优化业务流程的阶段,都有着巨大的价值。事实上,......
  • 算法-13-堆排序
            ......
  • .NET Core WebAPI中使用Swagger(完整教程)
    一、Swagger简介1.1-什么是Swagger?Swagger是一个规范且完整的框架,用于生成、描述、调试和可视化Restfull风格的Web服务。Swagger的目标是对RestAPI定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监控就可以发现和连接服务的能力。当通过S......
  • 13.STL迭代器如何实现
    13.STL迭代器如何实现1.迭代器是一种抽象的设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器,除此之外,STL中迭代器一个最重要的作用就是作为容器与STL算法的粘合剂。2.迭代器的作用就是提供一个遍历容器内部所有元素的接口,因此迭代器内部必须保存一个与容器相关联的......
  • 130.hello.c 程序的编译过程
    130.hello.c程序的编译过程以下是一个hello.c程序:#include<stdio.h>intmain(){printf("hello,world\n");return0;}在Unix系统上,由编译器把源文件转换为目标文件。gcc-ohellohello.c这个过程大致如下:![img](D:\BaiduSyncdisk\C++\笔记图片\130.h......