首页 > 其他分享 >【网络安全渗透测试零基础入门】之cve漏洞实战案例解析(非常详细)

【网络安全渗透测试零基础入门】之cve漏洞实战案例解析(非常详细)

时间:2024-11-25 21:33:16浏览次数:10  
标签:网络安全 入门 8B 断点 漏洞 cve shellcode 函数

一、前言

这是我给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御教程

本文主要讲解漏洞丨实例分析cve2012-0158

喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。

一、漏洞简介

Microsoft Office 2003 sp3是2007年9月18日由微软公司创作的一个办公软件。精简版包含 Word、Excel、PowerPoint、Access、OutLook 五大组件常用功能。Microsoft Office 2003 sp3软件的MSCOMCTL.ocx 模块中275C876D 的函数在读取Word文档数据时,由于读取的长度和验证的长度都在文件中,所以攻击者可以自由构造缓冲区大小,进而触发栈溢出漏洞。

Office 2003 sp3(CVE-2012-0158)漏洞分析报告

二、漏洞成因

在这里插入图片描述

我给大家准备了全套《网络安全入门+进阶学习资源包》包含各种常用工具和各种黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

2.1 触发漏洞

使用Office 2003 sp3 Word软件打开PoC样本文件,触发漏洞

2.2 定位漏洞模块

使用OllyDbg附加调试WINWORD.EXE程序,(设置OD,将忽略异常都恢复)打开poc文件,触发漏洞,效果如下图:

分析溢出点附近堆栈,溢出点下面的堆栈一般是刚刚调用的函数的上一层函数堆栈,溢出后可能已经破坏,溢出点上面的堆栈一般是刚刚执行的函数堆栈,可以发现有两个模块地址,一个是MSCOMCTL 模块中的地址275C8A0A,另一个是msvcp60模块的地址6A626F43, 这两个地址离得很近,不确定是哪个模块触发得漏洞,在两个模块都下断点,重新执行POC文件。

单步F8运行,可以确定是MSCOMCTL 模块中函数MSCOMCTL.275C876D触发了漏洞。

2.3 定位漏洞函数

已经确定是MSCOMCTL.275C876D触发了漏洞,使用 IDA 定位到 MSCOMCTL.ocx模块 中的 275C876D 函数

动态调试分析sub_275C876D函数得参数,参数3要读取的长度是0x8282。

单步F7进入sub_275C876D,找到造成溢出的代码。

使用IDA详细分析该段代码,qmemcpy内存拷贝函数触发溢出漏洞。

2.4 分析漏洞成因

获取 shellcode 长度之后,在文件中搜索定位长度,发现有两个长度,猜测一个是 dwBytes,一个是 v7。

验证猜测,修改一个字节,再次动态调试,可以确定文件中第一个长度是参数的长度,第二个长度是读取的长度,两个长度都在文件中,所以可以随心所欲的溢出了。

OD动态调试,可以发现83所在的位置是参数,84所在的位置是局部变量的值。

三、漏洞验证

这里我借用了一个帖子的POC,在XP SP3中安装office2003:

之后下载POC。拖到虚拟机中,用office打开,弹出个计算机(注意这个POC用一次会损坏,需要备份):

四、漏洞分析

首先用OD附加office,F9运行,然后用office打开POC文件(新的):

查看堆栈:

啥也没看出来,堆栈前后看了一下也没发现形似shellcode的东西,下了几个断点也没有,只能另寻他法!

我给大家准备了全套《网络安全入门+进阶学习资源包》包含各种常用工具和各种黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

俩个办法

(1)把POC拖到010Editor看看有没有特征可以看看
(2)对弹出计算器用到的函数下断点

先用第一个办法:

拖到010Editor中,搜搜有没有9090(nop滑板指令,大部分会有这种指令用来凑数或者保护数据等)之类的,运气不错,找到相似的。

9090909090909090前面有四个字节,像一个库里面的地址7FFA4512,后面一堆看着像shellcode,附加office,看看这个地址是个啥东西:

一个jmp esp,典型的跳板指令,差不多就是这个地方溢出返回值,我们尝试改一下这里,验证一下:

把这个跳板改成11111111试试:

保存,OD附加office,打开poc,EIP果然等于11111111:

这就算撞到了溢出点,我们用原来的POC,在jmp esp这里下硬件断点看看堆栈情况:

断点断在jmpesp,继续运行,到了shellcode的地方:

从这里也能够看出溢出函数末尾是ret 8,esp直接+8,F8运行几步,弹出计算器:

我们试着替换shellcode,改成自己的弹窗shellcode,不改变文件原来大小,替换掉9090909090909090后面的shellcode就行,因为我的shellcode结尾会自动退出程序,所以不需要管原来shellcode长度过长的问题,但是这里卡了一个bug,修改完shellcode之后,并没有出现弹窗,猜想可能是我们自己的shellcode结尾接了原来的字节码,导致识别出错,于是我把我们的弹窗shellcode后面8字节改成90,成功弹窗(这里发现改过得POC不再是一次性的了,可能是因为弹窗shellcode长度较小,不会被破坏):

下面给出我刚才替换的弹窗shellcode:

FC 68 6A 0A 38 1E 68 63 89 D1 4F 68 32 74 91 0C
8B F4 8D 7E F4 33 DB B7 04 2B E3 66 BB 33 32 53
68 75 73 65 72 54 33 D2 64 8B 5A 30 8B 4B 0C 8B
49 1C 8B 09 8B 69 08 AD 3D 6A 0A 38 1E 75 05 95
FF 57 F8 95 60 8B 45 3C 8B 4C 05 78 03 CD 8B 59
20 03 DD 33 FF 47 8B 34 BB 03 F5 99 0F BE 06 3A
C4 74 08 C1 CA 07 03 D0 46 EB F1 3B 54 24 1C 75
E4 8B 59 24 03 DD 66 8B 3C 7B 8B 59 1C 03 DD 03
2C BB 95 5F AB 57 61 3D 6A 0A 38 1E 75 A9 33 DB
53 68 66 66 66 66 68 66 66 66 66 8B C4 53 50 50
53 FF 57 FC 53 FF 57 F8

这是替换shellcode结尾部分:

这是一次简单的替换,接下来我们继续分析这个漏洞的前因后果,我们使用改过的的弹窗POC,我们在jmp esp处下断点:

在这里断点断在jmp esp处,我们在栈的前面发现调用了一个MSCOMTL模块的函数,我们调到对应的地址上面,记录这个地址275C8A0A,并下断点:

接着重新运行,断在了断点处:

然后F8单步调试,发现这个函数结束后,弹窗弹出,说明这个函数就是关键函数,而结尾也如我们之前所想,是ret 8:

我给大家准备了全套《网络安全入门+进阶学习资源包》包含各种常用工具和各种黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

然后就是着重分析这个函数,重新调试,断在这个函数头部(push ebp是函数头):

通过执行完下面这个函数我们发现,返回值被修改,我们shellcode拷贝进去,也即是说这个拷贝函数是关键函数:

接着分析这个函数,下断点,重新运行,断在关键函数

这里:

然后F7跟进去,分析函数:

通过拷贝参数ECX=8282,这是一个关键点,拷贝之后,返回地址被淹没,因为这个漏洞就是因为拷贝长度都在文本中存着,所以我们试着在POC中搜索8282:

此处有两个8282,我们都修改一下,分别改成1111和2222,再回到这个函数观察:

数据直观表明已经不同,有点缺陷是我们改的姿势不对,数据变成02001111和02022,接下来运行会卡住,所以这里是一个验证代码,俩个数值只能相等,继续把俩处地址改成2222,直接观察关键函数里面拷贝那块的ECX赋值结果:

正如我们的预期,文本中原来2个8282是拷贝字符串长度还有其验证,俩者必须一样,其次会根据这个数值对字符串进行拷贝。下面给一张图解:

头两个红线处是拷贝长度还有其验证数值,第三个红线是一个jmp esp跳板,之后隔八字节就可以放shellcode。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

标签:网络安全,入门,8B,断点,漏洞,cve,shellcode,函数
From: https://blog.csdn.net/A1353192296/article/details/144029665

相关文章

  • 51单片机入门:LED灯控制(01)
    第一篇博客,博客园注册很久却一直没有好好利用,今天把以前的文章都删掉,就当开个好头吧。希望在以后的时间中,自己能够认真、努力、珍惜时间。零基础入门51单片机单片机(MicrocontrollerUnit,MCU)是一种集成电路芯片,它将计算机的CPU、存储器(RAM和ROM)、输入/输出接口(I/O)等集成在一个芯......
  • 递推进阶与入门递归
    一、递推进阶,勇攀高峰昆虫繁殖题目描述科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过X个月产Y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对......
  • Flink 从入门到实战
    Flink中的批和流批处理的特点是有界、持久、大量,非常适合需要访问全部记录才能完成的计算工作,一般用于离线统计。流处理的特点是无界、实时,无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。一个无界流可以分解为多个有界流性能F......
  • 【干货分享】网络安全从业者书单推荐
    推荐几本网络安全从业者必读的书籍一、计算机基础《网络硬件设备完全技术宝典》(第3版)本书共768页,包括交换机、路由器、安全设备、网络设备等重要和常用的网络设备,图文并茂,语言流畅,内容及其丰富。《深入理解计算机网络》本书共647页,是计算机网络领域的康鼎之作,内容十分权威......
  • 第5天:基础入门-APP应用&微信小程序&原生态开发&H5+Vue技术&封装打包&反编译抓包点
    #知识点1、基础入门-APP应用-开发架构安全问题2、基础入门-小程序应用-开发架构安全问题一、APP应用开发架构:1、原生开发安卓一般使用java语言开发,当然现在也有kotlin语言进行开发。如何开发就涉及到具体编程了,这里就不详说了。简单描述就是使用安卓提供的一系列......
  • 第4天:基础入门-Web应用&蜜罐系统&堡垒机运维&API内外接口&第三方拓展结构&部署影响
    #知识点:1、基础入门-Web应用-蜜罐系统2、基础入门-Web应用-堡垒机运维3、基础入门-Web应用-内外API接口4、基础入门-Web应用-第三方拓展架构一、蜜罐:https://hfish.net/测试系统:Ubuntu20.04一键安装:bash<(curl-sS-Lhttps://hfish.net/webinstall.sh)1、有......
  • SpringCloud入门(六)Nacos注册中心(下)
    一、Nacos环境隔离Nacos提供了namespace来实现环境隔离功能。  nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离,例如不同namespace的服务互相不可见。使用NacosNamespace环境隔离步骤:1.在Nacos控制台可以创建n......
  • MybatisPlus入门(十二)Mybatis-Plus 代码生成器
    一、代码生成器代码生成器:代码由定义的模版、读取数据库和开发者自定义部分组成。-模板:MyBatisPlus提供,Mabatis-Plus收集了大量开发者写的标准代码,定义了模版,也可以开发者自定义模版。-数据库相关配置:读取数据库获取信息-开发者自定义配置:手工配置实体对象类:代码如下pa......
  • MybatisPlus入门(十一)MybatisPlus-乐观锁
    一、乐观锁修改操作中的问题;乐观锁,琐是用来解决并发问题的。例如秒杀业务,上了100个秒杀单子,如果到了最后一个,8个人一起买,会出现问题,卖出第0号-1号-2号,小型并发解决方案:乐观锁。二、Mybatis-Plus乐观锁实现步骤Mybatis-Plus乐观锁实现步骤:步骤一......
  • 【C++入门】顺序结构
    1. 程序流程顺序结构意味着程序中的每条语句都是按照它们在源代码中出现的顺序执行的。这就像阅读一本书,从第一页开始,逐页翻阅直到最后一页。在编程中,这意味着计算机按照从上到下的顺序执行指令,直到程序结束。2. 执行过程编译阶段:在程序运行之前,首先需要经过编译器的编译......