专栏首页漫流砂LDAP 注入攻击

LDAP 注入攻击

LDAP

LightweightDirectory Access Protocol

轻量级目录访问协议

目录大家都熟悉,是一个分级结构的存储区,其中保存着各种信息

而LADP 协议就是一个用来进行搜索行为的轻量级协议(相比于DAP)

说到存储和搜索,那么我们应该可以想到关系型数据库和SQL语句,LDAP 和 SQL语句是同一个作用,只不过是语法有些不一样而已

端口

tcp/udp 389 3268

利用方法

1. 如果在我们已知目标的账号和密码,而目标没有开放smb服务的时候,如果开放了LDAP,我们就可以直接连接这个服务,从而获取一定的信息

2. LDAP注入

讲述LDAP注入之前还是要先了解一下关于LDAP的查询相关的知识吧

可以类比着SQL语句来将,和SQL语句一样都是通过过滤器指定内容来进行筛选查询

1. 简单匹配查询

最常见的一种,就是要查询指定的那个

(username=admin)

2. 析取查询

就是我们经常说的 ”或”

(|(username=admin)(username=root))

3. 合取查询

就是我们经常说的 “与”

(&(username=guest)(password=admin888))

看到这里应该大家已经知道注入是如何产生的了,我们自行闭合边界或者构造其他语句

LDAP是不允许类似 and 1=1 这种语句存在的,全都是以括号那种格式的过滤器存在,LDAP中支持 * 通配符

我们来模拟一下注入吧

例一:

假如需要我们输入的是用户名和密码,对应的过滤器名字分别为username和password

输入 admin /pass,则语句为

(&(username=admin)(password=pass))

之后进行验证

如果我们输入 admin))(&(username=admin / pass

此时语句就会变为

(&(username= admin))(&(username=admin)(password=pass))

成功绕过限制

例二

通过学校官网查询自己的成绩,只输入学号,院系已经被规定好了,是computer

我们输入学号 1801

那么语句为 (&(stunum=1801)(department=computer))

此时如果我们只输入 * ,那就变成了 (&(stunum=*)(department=computer))

此时就查询到了计算机学院的所有学生的成绩,不过我们并不满意于此,我们还要查询其他学院的

输入 *)(department=*))(&stunum=1801

这时候语句就变成了

(&(stunum=*)(department=*))(&stunum=1801)(department=computer))

成功查询出所有院系的所有的学生的成绩

这个例子中有一个理想化的地方,就是我们提前知道department 这个字段,然而通常情况下我们是不知道的。

此时第一想法应该就是使用注释截断,不过LDAP似乎并没有注释符号

我们可以输入 *))%00

眼熟吧!没错,就是00截断,原来的语句会变成

(&(stunum=*))%00)(department=computer))

解析之后是

(&(stunum=*))null)(department=computer))

null 会把剩下的变为无效,使其认为到这已经结束了


检测方法

LDAP不会像SQL和数据库那样报出错误,所以只能通过结果和状态码来进行判断

1. 在搜索出输入 * ,看看是不是返回一堆结果

2. 输入很多的右括号 ) 看看是否出错

3. 强行在搜索过滤器中掺一脚

我们如果改变了过滤器,那么返回的结果也会有变化

此处就需要用到一个 cn 属性,所有的LDAP都支持这个属性,我们可以这样输入

)(cn=*

*))(|(cn=*

*))%00


以上便是针对LDAP的攻击姿势。

本文分享自微信公众号 - 漫流砂(yidalidemao)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 线下CTF小贴士

    CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEF...

    意大利的猫
  • mknod ​| Linux 后门系列

    perl 和 Python 在做反弹shell基本差不多,Python 那一节有点讲的太多了,大家可以对比一下参数,照着Python的思路移到 perl 上,我...

    意大利的猫
  • 信息收集&寻找真实IP | 小技巧

    寻找CDN背后的真实IP相关的技术很早以前已经写过了,具体可以看文末往期文章。在其中,我认为最有效的还是FOFA搜寻网站标题,寻找真实IP,我们以 知乎 为例

    意大利的猫
  • 单一职责原则(Single Responsibility Principle,SRP)

    不要存在多于一个导致类变更的原因。该原则备受争议,争议之处在于对职责的定义,什么是类的职责?怎么划分类的职责?

    JavaEdge
  • 设计模式 ☞ 七大设计原则之单一职责原则

      就一个类而言,应该仅有一个引起它变化的原因。应该只有一个职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类...

    Demo_Null
  • All-IP Camera演进

    本次演讲来自AIMS NAB NY 2020,演讲者为Grass Valley公司的strategic account manager:Robert Erick...

    用户1324186
  • 还记得当年的百度贴吧吗? 今天, 有人写了一个去中心化的...

    今天科技圈最大的新闻莫过于百度李彦宏被“浇水”一事了,微博、微信、今日头条可谓是炸开了锅,但想想要是10年前,讨论最火的地方可能不是这些 app,无疑是百度贴吧...

    区块链大本营
  • Android滤镜--Alpha值滤镜处理之MaskFilter

    aruba
  • OOP编程七大原则

    OCP(Open-Closed Principle),开放封闭原则:软件实体应该扩展开放、修改封闭。 实现:合理划分构件,一种可变性不应当散落在代码的很多角落里...

    sunsky
  • 算法识别团伙犯罪引发巨大争议,研发者:我只是个工程师

    大数据文摘

扫码关注云+社区

领取腾讯云代金券

,,