欧美乱码精品一区二区三区,风流少妇又紧又爽又丰满,被债主在夫面前人妻被强,国产精品视频永久免费观看

?
內(nèi)容中心
按關(guān)鍵字查找
CVE-2019-2444漏洞利用及相關(guān)攻擊鏈介紹
作者:安華金和 發(fā)布時(shí)間:2019-04-10

Oracle 12c及Oracle 18c組件jssu程序存在漏洞,易受符號(hào)鏈接攻擊影響,攻擊者可利用此漏洞獲得服務(wù)器root權(quán)限,此漏洞由安華金和公司安全實(shí)驗(yàn)室發(fā)現(xiàn),CVE編號(hào)為CVE-2019-2444。本文將詳細(xì)說(shuō)明漏洞涉及的技術(shù)細(xì)節(jié),并介紹與此漏洞相關(guān)的攻擊手段。

漏洞點(diǎn)

程序jssu是為Oracle Scheduler提供服務(wù)的組件,保存于Oracle主安裝目錄的bin文件夾下。在使用了credential的情況下,Scheduler會(huì)使用jssu程序來(lái)登錄系統(tǒng)進(jìn)行操作。不過(guò),jssu程序之所以會(huì)受到符號(hào)攻擊影響,原因與其功能關(guān)系不大,而是以下幾個(gè)方面:

首先是jssu程序本身的屬主及權(quán)限。默認(rèn)情況下,程序所屬用戶是root,而用戶組是oinstall,與oralce用戶的用戶組相同。程序權(quán)限為4750,即所屬用戶組可讀可執(zhí)行,且設(shè)置了suid位。

其次,jssu程序運(yùn)行時(shí)會(huì)在工作目錄下生成一個(gè)日志文件,并向其中寫入內(nèi)容。該文件由程序的進(jìn)程ID命名,具有固定的格式,即已知進(jìn)程ID,就可推測(cè)出日志文件的文件名。生成的日志文件,其所屬用戶和用戶組與jssu程序相同,且其權(quán)限可被實(shí)際登錄用戶當(dāng)前設(shè)置的umask控制。

總結(jié)這兩點(diǎn),我們現(xiàn)在擁有一個(gè)以oracle用戶即可執(zhí)行,所屬用戶為root,設(shè)置了suid位,且可向當(dāng)前工作目錄輸出文件的程序。由此,產(chǎn)生了一個(gè)符號(hào)鏈接攻擊思路。

作為攻擊者,我們以oracle用戶登錄,并啟動(dòng)jssu。如果能在jssu寫入日志前,將輸出文件定義成一個(gè)指向我們所需位置的符號(hào)鏈接,由于jssu程序運(yùn)行時(shí)具有root用戶權(quán)限,這樣我們就得了向任意位置寫入文件的能力。且此文件所屬用戶為root,用戶組為oinstall,讀寫權(quán)限可控。也就是說(shuō),得到的文件可以被oracle用戶修改。由此延伸,將符號(hào)鏈接指向/etc/ld.so.preload,文件產(chǎn)生后,我們就可以用oracle用戶修改這個(gè)文件。/etc/ld.so.preload文件可以控制系統(tǒng)中所有進(jìn)程啟動(dòng)時(shí)預(yù)先加載的動(dòng)態(tài)鏈接庫(kù),正常情況下只有root用戶可以修改。而攻擊成功后,oracle用戶就可以修改這個(gè)文件,指定一個(gè)由我們控制的動(dòng)態(tài)鏈接庫(kù)文件,我們就可以通過(guò)這個(gè)動(dòng)態(tài)鏈接庫(kù)拿一個(gè)root用戶的shell,更詳細(xì)的說(shuō)明請(qǐng)見下一節(jié)。

攻擊流程

1.作為準(zhǔn)備,復(fù)制一個(gè)shell程序(/bin/bash)作為備份,在后面步驟中將會(huì)修改這個(gè)備份的權(quán)限,使執(zhí)行者可以拿一個(gè)root用戶權(quán)限的shell。

2.構(gòu)建一個(gè)動(dòng)態(tài)鏈接庫(kù),即“攻擊思路”中提到的將要通過(guò)/etc/ld.so.preload加載到所有進(jìn)程中的動(dòng)態(tài)鏈接庫(kù)。使用我們定義的函數(shù)”覆蓋“默認(rèn)的geteuid函數(shù),新函數(shù)的邏輯非常簡(jiǎn)單,判斷當(dāng)前進(jìn)程的有效用戶是否為root,如果是則修改之前準(zhǔn)備好的shell程序備份的權(quán)限為04777(所有用戶可讀寫,suid位已設(shè)置),修改所屬用戶和用戶組為root。

3.構(gòu)建一個(gè)可執(zhí)行程序,完成調(diào)用jssu和制作符號(hào)鏈接的工作。程序主體首先設(shè)置umask為0000,然后使用fork創(chuàng)建一個(gè)子進(jìn)程。子進(jìn)程啟動(dòng)jssu程序;父進(jìn)程則通過(guò)子進(jìn)程ID,構(gòu)造出jssu將要寫入的日志文件名,提前使用這個(gè)文件名生成一個(gè)指向/etc/ld.so.preload的符號(hào)鏈接。父進(jìn)程等待一段時(shí)間(保證jssu有輸出),殺掉子進(jìn)程。如一切順利,此時(shí)/etc/ld.so.preload已經(jīng)被創(chuàng)建,所屬用戶root,所屬用戶組oinstall,權(quán)限0666,內(nèi)容為jssu的輸出日志。

4.修改/etc/ld.so.preload,將已準(zhǔn)備好的動(dòng)態(tài)鏈接庫(kù)路徑寫入,覆蓋所有jssu的輸出。

5.等待一個(gè)root權(quán)限進(jìn)程調(diào)用geteuid函數(shù),觸發(fā)我們準(zhǔn)備的動(dòng)態(tài)鏈接庫(kù)中的代碼。這一步我們可以直接在命令行運(yùn)行“sudo 2>/dev/null >/dev/null”,這個(gè)程序滿足我們的需求,結(jié)束后動(dòng)態(tài)鏈接庫(kù)中的代碼已經(jīng)被執(zhí)行,我們準(zhǔn)備的shell程序備份的運(yùn)行權(quán)限和所屬用戶已經(jīng)按我們的需求做了修改。此時(shí),任意用戶都可以通過(guò)在命令行運(yùn)行這個(gè)shell備份獲得一個(gè)root權(quán)限的shell。

6.運(yùn)行已經(jīng)修改好的shell程序備份,拿到root權(quán)限shell。

完整的攻擊鏈

總結(jié)CVE-2019-2444漏洞技術(shù)細(xì)節(jié),其實(shí)現(xiàn)的是在本地將oracle用戶權(quán)限提升為root用戶權(quán)限。在現(xiàn)實(shí)環(huán)境中,運(yùn)行Oracle數(shù)據(jù)庫(kù)的服務(wù)器上,oracle用戶也是一個(gè)很高權(quán)限用戶,并不會(huì)輕易泄露,那這個(gè)漏洞利用是不是就沒有價(jià)值了呢?

并非如此,CVE-2019-2444漏洞的利用只是完成了一個(gè)攻擊鏈的最后一步,即拿到root權(quán)限,達(dá)到完全控制。實(shí)際上,在相同版本的Oracle數(shù)據(jù)庫(kù)中還存在著的其他的漏洞,可以與CVE-2019-2444配合,組成一個(gè)完整的攻擊鏈。例如:cve-2018-3004,此漏洞利用可通過(guò)Java反序列化向量繞過(guò)Oracle JVM內(nèi)置的安全機(jī)制,達(dá)到提升用戶權(quán)限的目的。在漏洞細(xì)節(jié)已在互聯(lián)網(wǎng)公布,本文只梳理其關(guān)鍵技術(shù)點(diǎn),具體細(xì)節(jié)可參考以下鏈接:

http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html

關(guān)于CVE-2018-3004

Oracle內(nèi)置了Java虛擬機(jī),用戶可以使用Java語(yǔ)言來(lái)構(gòu)建存儲(chǔ)過(guò)程,但出于安全原因,Oracle JVM會(huì)嚴(yán)格限制低權(quán)限用戶對(duì)于文件系統(tǒng)的使用,例如使用java執(zhí)行本地程序,訪問(wèn)本地文件等。而CVE-2018-3004漏洞,借助Java的XML反序列化方法,繞過(guò)了Oracle JVM的限制,從而可以直接訪問(wèn)數(shù)據(jù)庫(kù)本地文件系統(tǒng) 。

Java的序列化和反序列化的作用是將JVM運(yùn)行時(shí)存在于內(nèi)存中的Object轉(zhuǎn)化成能夠長(zhǎng)期保存的字節(jié)流,在將來(lái)所需時(shí),可以將字節(jié)流重新組裝得到原先的Object。序列化和反序列化可以將Java的Object“持久”化,擺脫JVM生存周期的限制 ,也可以用來(lái)在主機(jī)間進(jìn)行傳輸。XML反序列化就是一種以XML格式來(lái)保存Java Object的標(biāo)準(zhǔn),相關(guān)描述可見如下鏈接:

https://www.oracle.com/technetwork/java/persistence3-139471.html

XML反序列化,可以描述一個(gè)Java Object,以及用來(lái)構(gòu)建Object時(shí)所需要調(diào)用的方法和相關(guān)參數(shù)。在Oracle中,使用XMLDecoder類重新組裝XML序列化后的對(duì)象,而在組裝過(guò)程中所調(diào)用的對(duì)象方法,沒有被Oracle JVM限制權(quán)限。因此,可以使用XML反序列化構(gòu)建一個(gè)FileWriter對(duì)象,并調(diào)用其write方法,就可以實(shí)現(xiàn)文件寫入操作。

文件寫入就是CVE-2018-3004的核心,利用此漏洞,低權(quán)限用戶可以任意寫入、追加或者覆蓋oracle用戶擁有寫入權(quán)限的文件。在ssh服務(wù)已經(jīng)開啟的服務(wù)器上,如果向oracle用戶ssh配置中authorized_key文件中寫入一個(gè)由攻擊者構(gòu)造的公鑰,此時(shí),攻擊者就可以直接ssh登錄服務(wù)器的oracle用戶。

總結(jié)

CVE-2019-2444是一個(gè)使用符號(hào)鏈接攻擊手段,達(dá)到本地提權(quán)效果的漏洞,攻擊者可由oracle用戶權(quán)限提升至root用戶權(quán)限 ;CVE-2018-3004是一個(gè)使用Java反序列化攻擊手段達(dá)到遠(yuǎn)程提權(quán)登錄效果的漏洞,擁有數(shù)據(jù)庫(kù)普通用戶權(quán)限且可遠(yuǎn)程登錄的攻擊者可借由此漏洞ssh遠(yuǎn)程連接數(shù)據(jù)庫(kù)服務(wù)器,并以oracle用戶登錄。兩個(gè)漏洞結(jié)合起來(lái),就可以讓一個(gè)普通的數(shù)據(jù)庫(kù)使用者獲得數(shù)據(jù)庫(kù)所在服務(wù)器的root權(quán)限。

?
类乌齐县| 鸡东县| 孝昌县| 宣汉县| 图片| 桐柏县| 山阳县| 甘泉县| 南雄市| 徐州市| 湾仔区| 从江县| 新干县| 三河市| 德钦县| 昌江| 巴塘县| 永昌县| 瓦房店市| 右玉县| 宜城市| 白沙| 微博| 晋城| 四会市| 花莲县| 讷河市| 安福县| 沐川县| 宜君县| 大竹县| 揭东县| 亳州市| 新巴尔虎右旗| 横峰县| 互助| 罗甸县| 容城县| 隆安县| 湘西| 新泰市|