中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

發布時間:2022-01-18 15:59:04 來源:億速云 閱讀:181 作者:柒染 欄目:網絡管理

這篇文章跟大家分析一下“LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么”。內容詳細易懂,對“LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著小編一起深入學習“LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么”的知識吧。

LDAP NULL bind匿名綁定導致登錄繞過漏洞分析和修復方案

一、背景

1.1LDAP和認證過程

LDAP輕型目錄訪問協議是一個開放的,中立的,工業標準的應用協議,通過IP協議提供訪問控制和維護分布式信息的目錄信息。有優異的讀性能,但寫性能差。

LDAP作為開放的Internet標準,支持跨平臺,在業界中得到廣泛認可和使用,只需要通過簡單的配置就可以實現與服務器的認證交互,可以很便捷的實現LDAP統一認證服務,如我們日常使用的sso。

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

LDAP bind綁定可以理解為一個登陸認證的過程,通常,在根據LDAP進行身份驗證時,判斷是否登陸成功會采取以下三種方法之一:

  1. 使用LDAP用戶的用戶名和密碼綁定到LDAP服務器;

最常見的簡單代碼實現方式,第三方應用也常用;

  1. 在LDAP中檢索用戶的條目,然后將用戶輸入的密碼和檢索到的LDAP記錄中的密碼屬性相比較;

LDAP服務器對于password屬性可讀的情況,較少見;

  1. “兩次綁定”驗證方法

支持匿名綁定的LDAP服務器下,進行初次匿名,第二次提交身份信息進行綁定,也比較常見。

1.2 NULL BIND

或者稱為Anonymous bind,不同于匿名訪問,匿名綁定很多情況下不被認為構成漏洞。匿名綁定指用戶無需身份驗證,即可直接提交空值,以“NULL BIND”的方式連接到該服務器完成綁定,但不能執行訪問/查詢。如果存在匿名訪問漏洞,則還可以執行查詢等操作。

如圖為Windows Server 2016的AD,可以對rootDSE匿名綁定,但不能匿名查詢支持的DN

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

圖1.匿名綁定成功

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

圖2.匿名訪問/查詢不成功LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

圖3.通過驗證可以查詢/訪問

在rfc【反和諧】4513的5.1.2和6.3.1小節,有關于該問題的描述

https://datatracker.ietf.org/doc/rfc【反和諧】4513/?include_text=1

重要部分翻譯如下

5.1.2

LDAP客戶機可以使用簡單綁定方法,通過未經驗證的身份驗證機制來建立匿名授權狀態,方法是發送帶有名稱值(LDAP字符串形式為非零長度的RFC【反和諧】44514的可分辨名稱)的綁定請求,并指定包含零長度密碼值的簡單身份驗證選項

...

打算執行身份驗證的用戶可能會無意中提供空密碼,從而導致執行不佳的客戶端請求未經身份驗證的訪問。客戶端應該禁止向名稱/密碼驗證用戶界面輸入空密碼。此外,默認情況下服務器應失敗未經身份驗證的綁定請求。

...

6.3.1

...

使用簡單Bind操作的結果來做出授權決策的客戶端應主動檢測未經身份驗證的Bind請求(通過驗證提供的密碼是否為空)并做出適當的反應。

...

1.3 服務器的NULL BIND

微軟AD(Windows ActiveDirectories)在默認情況下,不支持針對活動目錄Active Directory的任何LDAP匿名操作,但支持對rootDSE的匿名搜索和綁定,且無法禁用。

Windows server 2003之前的版本需要手動調整,以禁用對活動目錄Active Directory的LDAP匿名操作,包括綁定、搜索和查詢。

微軟官方說明:“https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled

Active Directory存儲了有關對象的信息,能讓管理員和用戶能夠輕松地查找和使用這些信息。

rootDSE是目錄信務器目錄信息樹的根,目的是提供關于directory Server的本身的數據。例如,如果一個客戶端知道目錄服務器正在監聽的主機名和端口,則它應該通過詢問rootDSE來了解directory server本身的信息和數據。
通常包含下面的一些信息
廠商/供應商=Vendor
服務器支持的命名上下文=naming contexts
服務器支持的請求控制=request control
支持的SASL機制
支持的功能
Schema位置等等信息

OpenLDAP在simple配置下,現行版本默認情況下支持匿名綁定,可以手動調整禁用。部分早期版本還支持匿名訪問。“https://openldap.org/doc/admin24/security.html

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

二、案例

2.1 漏洞描述

(1)某IT系統,由管理員自己分配有權限的賬戶,維持一個列表,依據LDAP進行密碼校驗;

(2)登陸時,驗證用戶名是否在服務器賬戶列表內,提交到LDAP驗證,判斷登陸是否成功;

(3)離職用戶(即LDAP中不存在,但是在系統自身用戶列表內)可以使用任意密碼登陸

2.2 漏洞成因分析

分析代碼發現,系統邏輯如下:

  1. 校驗輸入用戶是否是已分配的合法用戶;

  2. 對于合法用戶,在LDAP服務器中查詢用戶DN信息;

  3. 提交DN與passwd密碼,通過與LDAP綁定是否成功,判定登錄狀態。

漏洞成因如下,在第2步時,因為離職員工信息在LDAP中已經刪除,返回DN為空。而上層域控為windows server DC,允許對rootDSE的NULL綁定,因此提交了空DN與任意密碼。php代碼認為ldap_bind執行結果為真,判定登陸成功。

等價于如圖所示的情況,Base不選擇的情況下默認為rootDSE。微軟AD的rootDSE允許匿名綁定。

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

有問題的代碼塊如下,ldap_bind的結果判定為真LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

修改后,增加了判斷ldap_user_dn是否為空的判定,若LDAP中不存在用戶信息,則直接返回錯誤不進行提交。LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

三、復現方法

3.1 NESSUS掃描

Nessus可以不穩定的報出這個漏洞,描述如下,定義為中危的信息泄露

描述中明確,“此插件不能證明存在LDAP匿名訪問漏洞,且LDAP v3要求支持匿名綁定”

https://www.tenable.com/plugins/nessus/10723

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

3.2手工測試

3.2.1 LdapAdmin

輸入host,選擇匿名連接LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

支持的情況LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

不支持的情況LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

3.2.2 SofterraLDAP Browser

使用Softerra LDAP Browser 工具驗證過程如下

1.選擇服務器,并選擇Base DN為RootDSE;

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

2.選擇“Anonymous user”匿名用戶LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

3.選擇完成,發現可以匿名綁定,并加載根目錄信息LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

如果不支持NULL BIND,則無法加載根目錄信息

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

3.2.3 Python腳本

Python代碼,ldapconn.simple_bind_s傳空參數,則會判定綁定成功

import ldap

ldapconn = ldap.initialize('ldap://X.X.X.X:389')

ldapconn.simple_bind_s('', '')

print("helllo")

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

官方python_LDAP庫文檔的說明如下,在who和cred參數,可以接收空值

https://pypi.org/project/python-ldap/LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

LDAP服務端調整

4.1 OPENLDAP

根據官方文檔,需要在slapd.conf中指定“ disallow bind_anon ”來禁用匿名綁定機制。

“https://openldap.org/doc/admin24/security.html”

1.vi  /etc/openldap/slapd.d/cn\=config.ldif

添加:

olcDisallows: bind_anon

olcRequires: authc

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

  1. vi  /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{-1\}frontend.ldif

添加:

olcRequires: authc

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

2.重啟slapd服務

systemctl restart slapd

  1. 驗證,不允許匿名綁定

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

Windows-OpenLDAP直接修改此文件即可

4.2 Windows Server AD僅針對Active Directory

Windows Server 2003之后的版本,默認不允許對Active Directory的匿名綁定

但因功能設計,針對rootDSE匿名綁定無法禁用

可以通過以下方式調整對Active Directory匿名訪問

https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled

  1. 服務器運行AdsiEdit.msc,連接到配置

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

2.選中LDAP條目,選擇【CN=Configuration,CN={GUID}】雙擊【CN=Services】, 雙擊【CN=Windows NT】,在【CN=Directory Service)】右鍵選擇屬性

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

2.將DsHeuristics 屬性值設置為0(0000002表示允許)

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

3.使用任意LDAP工具嘗試連接并Fetch DNs,可以看到對Active Directory的匿名訪問失敗

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

安全編碼實現

使用LDAP的服務器,后端驗證邏輯避免此問題比較簡單,對提交到LDAP的用戶輸入值,進行空值校驗即可。注意在前后端均做控制,并檢查提交參數的邏輯。

此外,使用LDAP認證登陸的應用系統,也需要注意避免LDAP注入類的問題。

如圖示例,為vmware harbor開源平臺的LDAP驗證邏輯

LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么

關于LDAP NULL bind導致登錄繞過漏洞分析和修復方案是什么就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關注一下億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

手机| 惠州市| 崇阳县| 阳泉市| 龙南县| 姜堰市| 驻马店市| 雷波县| 兴安县| 报价| 泉州市| 卫辉市| 高阳县| 九龙县| 奉节县| 肇州县| 闽侯县| 五华县| 文安县| 新邵县| 长寿区| 蓝山县| 澄城县| 新平| 涟水县| 利川市| 嘉黎县| 同德县| 威宁| 辽中县| 石楼县| 纳雍县| 合肥市| 高唐县| 曲阜市| 荔波县| 左云县| 旬阳县| 凌海市| 枞阳县| 密云县|