首页
社区
课程
招聘
[原创]WinRAR之CVE-2025-6218漏洞复现与分析
发表于: 2025-9-4 13:13 2504

[原创]WinRAR之CVE-2025-6218漏洞复现与分析

2025-9-4 13:13
2504

在刷B站时看到有人在分享这个漏洞的原因,稍微琢磨了一下,脑袋告诉我:懂了,原来如此。但up主最后只给出了x64dbg中判断字符是否是空格的地方,没有给出定位过程,所以当时就来了兴趣,想自己分析分析。

话不多说,直接复现。
下载7.11版本,安装到默认目录:
图片描述

在桌面新建CVE-2025-6218.bat,内容如下:

注意第3行的..后面有空格。
第3行的命令的意思是:
生成CVE-2025-6218.zip压缩包文件,并将POC.bat添加到进去,同时指明了POC.bat在压缩包里的路径,长这样:
图片描述

执行CVE-2025-6218.bat:
图片描述
会在桌面生成CVE-2025-6218.zip压缩包,右键解压到CVE-2025-6218,即意思是想在桌面生成CVE-2025-6218文件夹,但是结果却把POC.bat写入到了启动目录了:
图片描述
再解压一遍,发生覆盖提示:
图片描述
从给出的提示来看,路径里面的..后面没有空格了,路径也拼接好了,倒退两层就会变成:

之所以会解压到启动目录,是这样的:
右键解压到CVE-2025-6218,目标目录就是:

但是压缩时指定了路径:

所以两者拼接起来就是启动目录了。

从复现结果和覆盖提示能看出WinRAR拼接了路径,消除了空格,但是我不满足于此,想知道是在哪儿用什么方式处理的?是用strcpy还是memcpy、memmove?即我既想知道结果,也想知道过程。而网上的都是复现文章,没有过程分析文章,所以还是自食其力分析一下。

用ProcMon监控WinRAR.exe的文件行为,发现会往启动目录创建POC.bat文件,所以x64dbg拖入WinRAR.exe,对CreateFileW函数下断。(猜也猜得到是创建文件,所以可以不用ProcMon)
先取消CreateFileW断点(因为会频繁断下),运行起来,选中压缩包,进行解压:
图片描述

出现下图覆盖提示界面时,这个时候启用断点,然后确认覆盖,就会断在我们想要的地方:
图片描述

断下后,Ctrl+F9返回到上层,返回个两三次,就会来到下图的地方。全局变量0x00007FF6526F0F08里存放的就是目标路径字符串指针,而且目标字符串是拼接完成状态,而且其中的空格也被消除了:
图片描述

再次解压,但不要进入覆盖提示界面(因为覆盖提示界面弹出时,已经把空格处理了,然后将处理好的路径展示给我们)。这个时候可以看到,全局变量里清0了,也就是说目标字符串指针还未写入:
图片描述
对全局变量地址下硬件写入断点,然后点上图的【确定】按钮,中断后一直点运行,观察内存窗口,某一次就发现有字符串指针写入了,而且空格没有被处理,路径也还没拼接:
图片描述

这个时候一直F8单步,运行到下图时,在读取全局指针变量了,应该要准备读取字符串进行处理了:
图片描述
再继续单步,就会来到一个循环。
这里我跟了一下,循环会执行两轮,两轮后,字符串中的空格才会被处理,录制动图如下,一直按F9,两轮循环后,字符串中的空格被处理了,并且生成了最终的文件路径:
图片描述

所以在第二轮循环快结束时,单步跟踪到这里,是这个call进行字符串处理:
图片描述

那就跟进去看看,一直单步,遇到哪个call处理了路径,就进入。在下图会有一个循环,逐字符判断,关注对空格的判断即可:
图片描述

如果是空格的话,就会调用call 0x00007FF65248A430进行处理:
图片描述

看看里面是怎么处理的:
图片描述
先是得到空格所在索引,通过索引截取到子字符串,地址赋值给RCX(开头是空格字符)。
然后子字符串偏移一个字符,即略过空格,地址赋值给RDX(开头是非空格字符)

继续单步到下图,关注框住的两行代码即可。
第一行:vmovdqu ymm1,yword ptr ds:[rdx+r9-A0],就是从RDX指向的字符串中读取32个字节,赋值给ymm1。
第二行:vmovdqu yword ptr ds:[rcx+r9-A0],ymm1,就是将读取的32个字节写入到RCX指向的地址中。
图片描述
问了下AI,这是一组AVX(高级矢量扩展)指令集,进行数据移动,每次可移动32个字节。
分析到这里其实就清楚了,本质就是RCX指向的字符串,第一个字符是空格,而RDX经过加1处理,就绕过了空格,最后使用AVX指令,从RDX指向的字符串中读取32个字节,往RCX指向的地址进行写入,如此便把空格给消除了。简而言之就是往前移动数据。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 34
支持
分享
最新回复 (17)
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
谢谢分享
2025-10-17 15:42
1
雪    币: 14529
活跃值: (8574)
能力值: ( LV13,RANK:640 )
在线值:
发帖
回帖
粉丝
3
hao
2025-10-21 18:05
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
谢谢分享
2025-11-21 13:51
0
雪    币: 528
活跃值: (1629)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
666666666
2025-11-24 20:10
0
雪    币: 0
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
6
2025-11-30 14:51
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
谢谢分享
2025-12-1 11:25
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666
2025-12-4 14:11
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
666
2025-12-15 10:20
0
雪    币: 801
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
666
2025-12-18 09:13
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
666
5天前
0
雪    币: 963
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
666
1天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
666
1天前
0
雪    币: 16
活跃值: (1158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
666
1天前
0
雪    币: 54
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
66666
17小时前
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
楼主辛苦了,学习了
17小时前
0
雪    币: 2472
活跃值: (2712)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
弹c看
16小时前
0
游客
登录 | 注册 方可回帖
返回