MS08-052 WMF漏洞分析(图)

所属分类: 网络安全 / 漏洞分析 阅读数: 255
收藏 0 赞 0 分享
------by CuteK
一 背景知识
由文件格式入手,来分析MS08-052漏洞, 并构造了一个可以使没有补丁的程序崩溃的图片,
1 WMF文件结构
--------------------------|
| 文件头 |
|-------------------------|
| 文件记录 |
|-------------------------|
|-------------------------|
| 文件记录 |
|-------------------------|
|-------------------------|
| 文件记录 |
|-------------------------|
windows中文件头结构如下
typedef struct
{
INT16 Left;
INT16 Top;
INT16 Right;
INT16 Bottom;
} PWMFRect16;
typedef struct
{
UINT32 Key; // GDIP_WMF_PLACEABLEKEY
INT16 Hmf; // Metafile HANDLE number (always 0)
PWMFRect16 BoundingBox; // Coordinates in metafile units
INT16 Inch; // Number of metafile units per inch
UINT32 Reserved; // Reserved (always 0)
INT16 Checksum; // Checksum value for previous 10 WORDs
} WmfPlaceableFileHeader;
typedef struct tagMETAHEADER
{
WORD mtType; // 01 磁盘
WORD mtHeaderSize; // 0x0009 头大小9个word
WORD mtVersion;
DWORD mtSize; // 不算WmfPlaceableFileHeader头的文件大小
WORD mtNoObjects;
DWORD mtMaxRecord;
WORD mtNoParameters;
} METAHEADER;

图 1.1 文件头
文件记录由 文件记录大小(4字节) 文件记录类型(2字节) 文件记录体组成,其中0x0538类型是polypolygon类型,正是对这个记录的处理不当导致的溢出, 该记录的结构如下
记录大小
记录类型
polygon个数(假设为x)
第1个polygon的点数(y个) 第2个polygon点数 ....第x个polygon的点数 .
第1个polygon的第1个点 第1个polygon的第2个点....第1个polygon的第y个点
...............
第x个polygon的第1个点 .................................第x个polygon的最后1个点
由图1.2看出该记录的大小为0x73个word长度. 该记录类型是0x0538 该记录中polygon的个数为1 , polygon的点数为0x37, 后面0x37个word长度的数据就是该polygon的点. 想要读取该记录则要先分配空间,但并不是根据0x73来分配的,而是根据polygon的个数,及每个polygon的点数相加来分配空间.

图 1.2 polypolygon记录
二 漏洞部分代码

图2.1 具有漏洞的代码

图2.2 微软修补后的代码
除了判断是否小于0 还有判断是否加过了溢出了
三 WMF文件构造
构造了一个wmf文件polypoygon记录, 用极大的polygon个数和每个polygon的点数都很大, 使其计算达到整数溢出,使用没有补丁的gdiplus的程序查看该文件,就可以直接崩溃, 测试图片连接http://bbs.antiy.cn/viewthread.php?tid=1087&extra=page=1&frombbs=1 无木马. 呵呵

四解决方案
有漏洞的赶快打补丁吧
http://www.antiy.com/cn/download/agdifix.htm
五 总结
图形文件格式是由很多“段”构成的数据流,而每个段由:长度, 类型,参数,数据等结构构成,在程序解析这些文件格式的时候会依据“类型”来确认段,并读取参数” 进行一定的运算,再依据这些参数来处理随后紧跟的“数据”。漏洞的产生原因就是在对参数进行运算的时候相信了文件输入的参数没有进行确认而导致的。除了图形文件格式外excel的biff格式也是一样的由段的头决定后续数据的读取,且有可变数据对象。有输入就有危险.
更多精彩内容其他人还在看

万能密码漏洞以及修复

  万能密码漏洞以及修复   记得几年前要入侵一个企业网站超级简单   一般只需要找到后台 还有后台通常是www.xxx.com/admin/   然后账号 密码都是'or'='or' 就进去   现在好像有几个也可以用 但是已经没那么普及了   如果网站还出现这种“
收藏 0 赞 0 分享

cyask知道系统collect.php页面存在越权漏洞

影响版本: Cyask 程序介绍: Cyask国内较为多人使用的仿百度风格的Ask系统。 漏洞分析: 从Collect.php代码当中可以看到 else   {     /*  
收藏 0 赞 0 分享

恒浪IMS整合系统V4.1 多文件存在SQL注入漏洞

影响版本: HoWave V4.1 ASP 漏洞描述: 在文件inc/ hl_manage.inc中: adminUserId= Request.Cookies("hl_manage")("username")  
收藏 0 赞 0 分享

WINDOWS 7 RC 7100 GDI驱动Win32k.sys内核D.O.S漏洞

感谢:Iceboy发现此问题并提供DUMP 漏洞厂商及产品:Microsoft Windows 7 rc 7100 090421 存在漏洞组件:win32k.sys Timestamp :49ee8dc8 存在漏洞函数:NtUserGetDc/NtUserGetDcEx 漏洞描
收藏 0 赞 0 分享

Gh0st控制端逻辑漏洞

严重程度:高 威胁程度:控制远程主机 错误类型:逻辑错误 利用方式:主机模式   受影响系统 Gh0st3.6之前所有版本 未影响系统 未知 详细描述 Gh0st 发现漏洞一个逻辑漏洞,这些漏洞可以被用户利用,可以从被控端向控制端发送任意文件到任意位置。 测试
收藏 0 赞 0 分享

微软IIS6漏洞:服务器敏感信息易被窃

近日,安全专家对使用微软Internet信息服务IIS 6的管理员发出警告,声称Web服务器很容易受到攻击并暴露出密码保护的文件和文件夹。   据悉,基于WebDAV协议的部分进程命令中存在这种漏洞。通过给Web地址添加一些Unicode字符,黑客就可以访问这些敏感文件&mda
收藏 0 赞 0 分享

校内网最新 xss Cookies得到密码

From:http://t00ls.net/viewthread.php?tid=1323&highlight= 校内网在发blog时对插入图片过滤不严格,存在xss漏洞. 在发blog时将插入图片URL写为如下代码即可触发:普通浏览复制代码打印代码 javas
收藏 0 赞 0 分享

phpcms2008 注入漏洞

这个是最新有人发现的 该漏洞文件:ask/search_ajax.php 漏洞说明: /ask/search_ajax.php Code: if($q) { $where = " title LIKE '%$q%' AND status = 5&qu
收藏 0 赞 0 分享

PHPWIND & DISCUZ! CSRF漏洞

PHPWIND & DISCUZ! CSRF漏洞影响版本: Discuz! 6.0.0 & 6.1.0 & 7.0.0 PHPWIND 6.0 & 6.3 & 7.0 漏洞描述: PHPWIND & DISCUZ!存在CSRF漏洞
收藏 0 赞 0 分享

phpwin7.0拿shell的方法

事发一星期前,在入侵一个PHPWIND论坛时的成果,适用于PHPWIND不能上传,而网上盛传的三种拿SEHLL方法都无效,可以一试,应该算是PHPWIND后台的漏洞 准备工具:winsock专家 v0.6 betan1 一只;UE-32.EXE一只;NC.EXE一只,电脑一台(
收藏 0 赞 0 分享
查看更多