首页 > 其他分享 >LDAP注入

LDAP注入

时间:2023-03-21 13:55:18浏览次数:28  
标签:查询 攻击者 LDAP 过滤器 目录 输入 注入

1 属性   

模式名

LDAP注入

模式ID

 

参考

 

关键词

注入,分级目录结构,数据查询

STRIDE

信息泄露,篡改,权限提升

分类

Web攻击方法

  [ 回目录 ]2 概述   

攻击模式介绍

LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种在线目录访问协议,主要用于目录中资源的搜索和查询;每个LDAP查询使用一个或者多个搜索过滤器,它们决定了请求返回的目录项。搜索过滤器可以使用各种逻辑运算符来表示复制的搜索条件,常见的搜索过滤器如下:

简单匹配条件:对单个值进行匹配

(username=xiaofeng)

析取查询(or)指多个条件至少满足一个

(|(cn=searchitme1)(sn=searchitme2)(ou=searchitem3))

合取查询(and)返回的目录项必须满足所有的条件:

(&(username=xiaofeng)(password=3453456))

和其他形式的注入一样,如果用户提交的输入不经过任何过滤而被直接插到LDAP搜索过滤器中,攻击者可以通过构造特定的输入来修改过滤器的结构,来进行非授权操作。

  [ 回目录 ]3 攻击前提条件   

资源需求

1、web业务运行正常

2、存在LDAP服务系统

知识技能需求

数据库查询语言、LDAP相关查询语句知识

  [ 回目录 ]4 攻击步骤   

分析

测试一个应用是否存在代码注入漏洞典型的方法是向服务器发送会生成一个无效输入的请求。因此,如果服务器返回一个错误消息,攻击者就能知道服务器执行了构造的查询,可以利用代码注入技术。

向一项LDAP操作提交无效的输入并不会生成任何详细的错误信息。通常,由搜索功能返回的结果和发生的错误(如一个Http500状态码)有助于确定漏洞。但是渗透测试人员可以使用以下步骤相对可靠的确定LDAP注入漏洞:

实施

1、尝试仅仅输入一个*作为搜索项。在LDAP中,*为通配符,如果返回大量结果,明显表示攻击针对的是一个LDAP查询;

2、尝试输入大量的闭合括号:)))))))),闭合前面输入的括号,从而破坏查询语句;

3、尝试通过输入各种旨在干扰不同类型的查询的表达式,并看是否可以通过这些表达式来影响返回结果。所有的LDAP均支持cn(common name)属性;

)(cn=*

*))(|(cn=*

*))%00

 

利用

敏感数据泄露,权限提升,执行非授权操作,绕过认证

  [ 回目录 ]5 结果和影响   

攻击结果

数据库等敏感数据泄露,服务器被控制且内网被渗透

机密性

完整性

可用性

  [ 回目录 ]6 消减措施   

设计阶段

 

应用配置

1、输入验证

2、参数化处理用户输入

3、错误消息处理

  [ 回目录 ]7 实例   

实例1

一个登陆页有两个文本框用于输入用户名和密码(图二)。Uname和Pwd是用户对应的输入。为了验证客户端提供的user/password对,构造如下LDAP过滤器并发送给LDAP服务器:

(&(USER=Uname)(PASSWORD=Pwd))

如果攻击者输入一个有效地用户名,如r00tgrok,然后在这个名字后面注入恰当的语句,password检查就会被绕过。

使得Uname=slisberger)(&)),引入任何字符串作为Pwd值,构造如下查询并发送给服务器:

(&(USER= slisberger)(&)(PASSWORD=Pwd))

LDAP服务器只处理第一个过滤器,即仅查询(&(USER=slidberger)(&))得到了处理。这个查询永真,因而攻击者无需有效地密码就能获取对系统的访问。

实例2

现假设下面的查询会向用户列举出所有可见的低安全等级文档:

(&(directory=document)(security_level=low))

这里第一个参数document是用户入口,low是第二个参数的值。如果攻击者想列举出所有可见的高安全等级的文档,他可以利用如下的注入:

document)(security_level=*))(&(directory=documents

生成的过滤器为:

(&(directory=documents)(security_level=*))(&(direcroty=documents)(security_level=low))

LDAP服务器仅会处理第一个过滤器而忽略第二个,因而只有下面的查询会被处理:

(&(directory=documents)(security_level=*))而

(&(direcroty=documents)(security_level=low))

则会被忽略。结果就是,所有安全等级的可用文档都会列举给攻击者,尽管他没有权限查看它们。

案例3

假设一个资源管理器允许用户了解系统中可用的资源(打印机、扫描器、存储系统等)。这便是一个典型的OR注入案例,因为用于展示可用资源的查询为:

(|(type=Rsc1)(type=Rsc2))

Rsc1和Rsc2表示系统中不同种类的资源,在图中,Rsc1=printer,Rsc2=scanner用于列出系统中所以可用的打印机和扫描器。

如果攻击者输入Rsc=printer)(uid=*),则下面的查询被发送给服务器:

(|(type=printer)(uid=*))(type=scanner)

LDAP服务器会响应所有的打印机和用户对象,

  [ 回目录 ]8 相关参考   

相关参考

web安全测试规范1.4,黑客攻防技术宝典

标签:查询,攻击者,LDAP,过滤器,目录,输入,注入
From: https://www.cnblogs.com/gongxianjin/p/17239739.html

相关文章

  • Spring的手动注入,动态注入
    参数说明:Objectbean,就是一个已经被创建的实例;ApplicationContext:Spring的Context;AutowireCapableBeanFactory.AUTOWIRE_BY_NAME:按照名字来注......
  • springboot防止XSS攻击和sql注入
     文章目录1.XSS跨站脚本攻击①:XSS漏洞介绍②:XSS漏洞分类③:防护建议2.SQL注入攻击①:SQL注入漏洞介绍②:防护建议3.SpringBoot中如何防止XSS攻击和......
  • 跟老杜手撕Spring6教程(十)set注入专题-1
    set注入专题本篇文章是set注入专题,上篇说了构造注入​​https://blog.51cto.com/u_15485663/6132498​​配合视频教程观看,更易理解吸收,动力节点老杜的Spring6教程采用难度逐......
  • 跟老杜手撕Spring6教程(九)构造注入
    构造注入本篇文章说说构造注入,上篇说了Spring对IoC的实现​​https://blog.51cto.com/u_15485663/6120423​​配合视频教程观看,更易理解吸收,动力节点老杜的Spring6教程采用......
  • Spring Boot 如果防护 XSS + SQL 注入攻击 ?一文带你搞定!
    1.XSS跨站脚本攻击①:XSS漏洞介绍跨站脚本攻击XSS是指攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被解析执行,从而达到恶意攻......
  • sql注入getshell
    前提条件:1.需要知道网站的绝对路径2.secure_file_priv的值为空3.需要足够的权限4.GPC关闭可使用单引号 实验环境:sqli-labs-1网站绝对路径:E:\phpstudy_pro\WWW\sqli......
  • sql注入之万能密码总结
    原验证登陆语句:SELECT*FROMadminWHEREUsername='".$username."'ANDPassword='".md5($password)."'输入1′or1=1or‘1’=’1万能密码语句变为:SELECT*FROM......
  • DVWA-SQL Injection(SQL注入)
      SQLInjection,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的。结构,从而达到执行恶意SQL语句的目的。LOW:代码审计:SQLInjectionSourcevulnerabilities/s......
  • PentestLab-web安全SQL注入-EXP6
    我们打开靶机,选择“SQL Injections”选择“Example6”观察页面我们使用工具测试参数为-u"http://192.168.29.148/sqli/example6.php?id=2"--dumpall开始测试没有发现我......
  • 【漏洞复现】PHP-CMS v1.0 SQL注入漏洞(CVE-2022-26613)
    【漏洞复现】PHP-CMSv1.0SQL注入漏洞(CVE-2022-26613)0x01漏洞描述春秋云镜靶场:PHP-CMSv1.0存在SQL注入漏洞,攻击者可获得敏感信息。CVE:PHP-CMSv1.0wasdiscovered......