Fuzzing in Word溢出分析和利用

工业控制系统C语言漏洞挖掘实战:从原理到利用的完全指南 缓冲区溢出、整数溢出等内存安全漏洞是C语言程序中的经典问题,其原理源于对内存的直接操作和缺乏边界检查。这些漏洞在通用IT系统中可能导致程序崩溃或权限提升,而在工业控制领域,其技术价值与风险被急剧放大。工控系统(ICS)的核心控制器、RTU等设备因实时性、资源受限等要求,广泛采用C语言开发,使得上述漏洞广泛存在于运行数十年、难以更新的关键基础设施中。应用场景涵盖能源、制造、水务等行业的可编程逻辑控制器(PLC)和分布式控制系统(DCS),一旦被利用,可能直接导致物理设备损坏或生产中断。本文聚焦于工控C语言漏洞 阅读详情
Fuzzing in Word溢出分析和利用
2008-1-14   大 | 中 | 小

       从03年到07年,Office连续曝出了一系列的漏洞,也就是从那时起,人们逐渐将目光从远程服务溢出转向了客户端程序的溢出,现在milw0rm上平均每公布的10个溢出的POC代码有8个都是客户端程序的溢出,其中甚至不乏杀毒软件这样的“安全产品”。Word作为MicrosoftOffice系列产品中的主打产品,其安全性成了众多安全研究者关注的焦点,从一开始的宏病毒发展到现在的溢出、对象指针漏洞,其危害性越来越大,许多企业的机密信息的泄露源也许就是员工收到的一封Email中夹带的附件。微软现在发布的安全公告也是越来越简洁明了了,例如对本文所要探究的MS06-027,微软对其的描述只有以下寥寥几句:

        Microsoft 安全公告 MS06-027
        Microsoft Word 中的漏洞可能允许远程执行代码 (917336)
        Microsoft Word 格式错误的对象指针漏洞 - CVE-2006-2492

        这给漏洞研究者重现漏洞带来了很大的难度,本文就以MS06-027为例,如何利用手头上的一些资料来构造此类漏洞的POC,也给挖掘此类漏洞的研究者提供一些思路上的提示。

        踩点

        单从微软的描述恐怕永远也构造不出样本,所以还是得依靠搜索引擎来获得关于此漏洞的一些信息,在Google中以MS 06027为关键字进行搜索,就能搜出很多条目,但大多数都只是微软公告的盗版,但我在绿盟的网站上还是找到了关于06027的一些资料,虽然很少,但很关键:

        2006-06-13 Microsoft Word畸形对象指针内存破坏漏洞(MS06-027)
        NSFOUCS ID: 8842

        综述:       

        Microsoft Word打开Word文件时在处理smarttags对象指针存在漏洞,远程攻击者可能利用此漏洞通过诱骗用户打开恶意DOC文件在用户机器上执行任意指令。

        危害:

        远程攻击者可能利用此漏洞通过诱骗用户打开恶意DOC文件在用户机器上执行任意指令。

        从这个公告中可以知道触发这个漏洞的关键就是smarttags,那么究竟什么是smarttags呢?在MSDN上我搜索到了如下信息,如图1:


 javascript:DrawImage(this);>
        图1

       为了照顾E文不好的兄弟,我就献丑翻译一下,大意就是说Word能智能识别文档中的一些人名例如(Outlook中的联系人)或者地名,然后自动弹出一个标签,可以方便用户给对方发电子邮件或者作一些处理。第一步就是要构造出一个包含Smarttags的Word文档,新建一个空白的Word文档,然后输入:John Smith,然后回车,JohnSmith下面就会出现紫色的虚线,这个时候保存出来的文档就包含了Smarttags,如果没有出现,可以点击工具菜单中的自动更正选项,里面有个智能标记标签,复选所有人名有关的就可以了,Word默认就会将Smarttags保存在Word文档里面,如图2:

javascript:DrawImage(this);>
图2

        到此,POC的构造已经完成了20%,从现有的信息我们仅仅知道Word在处理Smarttags对象上存在问题,但究竟是什么问题我们一无所知,但基本可以肯定的不是简单的栈溢出。这时,本文的主题fuzzing就开始发挥作用了。

        Fuzz       

       何为fuzz?根据笔者肤浅的理解就是一种黑盒测试的方法,通过给应用程序提交畸形的参数来观察应用程序的反应。一些协议fuzzer相对来说容易实现一点,对于文件格式来说,不是所有的格式都适合去fuzz,而且在技巧上也更为讲究,填充什么东西,每次填充多少字节,从什么地方开始,都是很值得研究的东西。Word是一种复合的二进制文档,其文档格式是比较适合fuzz的。在这之前,需要对Word文档格式有一个宏观的了解,一个Word文档是由一个头,和无数个Sector组成的,OpenOffice上有一个专门介绍复合文档格式的资料,有兴趣的读者可以看一下。Word里面对象有两种要么是Storage,要么是Stream,前者就相当于文件夹,后者就相当于文件,可能这样比较容易理解一些。WordDocument流是以一个FIB(FiIe InformationBlock)开头的,记录了Word文档里面保存的对象。一开始,我是这样考虑的,既然是Smarttags对象畸形指针漏洞,那就应该fuzz保存在1Table流中的Smarttags对象,下面是我fuzzing代码,写的比较粗糙,

        for ( DWORD offset = 0x2ab0 ; offset < 0x3400 ; offset+=4)
        {
        //从0x2ab0开始fuzz,步进4字节
        //将文件内容拷贝到ccl中,ccl是申请的一片内存空间
        memcpy(ccl,content,filesize);

        //每次修改4字节
        for( int x =0 ; x<4 ;x++)
        ccl[offset+x]=0xEE;

        //写出修改后的文件
        memset(name,0,20);
        sprintf(name,"%d.doc",count);
        hccl = CreateFile(name,GENERIC_WRITE,0, NULL,CREATE_ALWAYS,0,NULL);
        WriteFile(hccl, (LPCVOID)ccl,filesize,&dwWritten,NULL);
        CloseHandle(hccl);

        count++;
        }

        第一次fuzz生成了103个doc,一个个打开看看,反正不是太多,-_-!当打开到103个的时候,Word终于崩溃了,如图3:


javascript:DrawImage(this);>
图3

       可惜是个内存违规访问,基本是UnExploitable那一类的。看来再往下fuzz也不是明智的选择,只能扩大fuzz的范围了,事实证明了我后来的猜想是正确的。下面fuzz的过程我就不再赘述了,直接给出答案:应该fuzzWordDocument这个流,从0x632开始的四个字节改成0xEE后,Word就会崩溃,如图4和5

javascript:DrawImage(this);>


javascript:DrawImage(this);>
图5

        尝试利用

       呵呵,颇有点“千里之堤,溃于蚁穴”的味道,如此庞大的一个应用程序居然修改了4个字节之后就崩溃了。301AC0F9处的CALL DWORDPTRDS:[ECX+14]的内存违规访问导致了Word的崩溃,假如我们可以控制ECX寄存器的话,那不就可以执行我们的Shellcode了吗?!这儿从OD中看似乎ECX寄存器是不可控制的,是一个随机数,为此我也郁闷了很久,后来使用Softice调试以后才发现ecx是可控的。Ecx是通过eax寻址的,看看Softice下eax指向的是0x125AA8,D eax一下,看看eax指向的内容,如图6:

javascript:DrawImage(this);>
图6

       可以发现这时候0x125AA8周围的内容都是来自Word文档的内容,大家可以对比图7中Word文档的内容,0x125AA8此时是0x00000000,肯定会引起崩溃,怎样去控制Ecx寄存器呢,可以在0x125AA8处填充0x125AA8这个地址,0x125AA8+0x14= 0x125ABC在CALL DWORD PTRDS:[ECX+14]之后EIP就跳到了0x125ABC所指向的地址,而此时堆栈中的内容是我们可以控制的,如图7

javascript:DrawImage(this);>
图7

        在填充了四个0x125AA8之后,EIP跳回了00125AA8,由于00125AA8是Nop-Like指令,所以顺利跳入了我们的Shellcode,如图8:


javascript:DrawImage(this);>
图8

        总结

       考虑到这类漏洞的危害性,利用程序就不公布了,有兴趣的读者可以在样本的基础上自行修改,我想也不是什么难事。可以给大家一些思路上的提示,由于WordDocument流中不可能放入大的Shellcode,也许会破坏Word文档的结构,所以只能采取Egg-Hunt的方法,就是小Shellcode找大Shellcode,复杂的功能可以放在大Shellcode中实现。看到WinWord.exe的CPU占用率变成了100%,心中的一块巨石也算落地了,对MS06-027的调试前后经历了一个多星期,主要介绍了在没有POC的情况下如何利用的一些已公开的漏洞的方法和心得,并给了相关实例,希望对感兴趣的朋友能起到抛砖引玉的作用。我的博客http://www.gyzy.org以后会陆续放出一些微软漏洞的Poc代码,感兴趣的读者可以关注一下。

        文章也写的比较仓促,错误疏漏在所难免,敬请广大读者指正,有任何问题来我的博客留言:http://www.gyzy.org(文中所涉及的程序码,请到黑防官方网站下载,详细地址请看公共论坛置顶帖)

   作者: gyzy.  
Fuzz的原理与实现 模糊测试(fuzz testing)是一种自动化的软件测试技术,通常用于识别程序中的潜在漏洞。其概念最早由威斯康辛大学的巴顿·米勒于1989年提出。AFL是一种fuzz方法,目前广泛使用在模糊测试中。本篇博客介绍了使用模糊测试的目的,以及AFL实现模糊测试的原理,并依据案例具体实现AFL。 阅读详情

相关推荐

红队视角下的Windows客户端漏洞挖掘:从攻击面分析到武器化实战

在网络安全领域,漏洞挖掘是识别和利用软件缺陷的核心技术。其原理在于通过分析软件的攻击面,寻找程序在处理外部输入时可能出现的逻辑错误或内存安全问题。这项技术的价值在于,它不仅是安全研究的基础,更是渗透测试和红队评估中实现初始访问和权限提升的关键手段。在应用场景上,尤其在企业内网渗透中,针对Office、PDF阅读器、即时通讯软件等广泛使用的客户端应用进行漏洞挖掘,往往能绕过传统边界防御,有效打开攻击突破口。本文聚焦于红队实战,系统阐述了如何从攻击面枚举、Fuzzing测试、静态审计到漏洞利用链构建的全流程,并

weixin_33672109的博客 447

对微软开源的模糊测试平台OneFuzz的看法

上周微软开源了一款叫OneFuzz的模糊测试平台,主要是由开发团队驱动的可持续模糊测试平台,通过开发与集成项目对应的Fuzzer工具,在CI构建中持续Fuzz,自动化分析跟踪崩溃,告警通...

漏洞战争 2067

BinAbsInspector快速上手:二进制漏洞静态分析实战指南

静态程序分析是一种在不实际执行程序的情况下,通过分析源代码或二进制代码来理解程序行为、发现潜在缺陷的技术。其核心原理包括抽象解释和符号执行,前者通过近似计算来推断程序状态,后者则通过符号化变量探索执行路径。这项技术的核心价值在于能够实现全路径覆盖,理论上能发现更多潜在的安全漏洞,尤其适用于缺乏源代码的第三方库或闭源软件的安全评估。在应用场景上,它广泛应用于软件安全审计、漏洞挖掘、恶意代码分析等领域。本文聚焦于BinAbsInspector这一针对二进制文件的静态分析框架,它通过内置的漏洞检测模型,降低了使用

weixin_33910759的博客 413

从工具使用者到开发者:网络安全渗透测试工具开发与漏洞挖掘核心技术解析

在网络安全领域,渗透测试是评估系统防御有效性的关键手段。其核心原理在于模拟攻击者行为,通过主动探测和分析来发现潜在的安全弱点。随着网络环境日益复杂,通用自动化扫描工具在应对定制化业务逻辑和新型防御机制时往往力不从心,这凸显了掌握定制化工具开发技术的工程价值。从概念上讲,工具开发不仅提升了测试的针对性和效率,更是实现深度漏洞挖掘的基础。具体到技术实现,现代渗透测试工具通常采用分层架构,涵盖数据采集、核心引擎、插件扩展和交互报告等模块。在漏洞挖掘方面,模糊测试(Fuzzing)作为自动化挖掘的利器,通过覆盖率引

weixin_34393428的博客 451

从被动防御到主动诱捕:0Day漏洞逆向分析与高交互蜜罐实战

在网络安全领域,漏洞利用与防御是永恒的核心议题。漏洞利用通常指攻击者利用软件缺陷获取未授权访问或执行恶意代码,而主动防御则强调在攻击发生前进行干预。其技术价值在于扭转传统安全防护在未知威胁前的被动局面,通过深度分析攻击原理,实现早期威胁发现与情报收集。这一理念在高级威胁防护、入侵检测和威胁狩猎等应用场景中至关重要。本文聚焦于**0Day漏洞**的逆向分析与利用模拟,并详细阐述了如何构建定制化的**高交互蜜罐**进行主动诱捕,将攻击者的武器转化为防御方的预警系统,为安全团队提供先发制人的能力。

germmy-神一样的开发 772

Modbus TCP身份验证绕过漏洞CVE-2021-22779分析与工控安全实践

Modbus协议作为工业控制系统和物联网领域广泛应用的通信标准,其设计之初并未内置安全机制,这为工业网络安全埋下了隐患。协议的身份验证和加密通常依赖于设备厂商的自定义实现,而实现层面的逻辑缺陷,例如在报文解析过程中对长度字段或状态机处理不当,可能导致严重的身份验证绕过漏洞。这类漏洞的技术价值在于揭示了工业协议在从封闭网络走向开放互联过程中,“实现安全”与“协议安全”之间的巨大鸿沟,其危害可直接导致攻击者无需凭证即可读取敏感数据或篡改控制指令。在应用场景上,此类漏洞广泛存在于PLC、RTU等关键工业控制器中,

weixin_33985679的博客 1249

深度剖析Windows OLE零点击RCE漏洞CVE-2025-21298:原理、利用与防御

OLE(对象链接与嵌入)是Windows系统中实现应用程序间数据共享与复合文档技术的核心机制,其基于COM组件模型运行,通过结构化存储和CLSID标识实现跨进程对象调用。这一设计在带来强大功能性的同时,也因其复杂的对象生命周期和序列化过程,引入了潜在的安全风险,历史上曾多次出现可导致远程代码执行的高危漏洞。从安全工程实践角度看,理解OLE漏洞的原理对于构建有效的终端防护和威胁检测体系至关重要,尤其是在应对Office文档攻击和供应链安全威胁时。本文以近期备受关注的CVE-2025-21298为例,深入探讨此

weixin_34293246的博客 313

0-day漏洞深度解析:从原理到防御的网络安全实战指南

在网络安全领域,漏洞是攻击者利用软件缺陷进行入侵的关键入口。其核心原理在于攻击者利用软件中未知或未修复的安全弱点,通过精心构造的恶意代码获取系统控制权或窃取数据。理解漏洞生命周期和利用机制,对于构建有效的安全防御体系具有重要技术价值。在实际应用场景中,无论是企业级服务器还是广泛使用的客户端软件,都可能面临此类威胁。本文聚焦于0-day漏洞,探讨其隐秘性和高危害性,并系统介绍如何通过纵深防御策略,结合终端检测与响应(EDR)和威胁情报,来应对这类高级威胁,提升整体安全水位。

weixin_30896825的博客 429

Yakit Web Fuzzer深度优化:从性能瓶颈到智能模糊测试实战

模糊测试(Fuzzing)作为软件安全测试的核心技术,通过向目标系统注入大量变异、非预期的数据,旨在触发异常行为以发现潜在漏洞。其原理在于模拟攻击者的随机输入,突破程序预设的边界条件,从而暴露代码缺陷。在Web安全领域,这项技术的价值尤为突出,能高效识别SQL注入、XSS、路径遍历等常见Web漏洞,是渗透测试与自动化安全评估的关键环节。随着应用场景从简单的参数测试扩展到复杂的API、协议交互,传统Fuzzer在性能、智能化和工作流集成方面面临挑战。本文聚焦于Yakit Web Fuzzer模块,针对其在高并

weixin_34391445的博客 339

逆向工程实战:从TEA算法原理到魔改变种的识别与破解

加密算法是信息安全与软件逆向工程中的核心基础,其核心目标是通过数学变换保护数据的机密性。TEA(Tiny Encryption Algorithm)作为一种经典的轻量级分组密码,以其简洁的Feistel网络结构和高效的ARX(加法-循环移位-异或)操作而闻名。其技术价值在于平衡了安全性与实现效率,常被用于资源受限的环境,如嵌入式系统和早期软件保护。在逆向分析、恶意软件研究和CTF竞赛等应用场景中,识别加密算法是理解程序行为的关键步骤。然而,开发者常通过魔改TEA来增加分析难度,例如修改其核心的delta常数

WGH100817的博客 435

基于Fuzzing的MSWord漏洞检测

基于Fuzzing的MSWord漏洞检测<br>word漏洞检测的<br> 在知网空间上需要付费下载的。。

OP-TEE中RSA堆下越界写漏洞原理分析与防御实践

可信执行环境(TEE)基于ARM TrustZone在硬件层面隔离安全世界与普通世界,OP-TEE作为主流开源实现,其安全边界依赖于内存管理的严谨性。RSA等公钥运算涉及大数模幂,需要动态分配临时缓冲区,长度换算或指针偏移稍有不慎便会引发堆下越界写(heap underwrite)——数据被写入缓冲区起始地址之前,从而破坏安全世界内部堆布局。这一漏洞模式并非RSA算法缺陷,而是实现层面的内存边界管理失效。理解其原理对于TEE安全开发至关重要,开发者可借助QEMU模拟环境复现崩溃,利用ASAN定位根因,并通过

weixin_33785108的博客 325

Image Sensor常见分辨率下HTS,VTS设置

image sensor,HTS,VTS

propor的专栏 4974

客户端渗透实战:从漏洞利用到内网突破的攻防解析

在网络安全领域,漏洞利用是攻击者突破防御体系的核心技术手段之一。其基本原理是通过利用软件或系统中的设计缺陷、编码错误或配置不当,使攻击者能够执行非授权操作,例如获取系统权限、窃取敏感数据或破坏服务完整性。从技术价值看,掌握漏洞利用技术不仅有助于理解攻击链的构建,更能为安全防御提供逆向工程视角,从而设计出更有效的检测与防护机制。在实际应用场景中,客户端软件因其部署广泛、用户交互频繁且安全更新滞后,常成为攻击者首选的突破口。通过社会工程学手段投递恶意文件或链接,结合针对客户端软件的内存破坏漏洞、逻辑缺陷或配置弱

djph26741的博客 393

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 738

微信小程序如何转云开发

小程序转云开发

zhangxiaobai___的博客 3914

Nuclei模糊测试深度解析:从暴力枚举到智能攻击的进化之路

Nuclei 3.2.x版本重新定义了Web应用模糊测试的边界,将传统的暴力枚举升级为智能化的参数变异引擎。作为一款基于YAML DSL的快速、可定制化漏洞扫描器,Nuclei通过全球安全社区的协作构建,专为开发者和安全研究人员提供高效的漏洞检测解决方案。本文将深入剖析Nuclei模糊测试引擎的核心架构,揭示其如何通过智能变异算法将误报率降低60%以上。 ## 问题诊断:传统模糊测试为何低效且误

gitblog_00787的博客 812

当Kmer遇到多倍体:复杂基因组Survey分析中的避坑指南

本文针对小麦、棉花等多倍体及高杂合复杂基因组的Survey分析,深入解析了Kmer分布图解读中的常见陷阱。文章重点探讨了如何超越理想二倍体模型,利用Smudgeplot等工具准确判断基因组倍性,并提供了从参数优化、污染判断到结果验证的全流程实战指南,帮助研究者规避错误,获得更准确的基因组大小、杂合度等关键信息。

yhn45678901的博客 1008

Hopsum:利用路由器校验和机制实现网络侧信道计算

在计算机网络通信中,数据包的完整性验证依赖于校验和(Checksum)这一基础机制,它通过二进制反码求和算法检测传输错误。其原理在于发送方计算校验和并填入报文头部,接收方通过重新计算验证数据一致性。这一机制的技术价值在于保障了数据传输的可靠性,是IP、ICMP、TCP、UDP等核心协议的基石。在实际的网络设备如路由器中,当数据包生存时间(TTL)递减导致头部变化时,必须重新计算校验和,这一确定性操作为探索网络协议的底层行为提供了切入点。应用场景包括网络诊断、协议模糊测试和隐蔽信道研究。本文探讨的Hopsum

weixin_30902251的博客 456

以太网硬件核心:MAC、PHY、MII与交换机原理与实战排查

计算机网络通信的基础依赖于一套完整的硬件协议栈。在OSI模型中,数据链路层和物理层是实现设备间可靠、高效数据传输的基石。其核心原理在于将上层数据包封装成帧,并通过特定的介质访问控制与物理信号转换机制进行传输。这一过程的技术价值在于为上层应用提供了透明、稳定的通信信道,是互联网和所有局域网通信的物理承载。在嵌入式系统、网络设备开发及运维等应用场景中,深入理解底层硬件交互至关重要。本文将聚焦于以太网硬件的两大核心组件:负责逻辑成帧与流量控制的MAC控制器,以及负责数模转换与链路协商的PHY芯片。它们通过MII、

dgqvhtlwq472235338的博客 423

Cursor赋能Qt C++:从环境配置到项目构建的AI开发新范式

本文详细介绍了如何利用Cursor工具链提升Qt C++开发效率,从智能环境配置到CMake项目构建的全流程实践。通过AI辅助编程、Qt生态优化及高级调试技巧,开发者可快速完成从传统开发到AI驱动的新范式转换,显著缩短项目搭建时间并提升代码质量。

weixin_30329623的博客 546

SQL注入绕过实战:从WAF检测原理到Tamper脚本编写

SQL注入作为常见的Web安全漏洞,其核心原理是通过构造恶意SQL语句,干扰应用程序与数据库的正常交互逻辑。现代WAF(Web应用防火墙)通过多层检测机制,如正则表达式匹配、协议合规性分析和语义分析,来识别和拦截此类攻击。为了有效进行安全测试,渗透测试人员需要掌握Tamper脚本的编写,这是一种对SQL注入Payload进行变形和混淆的技术,旨在绕过WAF的规则检测。其技术价值在于将通用的攻击载荷“伪装”成正常请求,从而验证漏洞的真实存在性,而非被WAF误报。应用场景主要在于授权渗透测试和安全评估中,用于检

cucanqi9387的博客 317

抑制电磁干扰(EMI)的实用电路技术

抑制电磁干扰(EMI)的实用电路技术 qtFK_EMC_EMI 【导读】本系列文章的第 1 部分至第 4 部分详细介绍了开关电源稳压器引起的传导发射和辐射发射,包括噪声产生机制、测量要求、频率范围、适用的测试限值、传播模式和寄生效应。在第 5 部分中,我将基于这一理论基础介绍抑制电磁干扰 (EMI) 的实用电路技术。 一般来说,电路原理图和印刷电路板 (PCB) 对于实现出色的 EMI 性能至关重要。第 3 部分重点强调通过谨慎的元器件选型和 PCB 布局尽量减小“功率回路”寄生电感的重要性。电源转换

学海无涯的专栏 1192
上一篇: 关于Windows下ShellCode编写的一点思考
下一篇: 关于Windows下ShellCode编写的一点思考
大浪淘沙1
博客等级 码龄19年 42粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值