1. 程式人生 > >[漏洞分析]對CVE-2018-0802的分析

[漏洞分析]對CVE-2018-0802的分析

對CVE-2018-0802的分析

漏洞簡介

這個漏洞依然出現在微軟工具Equation Editor中的EQNEDT32.exe可執行程式。

漏洞分析環境與工具

漏洞分析環境:Window 7專業版(32位)
帶有漏洞的軟體:office 2003 sp3
工具:OllyDbg、IDAPro

漏洞復現

開啟Office2003,點選選單-插入-物件,找到公式3.0。接著開啟OllyDbg附加程序。F9執行。回到word文件中開啟測試檔案,彈出了一個計算器。
在這裡插入圖片描述

漏洞分析

再次附加程式,在WinExec處下斷點。執行程式。檢視堆疊,找到一處能夠得到正確反彙編的地址,在這個函式所在的函式開始處下斷點。
在這裡插入圖片描述


在此執行程式,觀察堆疊。當程式斷下來的時候F8單步除錯,發現經過好幾次函式返回,才到達WinExec處,找不到緩衝區溢位的位置。這時按ESC鍵單步撤回,找到一個函式,在函式頭下斷點,反覆幾次可以找到緩衝區溢位的函式。
在這裡插入圖片描述
進入函式內部仔細分析,單步除錯,觀察堆疊,可以發現當走完這幾條指令的時候外層函式的返回地址被覆蓋。在外層函式中有個遞迴,會在呼叫自己一次,只不過第二次呼叫的時候,並沒有發生緩衝區溢位。
在這裡插入圖片描述
在這裡插入圖片描述
繼續單步幾次就會到達呼叫WinExec函式的地方。
在這裡插入圖片描述
在這裡插入圖片描述
用IDAPro開啟EQNEDT32.exe,找到相應的函式。F5進行反編譯檢視原始碼。可以看到在使用strcpy的時候並沒有檢查字串的長度,從而導致了緩衝區的溢位。
在這裡插入圖片描述

漏洞成因

在進行字串拷貝的時候沒有考慮到字串的長度,從而導致了緩衝區溢位。

漏洞利用

開啟指定的網頁,在cmd命令中有“explorer 網址”這樣一條命令可以開啟指定的網頁,所以在特定程式中進行修改。
在這裡插入圖片描述
將16進位制複製出來,用010Editor開啟樣本,將16進位制複製到指定的位置。再次開啟樣本就不會彈出計算器。而是我們所指定的網頁。
在這裡插入圖片描述