文章总结: 本文复现ReactRouterCVE-2025-61686未授权路径遍历漏洞,根源在于文件存储函数缺少路径校验。攻击者可利用../实现任意文件操作,但受限于是否配置Session加密密钥。文章详述了代码分析与复现过程,提供了读写删接口的代码示例,强调了安全配置的关键性。 综合评分: 88 文章分类: 漏洞分析,漏洞POC,代码审计,WEB安全
漏洞复现 | React Router 未授权路径遍历(CVE-2025-61686)导致任意文件操作漏洞
原创
俺不是鸡哥 俺不是鸡哥
渗透结束-非常安全
2026年1月19日 11:00 北京
前言
这里简单记录一下React Router 未授权路径遍历漏洞 (CVE-2025-61686)复现过程,如有写的不正确的地方欢迎各位师傅指正。
参考
提交人:brophdawg11
CVE编号:CVE-2025-61686
漏洞危害:严重
项目star量:56.1k
项目地址:
https://github.com/remix-run/react-router
参考地址:
https://github.com/remix-run/react-router/security/advisories/GHSA-9583-h5hc-x8cw
流程
位置:
packages/react-router-node/sessions/fileStorage.ts
问题出现在createFileSessionStorage核心工具函数,该函数的作用是创建一个基于本地文件系统来持久化存储用户Session会话数据的管理器
通过查看发现createData、readData、updateData和deleteData内部方法都调用了getFile函数,并在对比新旧代码处,可以看到历史版本中getFile函数无任何校验和拦截处理,在新版本中限制必须是16位的字符
那么就攻击者可以通过传入../来控制要新增、删除、查看和覆盖文件,如下所示为删除方法的内容
跟进上层
位置:
packages/react-router/lib/server-runtime/sessions.ts
里面有getSession、commitSession和destroySession方法,分别用于读取、提交和删除会话所用
跟进commitSession方法调用的cookie.serialize()
位置:
packages/react-router/lib/server-runtime/cookies.ts
查看内容后继续跟到encodeCookieValue方法,这里会判断开发者是否设置secrets密钥
如有设置则会调用sign方法加密
位置:
packages/react-router/lib/server-runtime/crypto.ts
如果开启加密,则不能通过getSession方法的校验,从而篡改session值,漏洞也就不可被利用了。
解密流程:
getSession — cookie.parse — decodeCookieValue — decodeCookieValue — unsign
该漏洞还是有限制的,主要还是看开发宝宝怎么写,感觉可以做成ctf题用来学习也不错。
复现
初始化项目目录
安装有漏洞的@react-router/node依赖,会收到官方风险提示有7个漏洞
查看漏洞详细内容,这里无视风险继续安装
继续安装其他所需依赖
安装完毕后编写项目文件,利用ai简单写3个存在漏洞的接口,首先是写入文件接口传入两个值,通过cookie传入的值到存在漏洞的commitSession函数中来控制文件写入的位置,而body传入内容则是session对象set方法设置文件中的内容
读取文件接口则是cookie传入参数可控,文件内容由session对象的get方法获取,最后给打印出来
删除文件接口也是cookie传入参数可控,进入存在漏洞的destroySession函数导致文件被删除
启动服务,测试一下
请求写入的接口,当写入的文件存在时则会覆盖
请求删除的接口
请求读取的接口
查看写入和删除的效果
最后
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:渗透结束-非常安全 俺不是鸡哥 俺不是鸡哥《漏洞复现 | React Router 未授权路径遍历(CVE-2025-61686)导致任意文件操作漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论