應用軟件格式滲透 利用word去滲透(MS10-087)

用到的靶機為: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;建立安全…