应用软件格式渗透 利用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.我们在目录下找到该文件,并且放到靶机上运行会直接打开计算器。

相关推荐
用户962377954487 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机10 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机10 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544811 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star12 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544815 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行5 天前
网络安全总结
安全·web安全
red1giant_star5 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透5 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全