CVE-2010-2883_Adobe_cooltype_sing
- 漏洞描述
Adobe Reader的CoolType.dll庫在解析字體文件SING表格中的uniqueName項時存在棧溢出漏洞,用戶打開了特制的PDF文件可能導致執行任意代碼。
- 調試環境
XPSP3 + OD + IDA+Adobe9.2.4
官方文檔對TableEntry結構的定義
typedef sturct_SING
{
char tag[4];//"SING"
ULONG checkSum;//校驗和
ULONG offset;//相對文件偏移
ULONG length;//數據長度
} TableEntry;
ttf_data[0xec, 4] = "SING"
ttf_data[0x11c, sing.length] = sing
在msf中構造pdf的代碼中分析得出。SING數據是在TableEntry的0x11c的位置,SING從真實數據偏移0x10為uniqueName域,從代碼上可以看出strcat是將uniqueName復制到棧空間,直至遇到NULL字符串終止符。
以下為溢出代碼
覆蓋棧中的返回地址
- 漏洞利用原理
Metasploit中針對這一漏洞的攻擊模塊使用了ROP技術來繞過操作系統中針對溢出攻擊的主要保護機制DEP,同時它利用的是Adobe自行加載的dll。所以通用性特別好。再覆蓋了上圖中的返回地址之之後,會跳轉至icucnv36.dll中的地址,利用這個動態庫中若幹的代碼片段來執行ROP。在棧中的返回地址被使用的情況下,程序的執行流程被劫持。
3.1在返回地址處下斷點
第一段ROP代碼
第一段ROP執行之後的棧
第二段ROP
執行之後。ESP指向已經由堆噴射技術部署在堆區的數據。
接下來,程序將以這塊已經部署在堆塊中的數據為棧幀,執行接下來的一連串的ROP代碼。
主要功能有:生成一個iso88591的驅動文件,隨後中間的若幹函數將利用這個文件映射給當前進程一塊可執行的內存區域,最後將堆中的shellcode復制到該區域執行。
《Metasploit滲透測試指南》《0day》
CVE-2010-2883_Adobe_cooltype_sing