[漏洞樣本分析]CVE-2012-0158
阿新 • • 發佈:2018-11-04
環境:
Windows7專業版32位
Office2003 XP3 完全版
POC來源:
網路樣本
工具:
IDA OD 010Ediotr windbg
漏洞成因以及分析:
棧記憶體拷貝溢位漏洞,控制元件安全檢查不嚴
查詢漏洞觸發點:
如果分析有錯誤,謝謝大家幫我指正
開啟WORD 使用OD 附加WORD 開啟POC
觸發溢位
由於棧溢位會破壞向下的棧空間,如果足夠大,那基本是找不到線索 所以我們往溢位點的棧往上看 找點線索定位溢位點
往上看發現兩個返回地址 先看第一個
可能是棧溢位的函式位置 我們現在這裡下斷試試
然後再開,單步步過,觀察堆疊返回地址是否被破壞
經過觀察我們發現是這個函式執行完後堆疊被破壞
我們進函式裡面觀察一下 有沒有可疑的記憶體拷貝語句
經觀察 極有可能是這句拷貝語句造成的溢位
但是在彙編裡不好觀察,我們搜尋一下最初在棧裡發現那兩個返回地址的名字
找到了這個模組,我們使用IDA觀察一下
通過在OD裡的位置 定位到了IDA裡的函式
進去溢位函式裡面看 發現是這句造成的溢位的函式
而對傳進來的長度引數只有一句簡單的判斷
所以只要使這個區域性變數V7 和傳進來的引數相等就可以了,我們往上觀察傳參的地方
發現是定義的區域性變數 而且要=>8 沒有上限 這樣更是我們shellocde的最佳利用點
我們開啟010Ediotr 使用WinExec 然後使用OD動態除錯 快速定位這兩個區域性變數的位置就是
所以我們在寫shellocde時候也要往後移動八個位元組
執行指令我們就是用跳板指令JMP ESP 接下來我們就要在裡面搜尋這個指令
我們開啟windbg 附加 使用mona外掛搜尋模組
我們選擇一個保護比較少 而且通用性高的模組 大家可以自己判斷 我選擇的是WININET.dll 這個模組
選一個地址作為我們的跳板
完成利用