1. 程式人生 > >漏洞分析之CVE-2018-0802

漏洞分析之CVE-2018-0802

漏洞分析之 CVE-2017-0802

目錄

漏洞分析之 CVE-2017-0802
目錄
☛ 漏洞介紹
☛ 漏洞分析
☛ 1.漏洞分析環境與工具
☛ 2.復現漏洞
☛ 3.分析漏洞
☛ 4.漏洞利用
完成時間:2018-10-24 21:26:54 星期三

☛ 漏洞介紹

  • 在2017年11月14日,微軟釋出11月份安全補丁更新,其中更新了潛伏17年之久的Office遠端程式碼執行漏洞(CVE-2017-11882) “噩夢公式一代“,而在2018年1月,又爆出了office 0day漏洞(CVE-2018-0802),該漏洞的技術原理類似17年修補的漏洞,是由於office公式編輯器元件EQNEDT32.EXE,對字型名的長度沒有進行長度檢驗,導致攻擊者可以通過構造惡意的字型名,執行任意程式碼。

  • 漏洞影響的版本

    • Microsoft Office 2007 Service Pack 3
    • Microsoft Office 2010 Service Pack 2
    • Microsoft Office 2013 Service Pack 1
    • Microsoft Office 2016

☛ 漏洞分析

☛ 1.漏洞分析環境與工具

作業系統:Window 7 專業版 (32 位)
軟體:office 2007 sp3
工具:Ollydbg,IDA Pro

☛ 2.復現漏洞

1.搭建漏洞環境(安裝 office2007 sp3:完整安裝),執行漏洞 poc
2.復現漏洞效果


當執行文件時,會彈出系統計算器,依此為突破口進行分析

☛ 3.分析漏洞

1.定位漏洞函式,及漏洞觸發時的操作,由於會彈出計算器,可以在建立程序CreateProcessACreateProcessWWinExec處下斷點

  • 程式會在WinExecAPI處斷下,可以看到傳入的引數中有對cmd的操作,並且是執行計算器的操作
  • 根據棧回溯找到一個0x011017C3,可認為這個地址所在的函式地址應該就是造成溢位的函式或溢位函式所在的函式
  • 重新執行分析,斷下之後跟蹤分析,發現覆蓋堆疊的程式碼就是這個函式;調式函式內部,可找到覆蓋程式碼操作的是0x1101E5E處的指令;在進行拷貝時,發生棧溢位;拷貝內容的最後兩個位元組\x25\x00
    將覆蓋函式的返回地址

2.通過靜態分析IDA

  • 通過動態除錯找到漏洞函式位置:
  • 函式內部0x421E39的程式碼實現,在沒有檢測字串長度的情況下,直接通過strcpy覆蓋了局部變數,將返回地址覆蓋,造成溢位

  • 隨後,函式繼續執行,後面的sub_4115A7函式為CVE-2017-11882修補的函式,在補丁條件下會返回非0,從而導致最終該函式會再次遞迴呼叫sub_421774。在第二次呼叫sub_421774的過程中,函式就會正常返回

  • 函式正常返回,就會跳轉到上面修改過的返回地址執行

  • 0x01100025的程式碼指令也為RET

  • 會返回到Shellcode中,有條指令JMP EAX即函式WinExec函式的地址

☛ 4.漏洞利用

1.漏洞利用步驟

  • 1.定立目標:彈出一個網頁
  • 2.編寫Shellcode:修改樣本中的執行的字串
    改為

2.修改後的效果

完成時間:2018-10-24 21:26:54 星期三



來自為知筆記(Wiz)