Web for pentester_writeup之LDAP attacks篇

LDAP attacks(LDAP 攻击)

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。

LDAP目录以树状的层次结构来存储数据。如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌握LDAP目录树这个概念了。

可以把他和数据库类比,LDAP是一个为查询、浏览、搜索而优化的专业分布式数据库,它成树状结构组织数据,就好像Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以LDAP天生是用来查询的。

LDAP的两次绑定认证方法,分为下面五步:

1. 从客户端得到登陆名和密码。注意这里的登陆名和密码一开始并没有被用到。
2. 先匿名绑定到LDAP服务器,如果LDAP服务器没有启用匿名绑定,一般会提供一个默认的用户,用这个用户进行绑定即可。
3. 之前输入的登陆名在这里就有用了,当上一步绑定成功以后,需要执行一个搜索,而filter就是用登陆名来构造形如:`“(|(uid=$login)(mail=$login))”` ,这里的login就是登陆名。搜索执行完毕后,需要对结果进行判断,如果只返回一个entry,这个就是包含了该用户信息的entry,可以得到该entry的DN,后面使用。如果返回不止一个或者没有返回,说明用户名输入有误,应该退出验证并返回错误信息。
4. 如果能进行到这一步,说明用相应的用户,而上一步执行时得到了用户信息所在的entry的DN,这里就需要用这个DN和第一步中得到的password重新绑定LDAP服务器。
5. 执行完上一步,验证的主要过程就结束了,如果能成功绑定,那么就说明验证成功,如果不行,则应该返回密码错误的信息。

Example 1

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808154938164-194241849.png)

根据LDAP的两次绑定认证步骤,我们构造默认参数提交

payload http://192.168.219.136/ldap/example1.php?username=&password=

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808155019475-1343525909.png)

可以看还是显示认证失败,我们全部去掉,测试提交空认证成功,有些LDAP服务器授权空绑定,如果发送的数据为空,LDAP服务器会绑定空连接,php代码会认为这样的认证时正确的。

Payload

http://192.168.219.136/ldap/example1.php

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808155034411-1983254602.png)

Example 2

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808155040086-1187587070.png)

查看授权认证判断的代码

$filter = “(&(cn=”.$_GET['name'].”)(userPassword=”.$pass.”))”;

我们可以构造出一个恒为真的语句

name = hacker)(cn=*))%00 实际上执行 $filter = (&(cn=hacker)(cn=*))

password不管传什么值都会显示被认证,也就是说你现在可以以任何密码登陆

Payload

http://192.168.219.136/ldap/example2.php?name=a*)(cn=*))%00&password=

![](https://img2018.cnblogs.com/blog/1605154/201908/1605154-20190808155128262-1597189744.png)

最新文章

  1. hdu 5543 Pick The Sticks(动态规划)
  2. STC12C5A60S2笔记1(管脚定义)
  3. centos7 安装拼音输入法(转载)
  4. widows下jieba分词的安装
  5. [cb] Unity Editor 添加右键菜单
  6. Client-Side UI Automation Provider - WinForm Sample
  7. 用 Eclipse 开发 Android 应用程序
  8. 王立平--android中的anim(动画)
  9. 《TCP/IP详解》读书笔记
  10. 在VMware上安装ubuntu,并且SecureCRT远程连接
  11. canvas画布标签
  12. 享元模式 FlyWeight 结构型 设计模式(十五)
  13. CSRF 攻击(跨域攻击)
  14. PL\SQL 随学笔记
  15. 深度学习目标检测:RCNN,Fast,Faster,YOLO,SSD比较
  16. rsync定时同步文件
  17. 题目1002:Grading(题目背景基于高考打分的简单判断)
  18. Oracle核心技术之 SQL TRACE
  19. bzoj2154: Crash的数字表格 莫比乌斯反演
  20. js cookie的读写

热门文章

  1. 无法导入要素类到SDE中
  2. Dedecms手机站三种不同建设方法和优劣分析
  3. Tomcat8 结构原理解析
  4. selenium-webdriver中的显式等待与隐式等待
  5. mpvue 签字组件
  6. DOM操作方法、属性
  7. python编程基础之三
  8. SpringCloud系列-整合Hystrix的两种方式
  9. Python3实用编程技巧进阶 ☝☝☝
  10. 最简单的ArcGIS Engine应用程序(下)