Oracle中泄露“天機(jī)”的TNS
瀏覽量: 次 發(fā)布日期:2023-10-14 12:07:22
Oracle中泄露“天機(jī)”的TNS
數(shù)據(jù)庫的安全是長期存在的問題。在目前大量的數(shù)據(jù)泄露事件以及漏洞面前,大家看到的大都是SQl注入、越權(quán)操作、緩沖區(qū)溢出等這些具體漏洞。往往卻忽視了造成這些問題的前提,黑客想要入侵?jǐn)?shù)據(jù)庫一定會嘗試獲取數(shù)據(jù)庫ip、端口和數(shù)據(jù)庫版本號。
沒有ip和端口黑客對數(shù)據(jù)庫的攻擊將無從下手,也就無法對數(shù)據(jù)庫發(fā)動真正有效的進(jìn)攻。所以防止數(shù)據(jù)庫ip 、端口和版本號的泄露是防止黑客入侵?jǐn)?shù)據(jù)庫的第一道防線。
數(shù)據(jù)庫版本號的泄露途徑
要想防止黑客盜取數(shù)據(jù)庫版本信息。首先就要弄清黑客是從哪些渠道獲取數(shù)據(jù)庫版本信息的,然后才能提出切實(shí)有效的防御方案。本文僅針對Oracle講解黑客獲取Oracle數(shù)據(jù)庫版本號的方式以及預(yù)防措施。除去社會工程學(xué)從技術(shù)角度出發(fā)TNS(ORTACLE的網(wǎng)絡(luò)核心組件)是泄露數(shù)據(jù)庫版本號的一個(gè)重要功能。
筆者結(jié)合多年的經(jīng)驗(yàn)與實(shí)踐總結(jié)出黑客通過TNS獲取ORACLE數(shù)據(jù)庫版本信息主要有以下三種方式:
1. 身份驗(yàn)證前部分函數(shù)泄露數(shù)據(jù)庫版本
在TNS的通訊包中存在大量的函數(shù)調(diào)用。這些函數(shù)調(diào)用中有一部分函數(shù)會在進(jìn)行身份驗(yàn)證之前被運(yùn)行,其中一部分函數(shù)會導(dǎo)致數(shù)據(jù)庫版本信息外泄。從而使得只要黑客知道數(shù)據(jù)庫ip和端口以及實(shí)例名就可以成功騙去數(shù)據(jù)庫版本信息。其中最有代表的函數(shù)是0x3B TTC函數(shù)。
客戶端接收到服務(wù)器發(fā)送的接收包,服務(wù)器可能會選擇商議附加的網(wǎng)絡(luò)服務(wù),約定客戶端和服務(wù)器采用的身份驗(yàn)證、加密、數(shù)據(jù)完整性和管理等。在ANO商議頭(下面包中的0XDEADBEEF)后面的3個(gè)字節(jié)中可以找到服務(wù)器的數(shù)據(jù)庫版本信息。
圖中紅線所指地方0x0a200100就是數(shù)據(jù)庫版本信息,只觀可以判斷版本為10.2.0.1.0(a在16進(jìn)制里是10)。
2.TNS報(bào)錯(cuò)信息泄露數(shù)據(jù)庫版本
如果TNS接到一個(gè)它無法識別的TNS命令(是格式正確,但內(nèi)容不對),就會會送一個(gè)錯(cuò)誤,在這個(gè)錯(cuò)誤中包含VSNNUM,它保存了一個(gè)十進(jìn)制數(shù)字,把該數(shù)字轉(zhuǎn)成十六進(jìn)制會得到數(shù)據(jù)庫版本號。這種方式比上一種方式需求的信息更少,只需要數(shù)據(jù)庫的IP和端口就可以進(jìn)行數(shù)據(jù)庫版本號的騙取。
例如:C:Documents and Settingslsc>sqlplus scott/tig@192.168.0.60:1521/or(實(shí)例名、密碼全不對,但格式正確。)
服務(wù)器會回答一個(gè)錯(cuò)誤應(yīng)答包如下圖所示:
箭頭所指的方向 VS NNUM=169869568 是ORACLE客戶端的版本號。把這組數(shù)轉(zhuǎn)成16進(jìn)制變成 A200100
3. TNS命令不合理使用泄露數(shù)據(jù)版本
第三種也是最危險(xiǎn)的一種。只需要有IP就能獲取端口號、數(shù)據(jù)庫版本號甚至操作系統(tǒng)版本號。危險(xiǎn)的來源是本來lsnrctl的命令應(yīng)該只在本地執(zhí)行,但oracle為了照顧操作的靈活性,某些版本支持lsnrctl 遠(yuǎn)程使用。僅通過IP信息可以獲取目標(biāo)數(shù)據(jù)庫所有外圍敏感信息。例如我們ping 192.168.0.60發(fā)現(xiàn)可以ping 通。直接設(shè)置監(jiān)聽目標(biāo)ip (set current_listener 192.168.0.60)執(zhí)行命令version
獲取目標(biāo)IP數(shù)據(jù)庫的端口、數(shù)據(jù)庫版本以及操作系統(tǒng)版本。
對比3種獲取數(shù)據(jù)庫版本信息的方法,第三種方法要求最低,收益最高,但缺點(diǎn)是這種方式只支持到Oracle10R2版本。而方法一和方法二,則是任何一個(gè)版本的oracle數(shù)據(jù)庫都存在安全隱患。
防止泄露數(shù)據(jù)庫版本號的方法
知道了黑客采集數(shù)據(jù)庫版本的辦法,我們就可以針對性的進(jìn)行防御。筆者根據(jù)多年經(jīng)驗(yàn)以及攻防測試總結(jié)出以下4點(diǎn)有助于加固TNS的解決法辦法。
1.設(shè)置TNS Listener 口令
默認(rèn)情況下,TNS Listener 沒有設(shè)置口令,任何可以連接到系統(tǒng)的人都可以管理它。設(shè)置Listener口令可以防止對Listener的無授權(quán)管理。為了設(shè)置口令,編輯listener.ora 加入PASSWORDS_LISTENERNAME.按步操作,直到完成整個(gè)加口令過程。
2.開啟 Admin Restrictions
通過開啟Admin Restrictions(管理限制)可防止對Listener的未授權(quán)管理。隨著Admin Restrictions的開啟,一些命令將不能被遠(yuǎn)程調(diào)用。及時(shí)提供Listener口令也不行。為開啟Admin Restrictions,將下面的代碼行添加到Listener.ora文件中。
ADMIN_RESTRICTIONS_listencername=ON
3.開啟TCP有效節(jié)點(diǎn)檢查
TCP有效節(jié)點(diǎn)檢驗(yàn)可以用來允許某些主機(jī)連接到數(shù)據(jù)庫而阻止其他服務(wù)器鏈接。為開啟TCP有效節(jié)點(diǎn)檢驗(yàn),按如下方式編譯代碼:
TCP.VALIDNODE_CHECKING=YES
????TCP.EXCLUDED_NODES=
或者:
TCP.INVITED_NODES=
浦東數(shù)據(jù)恢復(fù)4.網(wǎng)絡(luò)通信量加密
利用Oracle Net Manager實(shí)現(xiàn)對客戶機(jī)和數(shù)據(jù)庫服務(wù)器之間的通訊進(jìn)行加密。注意此處的加密指的是協(xié)議加密,而并非數(shù)據(jù)加密。
常州數(shù)據(jù)恢復(fù). oracle證書,開啟數(shù)據(jù)庫專業(yè)之旅的鑰匙
. oracle歸檔日志設(shè)置,Oracle數(shù)據(jù)庫歸檔日志設(shè)置詳解
. oracle drop表數(shù)據(jù)恢復(fù),Oracle數(shù)據(jù)庫中drop表數(shù)據(jù)恢復(fù)方法詳解
. oracle 刪除數(shù)據(jù)文件,Oracle 數(shù)據(jù)文件刪除指南
. win11家庭版裝Oracle,oracle官方網(wǎng)站
. 萊蕪sas硬盤數(shù)據(jù)恢復(fù)中心,萊蕪sas硬盤數(shù)據(jù)恢復(fù)中心——專業(yè)數(shù)據(jù)恢復(fù)服務(wù)保障
. oracle價(jià)格,全面了解Oracle軟件的授權(quán)與成本
. oracle數(shù)據(jù)庫怎么修復(fù),全面指南
. oracle財(cái)務(wù)軟件,企業(yè)財(cái)務(wù)管理的新時(shí)代利器
. 什么是oracle數(shù)據(jù)庫,什么是Oracle數(shù)據(jù)庫?
. 如何查看oracle錯(cuò)誤日志,Oracle數(shù)據(jù)庫錯(cuò)誤日志查看指南
. oracle數(shù)據(jù)庫執(zhí)行計(jì)劃怎么看,查看與分析技巧
. oracle刪除的數(shù)據(jù)怎么恢復(fù),Oracle數(shù)據(jù)庫中刪除數(shù)據(jù)恢復(fù)指南
. oracle一個(gè)實(shí)例多個(gè)數(shù)據(jù)庫,Oracle數(shù)據(jù)庫實(shí)例與多個(gè)數(shù)據(jù)庫的配置與管理
. ora-01578:oracle 數(shù)據(jù)塊損壞,oracle數(shù)據(jù)塊損壞
. 硬盤數(shù)據(jù)恢復(fù)中心深圳,專業(yè)服務(wù),守護(hù)您的數(shù)據(jù)安全
. oracle恢復(fù)歸檔日志文件,Oracle數(shù)據(jù)庫恢復(fù)歸檔日志文件的方法與技巧
. Oracle database 完全恢復(fù),全面解析與操作指南
. 數(shù)據(jù)庫當(dāng)前時(shí)間怎么表示,數(shù)據(jù)庫中如何表示當(dāng)前時(shí)間