用到的靶机为:WinXP

漏洞原理:

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

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

触发组件Microsoft WordRTFRich 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 SP3Windows Server 2003Vista7

Office版本Office 2003 SP32007 SP22010MacOffice 2004-2011

2. 实际攻击案例

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

此漏洞传播木马。

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

四、防御与修复措施

1. 官方补丁分析

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

构栈缓冲区分配策略。

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

CanonicalizePathName )的指令修改。

2. 临时缓解方案

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

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

启用防护机制:强制启用DEPData 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.我们在目录下找到该文件,并且放到靶机上运行会直接打开计算器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89000.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89000.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89000.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解密AWS VPC路由表:显式关联与隐式关联,谁决定了网络出口?

大家好&#xff0c;今天我们来聊一个在 AWS 云计算世界里既基础又关键的话题&#xff1a;VPC 路由表。 很多刚接触 AWS 的朋友&#xff0c;在配置网络时可能会遇到这样的困惑&#xff1a;为什么我的 EC2 实例无法访问互联网&#xff1f;为什么某些子网的网络策略和其他子网不一…

LeetCode题解---<203.移除链表元素>

文章目录题目代码及注释关键点题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,…

【JavaScript高级】构造函数、原型链与数据处理

目录构造函数和原型构造函数实例成员和静态成员构造函数的问题构造函数原型 prototype对象原型 \_\_proto\_\_constructor 构造函数构造函数、实例、原型对象三者之间的关系原型链JavaScript 的成员查找机制&#xff08;规则&#xff09;原型对象的this指向扩展内置对象继承cal…

项目进度与预算脱节,如何进行同步管理

项目进度与预算脱节会导致资源浪费、成本超支和项目延期。进行同步管理的方法包括&#xff1a;建立统一的项目进度预算管理体系、实施实时监控与反馈机制、采用项目管理工具辅助同步管理。尤其是实施实时监控与反馈机制&#xff0c;通过持续监测进度与预算的匹配情况&#xff0…

TCP半关闭

理解TCP半关闭&#xff1a;像水管一样的网络连接控制 从全关闭到半关闭&#xff1a;为什么需要这种机制&#xff1f; 想象你和朋友正在通电话讨论一个重要项目&#xff1a; 全关闭&#xff1a;就像突然挂断电话&#xff0c;双方都无法再说话半关闭&#xff1a;你说"我说完…

衡石科技技术手册--仪表盘过滤控件详解

过滤控件说明 过滤控件 的定义 过滤控件用于在仪表盘中过滤图表数据&#xff0c;分为仪表盘内过滤控件和全局过滤控件。 过滤控件结构说明 字段类型描述uidSTRING过滤控件唯一识别 idappIdLONG过滤控件所属的应用 iddataAppIdLONG字段来源是数据包时的数据包 iddashboar…

ASP.NET Core中数据绑定原理实现详解

在ASP.NET Core 中&#xff0c;数据绑定是将 HTTP 请求中的数据&#xff08;如表单、查询字符串、请求体等&#xff09;映射到控制器动作方法参数或模型对象的过程。以下将从原理、核心组件、执行流程及关键机制等方面详细解析其实现逻辑。 一、数据绑定的核心原理与组件 1. 数…

牛客:HJ24 合唱队[华为机考][最长递增子集][动态规划]

学习要点 求最长递增字列求最长递减子列 题目链接 合唱队_牛客题霸_牛客网 题目描述 解法&#xff1a;动归求最长递增子列 #include <iostream> #include <vector> using namespace std;int main() {int n;while (cin >> n) {// 输入的数组int tmp;vect…

C语言的相关基础概念和常用基本数据类型

1.相关概念变量与常量的定义常量&#xff1a;在程序运行中其值不能改变的量。变量&#xff1a;在程序运行中其值可以改变的量。存储器的区分 RAMROM中文名易失存储器不易失存储器特点掉电丢失数据&#xff0c;但存取快掉电不丢失数据&#xff0c;但存取幔标识符标识符只能…

Spring boot整合dubbo+zookeeper

Spring boot整合dubbozookeeper 下文将简述springboot整合dubbozookeeper实现apiproviderconsumer模式&#xff0c;Api用于定于interface,provider和consumer依赖Api,provider实现api接口&#xff0c;consumer调用provider。 spring boot版本&#xff1a;3.5.3 jdk版本&#xf…

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32‘ not found

简介&#xff1a;在复现 VLM-R1 项目并尝试将其中的 GRPO 算法应用到自己的任务时&#xff0c;按照官方文档配置好环境后&#xff0c;运行过程中遇到了一个非常离谱的错误&#xff1a; ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found 这个问题极…

基于Spring Boot的生活用品电商网站的设计与实现

第1章 摘要随着电商行业的飞速发展&#xff0c;生活用品电商网站作为线上购物的一部分&#xff0c;逐渐成为消费者日常购物的重要渠道。为提升网站的管理效率和用户体验&#xff0c;设计并实现了一款基于Spring Boot的生活用品电商网站。该系统通过合理的架构设计&#xff0c;提…

数据结构 单链表(1)

1.概念和结构概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。通过指针链接次序实现的要怎么理解呢?这是一张链表的结构图:与顺序表不同的是&#xff0c;链表里的每节“车厢” (仔细观察这…

Python爬虫实战:研究PyMongo库相关技术

1. 引言 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地获取这些数据并进行存储和分析,成为了数据科学领域的重要研究方向。网络爬虫作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 MongoDB 作为一种流行的 NoSQL 数据库,能够灵…

【世纪龙科技】迈腾B8汽车整车检测与诊断仿真实训系统

在汽车技术日新月异的今天&#xff0c;如何培养既懂理论又精实践的高素质汽修人才&#xff0c;成为职业教育领域亟待突破的课题。江苏世纪龙科技凭借深厚的技术积淀与教育洞察&#xff0c;重磅推出《汽车整车检测与诊断仿真实训系统》&#xff0c;以迈腾B8为原型&#xff0c;通…

.net服务器Kestrel配置Nginx作为反向代理

.NET服务器Kestrel配置Nginx作为反向代理 在ASP.NET Core应用程序的部署过程中&#xff0c;Kestrel是一款轻量级的跨平台Web服务器。不过&#xff0c;直接将其暴露在互联网上并非明智之举。为了增强安全性、提升性能以及提高可伸缩性&#xff0c;我们可以借助Nginx作为反向代理…

MyBatis 在执行 SQL 时找不到名为 name 的参数

MyBatis 在执行 SQL 时找不到名为 name 的参数&#xff0c;因为当接口方法有多个参数时&#xff0c;没有使用 Param(“name”) 明确指定参数名。 其他人说只有springboot1.x的版本才会出现该问题&#xff0c;但是我在使用2.x的版本时也出现了该问题Not found 参数 于是便回根溯…

【Git】git的回退功能

Git 的回退功能非常强大&#xff0c;但因为有多个命令&#xff0c;初学者很容易混淆。我们来系统地梳理一下最核心的几个“回退”指令&#xff1a;git reset、git revert 和 git restore。 我会按照使用场景和安全级别来为你讲解。核心区别&#xff1a;reset vs revert 这是最重…

STM32新建工程

1、新建工程 Keil5中&#xff0c;新建Project&#xff0c;选择STM32Project文件夹&#xff0c;在此文件夹下新建一个文件夹“STM32工程模板”&#xff0c;然后给工程文件起名字“Project”选择器件型号 2、添加启动文件 新建start文件夹复制启动文件&#xff1a;固件库文件夹……

网络传输过程

https传输过程客户端发起HTTPS请求操作&#xff1a;用户在浏览器输入 https://www.example.com 技术细节&#xff1a; 客户端向服务器443端口发起TCP连接 发送Client Hello消息&#xff08;包含支持的TLS版本、加密套件、客户端随机数&#xff09; 安全意义&#xff1a;建立安全…