Microsoft Office2003(CVE-2012-0158)漏洞分析報告

軟件名稱:Microsoft Office
軟件版本:2003
漏洞模塊:MSCOMCTL.OCX
POC來源:Kail(Linux)Metasploit框架
操作系統:Windows 7\sp1\x86 32位
漏洞編號:CVE

0x01 漏洞原理

關於本漏洞原理,網上有各種分析文章,一般都基於實例樣本來定位漏洞的二進制代碼並分析原理,這裏不作詳細的分析過程,直接給出漏洞成因,後面也有少部分的調試演示。這個漏洞發生在office的一個組件MSCOMCTL.OCX,多個版本office的該模塊都存在這個漏洞,本文的測試環境均以WINDOWS+office2003爲例。MSCOMCTL.OCX這個漏洞模塊是office解析activeX控件用到的一個動態庫,如果一個office文檔中包含activeX這類控件元素的話,比如按鈕、列表、樹形控件等,當文檔通過office打開時MSCOMCTL.OCX就會被自動載入office程序的進程空間被調用來解析和顯示控件。
本漏洞屬於經典緩衝區溢出漏洞裏的棧內存拷貝溢出漏洞,當office解析到一個被構造好的控件(以ListView列表控件爲例),會發生棧內存越界拷貝。以下棧回溯示意圖可以代表本漏洞的發生過程:

0x02 漏洞成因

棧內存拷貝溢出漏洞,控件安全檢查不嚴
綜上可以得出漏洞成因是在讀取數據的時候,讀取的長度和驗證的長度都在文件中,且可以人爲修改,進而出發緩衝區溢出

0x03 利用過程

proc溢出點

eip被覆蓋成41414141
在這裏插入圖片描述

加載模塊

在這裏插入圖片描述

漏洞動態利用

在這裏插入圖片描述在這裏插入圖片描述

ida動態分析

在這裏插入圖片描述

0x04 結果

用010edit寫,第一個是jmp esp地址,4個90是跳板(可能存在少了一個字節),解密shellcode,加密shelloce(要把DE改爲90與7異或==97),edit如圖10所示:
41414141(jmp esp )後面4個nop +shellcode起始位置
運行結果,彈出個MessageBox圖片,結果如圖11所示:

0x05 漏洞原理

要先準備一段加密的shellcode,解密shellcode,都要用vs編寫,用od摳出來,注意加密解密祕鑰要相同,shellcode的大小要一樣,找溢出點通過sublime_text這個工具切一半再精確,sublime_text這個要和虛擬機版本一樣,顏色深度代表裏面輸入的字符串不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章