如何進行bee-box LDAP注入的靶場練習
如果說sql注入的本質是拼接字串的話,那麼一切可以注入的本質都是拼接字串,LDAP注入作為注入的一種也不例外,更有趣一點的說它是在拼接圓括號( sql注入也拼接圓括號,但更習慣性的是說它拼接字串)。
在環境配置篇裡面已經很詳細的說了bee-box中ldap環境的配置,靶場練習篇更多的是php與ldap的連接過程,中間使用的特殊函數介紹以及圓括號拼接的一些技巧。
下面先說一下bwapp中ldap靶場的登入過程:
#首先這是一個LDAP的登入介面,URL是http:/ /192.168.3.184/bWAPP/ldap_connect.php,直接看下這個php的檔案都寫了什麼。
php連接LDAP函數詳解
從ldap_connect.php 檔案的133的程式碼開始看,五個變數依序是$message,$login, $ password,$server,$dn。
這五個變數中第一個是麼有啥用的,第二個登入ldap伺服器的用戶名,第三個密碼,第四個伺服器位址,第五個區分名(描述一條完整的LDAP路徑)。
第一個if語句是清空登入LDAP的表單,第二個if語句是判斷這五個變數是不是空值,這都是小事,重點是後面的這個else,從這個else裡面開始看,又有了多個if和else語句,一個個來吧。
首先看第一個if之前的三個函數ldap_connect,ldap_set_option,ldap_bind,依序說明這三個函數的作用。
ldap_connect:用來連接ldap資料庫,格式如下
$server = “localhost”
$LDAPCONN=LDAP_Connect($server)
如果$ LDAPCONN的回傳值為數值型當傳回結果為0時連線失敗,其他值時連線成功。
ldap_set_option($link_identifier ,$option , &$retval):接收三個參數
$link_identifier
ldap_connect()函數傳回的LDAP連線標識符(判斷LDAP是否連線成功)
$option可接收的值如下:
LDAP_OPT_DEREF(int):搜尋的時候如何處理別名,取值範圍如下:LDAP_DEREF_NEVER(0,預設值),LDAP_DEREF_SEARCHING (1), LDAP_DEREF_FINDING(2), LDAP_DEREF_ALWAYS(3)
LDAP_OPT_NETWORK_TIMEOUT(int):網路逾時秒數,LDAP_NO_LIMIT(0,預設值)表示永不逾時。
LDAP_OPT_PROTOCOL_VERSION(int):指定使用的LDAP協定版本,取值範圍如下:LDAP_VERSION2(2,預設值), LDAP_VERSION3 (3)。
LDAP_OPT_REFERRALS(bool):LDAP庫是否會自動追隨LDAP伺服器傳回的引用,取值範圍如下:TRUE(1,預設值), FALSE(0)。
&$retval接受選項值的變數
例如bwapp中的程式碼:
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION, 3);
這句程式碼的意思就是說,如果ldap連線成功了,那麼就指定LDAP使用的協定為版本3。 (此處不必深究,都為套用格式)
ldap_bind($link_identifier,$bind_rdn,$bind_password)
$link_identifier:ldap_connect()函數傳回的LDAP連線標識符(判斷LDAPAP是否連線成功)
$bind_rdn:使用指定的rdn即登入路徑例如cn=admin,dc=bwapp,dc=local
$bind_password:指定登入的密碼。
ldap_search($link_identifier, $dn,$filter):LDAP目錄搜尋函數,成功傳回一個結果集的資源描述符,通常被其他函數以$result_identifier引用,失敗傳回FALSE。
$link_identifier:ldap_connect()函數傳回的LDAP連線標識符(判斷是否連接成功)
$dn:將要被搜尋的目錄的DN
#$filter:搜尋過濾器。例如"(objectClass=*)"表示搜尋所有條目(對於read函數則表示所有屬性)。
bwapp中的原始碼:ldap_search($ds, $dn,$filter),其中$ds=ldap_connect(),
$dn=”DC=bwapp,DC=local”, $filter=(cn=*)(即所有範圍的cn),這三個參數說明ldap_search函數說明查詢的是目前伺服器的所有目錄(相對於bwapp)。
ldap_count_entries($link_identifier,$search):傳回查詢的結果的數量
$link_identifier:dap_connect()函數傳回的LDAP連線識別碼(判斷是否連線成功)
$search:= ldap_search($link_identifier, $dn, $filter)傳回查詢的結果集。
此時函數已經分析的差不多了,讓我們捋一下這個連接檔的大概思路。
從149行至163行,程式碼都是判斷得到的各種值是不是為空,如果為空,拋出提示訊息。
從第165行到198行是判斷登入是否成功的,其中165行到184行是判斷存不存在ldap服務,187行到198行是判斷是否存在區分名(相當於資料庫名稱)。
從200行到236行是判斷是否存在對應的dn,即是否存在對應的ldap路徑,如果不存在,拋出對應的提示訊息,如果存在呼叫ldapi.php,即ldap查詢。在ldapi中得到查詢結果後輸出為表格。
LDAP查詢結果的php檔案介紹
輸出表格的地方在ldapi.php檔案中,接下來看ldapi.php中的程式碼。
直接從第231行開始看,從第231行到第240行都是上文中說過的,綁定LDAP目錄,程式碼如下,不懂的可以看看上文中的LDAP綁定的部分
如果綁定成功LDAP目錄的話,開始進行查詢,查詢的程式碼從242行開始
從接收POST參數user的值到,建立別名($search_field_1, $search_field_2,$search_field_3),規定過濾器($filter)(過濾器就是一個查詢語句,類似sql語句),語法規則如下:
## | ##字元 | 用途 |
---|---|---|
= | 建立一個要求某一欄位必須擁有給定值的過濾器。 | |
* | 代表可以等於 NULL 以外任何值的欄位。 | |
( ) | 分離篩選器,以便其他邏輯運算子發揮作用。 | |
& | 結合濾鏡。對應系列的所有條件都必須為真。 | |
| | 結合濾鏡。對應系列中必須至少有一個條件為真。 | |
! | 排除所有符合篩選條件的物件。 |
以上是如何進行bee-box LDAP注入的靶場練習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

1.LDAP注入LDAP(LightDirectoryAccessPortocol)是基於X.500標準的輕量級目錄存取協議,提供存取目錄資料庫方法的服務和協議,常用於與目錄資料庫組成目錄服務。其中目錄是一個為查詢、瀏覽和搜尋而優化的專業分散式資料庫,它呈現樹狀結構組織數據,類似於Linux/Unix系統中的檔案目錄。公用憑證、安全金鑰、公司的實體設備資訊等修改並不頻繁的資料適合儲存在目錄中。可以將LDAP理解為一種搜尋協議,它類似於SQL,擁有查詢語法,也存在被注入攻擊的風險。 LDAP注入是指客

如果說sql注入的本質是拼接字串的話,那麼一切可以注入的本質都是拼接字串,LDAP注入作為注入的一種也不例外,更有趣一點的說它是在拼接圓括號(sql注入也拼接圓括號,但是更習慣的是說它拼接字串)。在環境配置篇裡面已經很詳細的說了bee-box中ldap環境的配置,靶場練習篇更多的是php與ldap的連接過程,中間使用的特殊函數介紹以及圓括號拼接的一些技巧。以下先說一下bwapp中ldap靶場的登入流程:首先這是一個LDAP的登入介面,URL是http://192.168.3.184/bW

一、綜述依照我的學習過程來說,我必須知道我進行web攻擊的這個模型和漏洞的原理是什麼,現在我就碰到個冷門,最初見到LDAP時是某次在某國企的滲透測試中發現一個冷門(經過授權的),激起了我對它的興趣。 LDAP的概念:全名:輕量級目錄存取協定(LightweightDirectoryAccessProtocolt),特點:協定什麼的就不說了,太深奧,可以把它理解為一種儲存資料的資料庫,它的特殊之處在於它是一種樹狀的資料庫,首先這個資料庫的名字相當於樹根(即DB=dc),然後從樹根到某個葉子節點過程所經過

在使用PHP開發Web應用程式時,我們經常需要使用LDAP身份驗證來保護應用程式的存取。然而,在某些情況下,當我們嘗試使用PHP的LDAP功能來實現身份驗證時,可能會遇到以下錯誤訊息:"PHPFatalerror:Calltoundefinedfunctionldap_bind()"。這種錯誤訊息通常會在應用程式呼叫ldap_bind()函數

LDAP(LightweightDirectoryAccessProtocol)是一種用於存取分散式目錄服務的協定。它可以用於進行使用者身份驗證、授權、帳戶維護和資料儲存等任務。在PHP應用程式中,LDAP可以作為一種強大的認證機制,可以為應用程式提供強大的認證和授權功能。本文將介紹在PHP中使用LDAP進行使用者驗證的方法,具體內容包括:安裝與設定L

隨著網路安全漏洞增多,LDAP注入攻擊已經成為了許多網站面臨的安全隱患。為了保護網站安全,防範LDAP注入攻擊,需要使用一些安全措施。其中,Nginx作為一個高效能的Web伺服器和反向代理伺服器,可以為我們提供很多便利和保護。這篇文章將介紹如何使用Nginx防範LDAP注入攻擊。 LDAP注入攻擊LDAP注入攻擊是一種針對LDAP資料庫的攻擊方式,攻擊者透過在

隨著網路安全問題越來越受到重視,越來越多的程式設計師開始關注並學習如何防止程式碼被攻擊。其中,常見的攻擊方式包括SQL注入、XSS、CSRF等。但是,還有一種常見的攻擊方式被低估了:LDAP注入漏洞。本文將會介紹此攻擊方式的原理與如何使用PHP防範LDAP注入漏洞。 LDAP介紹LDAP(LightweightDirectoryAccessProtocol)

隨著企業規模和業務需求的不斷擴大,使用者群組管理和授權成為了一個必不可少的部分。 LDAP(輕型目錄存取協議)作為一種廣泛應用於企業網路中的目錄服務協議,為實現使用者群組管理和授權提供了一種高效方式。本文將介紹如何使用PHP和LDAP實現使用者群組管理和授權。一、什麼是LDAPLDAP是一種輕型目錄存取協議,廣泛應用於企業網路中的目錄服務協議。 LDAP是基於客戶端/伺服器
