LDAP未授权访问学习
LDAP未授权访问学习
一、LDAP
介绍
LDAP的全称为Lightweight Directory Access Protocol(轻量级目录访问协议), 基于X.500标准, 支持 TCP/IP。
LDAP目录为数据库,通过LDAP服务器(相当于DBMS)处理查询和更新, 以树状的层次结构来存储数据,相对关系型数据库, LDAP主要是优化数据读取的性能,适用于比较少改变、跨平台的信息。
LDAP属性
| 属性 | 全名 | 描述 |
|---|---|---|
| dn | distinguished name | 唯一标识名,类似于绝对路径,每个对象都有唯一标识名。 例如:uid=tester,ou=People,dc=example,dc=com |
| rdn | relative | 相对标识名,类似于相对路径。 例如:uid=tester |
| uid | user id | 通常指用户登录名。 例如:uid=tester |
| sn | sur name | 通常指一个人的姓氏。 例如:sn: Su |
| giveName | 通常指一个人的名字。 例如:giveName: Aldwin | |
| I | 通常指一个地方的地名。 例如:I: Beijing | |
| objectClass | objectClass是特殊属性,包含数据存储的方式以及相关属性信息。 | |
| dc | domain component | 通常指定一个域名。 例如:dc=example,dc=com |
| ou | organization unit | 通常指定一个组织单元的名称。 例如:ou=people,dc=example,dc=com |
| cn | common name | 通常指一个对象的名称。如果是人,需要使用全名。 |
| c | country | 一个二位的国家代码。 例如:CN、US、HK、JP等。 |
二、LDAP&phpldapadmin搭建
Ubuntu系统搭建LDAP服务及web端管理服务phpldapadmin
参考文章:
https://my.oschina.net/u/2496664/blog/801996
上面文章写的很详细,有些步骤由于可能版本更新而有微小的差异。
比如不用选择数据库;注意编辑配置文件的时候不需要改注释内的东西,改注释外的代码即可。下图为完成界面。

三、LDIF文件
关于LDIF文件:
LDIF 完全独立于在所有特定目录中使用的储存格式,LDIF 通常用于从 LDAP 服务器导出目录信息或将数据导入 LDAP 服务器。
demo
dn: dc=Zh1z3ven,dc=com
objectclass: top
dc: Zh1z3ven
dn: ou=People,dc=Zh1z3ven,dc=com
objectclass: organizationalUnit
ou: People
dn: uid=Zh1z3ven,ou=People,dc=Zh1z3ven,dc=com
uid: Zh1z3ven
objectClass: inetOrgPerson
userPassword: 111111
sn: Zh
cn: Zh1z3ven Zh
四、LDAP未授权漏洞
0x01 产生原因
未对LDAP的访问进行密码验证,导致未授权访问。
这一般是大部分LDAP服务出现此漏洞的主要原因,导致可以使用ldapbrowser直接连接,获取目录内容。
0x02 简述
比如我上面搭建好的环境明明是有密码123456的,但是利用ldapbrowser可以直接读取到目录内容而跳过了web端那种密码验证的方式
注意Anonymous bind那里要勾选上,因为默认的LDAP服务都是开启匿名访问的,但是只能进行read和search操作,不可以删除和修改。


如需指定用户则需要在下图红框内指定cn和相应的password

五、修复建议
0)关于如何禁止LDAP匿名访问:
https://www.cnblogs.com/rusking/p/4936341.html
1)修改ldap的acl,不允许匿名访问。
2)根据业务设置ldap访问白名单或黑名单。
LDAP未授权访问学习的更多相关文章
- 关于docker remote api未授权访问漏洞的学习与研究
漏洞介绍: 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. docker ...
- Memcache未授权访问漏洞利用及修复
Memcached是一套分布式的高速缓存系统.它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的.正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问.本文 ...
- Redis未授权访问漏洞复现及修复方案
首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...
- [Shell]Redis未授权访问反弹shell
原作者:Cream 文章出处: 贝塔安全实验室 0x01 Redis未授权访问反弹shell Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
- Springboot之actuator未授权访问
copy 子杰的哈,懒的写了 0x01 未授权访问可以理解为需要授权才可以访问的页面由于错误的配置等其他原因,导致其他用户可以直接访问,从而引发各种敏感信息泄露. 0x02 Spring Boot ...
- rsync未授权访问漏洞复现
rsync未授权访问漏洞简介 rsync是Linux/Unix下的一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件和目录,默认运行在873端口.由于配置不当,导致任何人可未授权访问r ...
- Redis未授权访问漏洞复现与利用
漏洞简介 Redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会将Redis服务暴露到公网上,如果在没有设置密码认 ...
- mongodb未授权访问漏洞
catalogue . mongodb安装 . 未授权访问漏洞 . 漏洞修复及加固 . 自动化检测点 1. mongodb安装 apt-get install mongodb 0x1: 创建数据库目录 ...
- Redis未授权访问漏洞分析
catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...
随机推荐
- Python调用shell命令常用方法
Python调用shell指令 方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未 ...
- androidstudio创建第一个so文件
前言:之前看安卓软件安全与逆向分析这书,看到ndk开发这节,发现自己连so文件都没编译操作过233,所以就直接上手试试, 感觉挺好玩的,把关键的加密流程都放进so中去实现,这周先写个demo试试,感觉 ...
- leetcode第156场周赛5205
思路分析:先用哈希表统计各个数字的次数,再将每个值放进set集合中,之后如果有重复得,说明比原个数少了,如果都是独一无二的,那么个数是相同的 这波把collection集合,强转成set是真的灵性.想 ...
- ESP32构建系统(CMake版)
ESP32 芯片是一款 2.4 GHz Wi-Fi 和蓝牙双模芯片,内置 1 或 2 个 32 位处理器,运算能力最高可达 600 DMIPS. ESP-IDF 即乐鑫物联网开发框架,可为在 Wind ...
- 单点登录(SSO)实现原理(转)
简介 单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘 ...
- 如果面试官问你 JVM,额外回答逃逸分析技术会让你加分!
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章. 引言 我在面试别人的过程中,JVM 内存模型我几乎必问,虽然有人说问这些就是面试造航母,工作 ...
- 小哈学Python ----XML
XML XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> ...
- C语言:最小公倍数
//求最小公倍数 #include <stdio.h> main() { int m,n,i,k,max,min; scanf("%d,%d",&m,& ...
- python 子类调用 父类的构造函数
class A(object): def __init__(self): self.nameaa = 'aa' def funca(self): print('function a %s' % sel ...
- 团队开发day05
在进行网络间的通信中,需要开启线程来实现网络连接, 但是在activity中无法拿到获取到的数据,数据只能在网络线程中查看 解决:通过Handler在线程之间进行通信,传递获取到的信息 Handler ...