標籤:距離 準備 res win cal http 思路 系統版本 指令
準備一台BT5作為入侵機,一台win2003作為靶機,靶機上存在著Oracle資料庫(版本為10.2.0.1.0)TNS服務的漏洞,該漏洞的編號為CVE-2009-1979。
BT5:ip 10.10.10.128win2003:ip 10.10.10.130 下面開始演練:在網上找到了關於這一漏洞的一些介紹,metasploit裡有利用這個漏洞的模組,首先search這個模組:進入目錄去查看一下這個模組的原始碼,找到target, 能看出用了p/p/r的溢出方式,以及不同版本需要不同的返回地址變數Ret。 進入metasploit,選擇好滲透模組和攻擊載荷,配置好參數: 配置好後,執行exploit命令,發現沒有返回shell: 多以執行後依然沒有返回,於是就懷疑係統版本的問題。首先懷疑是返回地址出現的差錯,於是去靶機用OllyDbg載入了ORACLE.EXE進程,從滲透模組的原始碼可以知道,Ret為0x011b0528,對應的是p/p/r,在靶機上定位到該位置, 沒有錯啊,, 沒有思路了,,還是回去翻了翻書,根據書上的思路來吧。。 回去看了看模組原始碼,找到了這幾行,有了線索:資料包用了AUTH_SESSKEY作為名稱標識,這就意味著ORACLE程式中肯定用到了這個標識,回到OllyDBG,查看所有的文本字串, 在文字框中搜尋 AUTH_SESSKEY,找到了三個,分別跟進去看了看,發現都調用了同一個函數,這裡就截一個圖:跟蹤這個函數,來到了這裡: 在60FD99AC下個斷點,然後F9讓程式跑起來,然後再次用BT5的exploit命令攻擊。程式斷在斷點處。然後用Ctrl+F9到返回處01010EBD, 接著又調用了CALL_02610928函數,看了書才知道這是_intel_fast_memcpy函數,F7跟進,可以再棧中看到調用的參數,Address Value Comments0673D040 |0673DA96 目的地址0673D044 |04AB99A4 源地址0673D048 |000001A7 複製長度 接下來看一下SEH:Address Value Comments0673DC40 |0673DE64 Pointer to next SEH record0673DC44 |0261348C SEH handler 計算一下,向目的地址0673DA96複製長度0X1A7位元組的資料,最終覆蓋到0X0673DC3D 沒有覆蓋到SEH起始地址0X0673DC40 。真相大白了,原來是複製的字串不構長!在記憶體部分中找到源地址04AB99A4處的字串,然後尋找開始時找到的返回地址Ret0x011B0528,地址為0x04AB9B42。計算一下位移量:返回地址和源地址之間:0x04AB9B42-0x04AB99A4=0x19E目的地址到SEH Handler之間:0x0673DC44-0x0673DA96=0x1AE故,需要增加0x10的隨機位元組,找到模組中構造溢出字串的原始碼: 修改為 為了覆蓋必須加長字串,所有+0x10。這樣做就加大了棧中payload和跳轉指令位移量,所以也要修改jmp指令跳轉的距離,由於jmp後移0x10,前面字串增加0x10最終增加+0x20,這裡說的略簡單,不懂的讀者可以去百度一下SEH跳轉記憶體攻擊原理,就不在詳細說了,過於繁瑣,而且我也不是很懂。 重新啟動ORACLE服務,在BT5上重新測試,用rexploit命令,結果: 成功。
《metasploit滲透測試魔鬼訓練營》靶機演練之第五章實戰案例Oracle資料庫