IceCMS漏洞复现+分析(首发)
xhys 发表于 河南 漏洞分析 1612浏览 · 2024-04-25 12:32

IceCMS漏洞复现+分析(首发)

IceCMS 是一个基于 Spring Boot+Vue 前后端分离的内容管理系统。

icecms与他相关有十五个cve编号和四个cnvd

环境搭建

​ 首先,我们进行搭建环境,漏洞地址https://github.com/Thecosy/iceCMS ,版本选择最新版本2.0.1因为是前后端分离项目,所以我们要分开配置,在application.yml里面配置mysql账号和密码

这里面我用的是mysql8.0.12版本,在\IceCMS-main\sql\路径下运行你的sql文件

在pom.xml下载所需要的依赖

后端配置完成,我们去配置前端,前端是vue框架,还是挺好配置的

在\IceCMS-main\IceWk-vues路径下打开cmd

安装依赖:npm install

如果大家npm没有换源:npm install --legacy-peer-deps --registry=https://registry.npm.taobao.org

下载比较慢,下载完成输入npm run dev

出现这个就是成功,然后打开后端,启动

出现这个就是顺利成功,我们就可以开始测试漏洞了

首先测试CVE-2023-6466,

漏洞复现

第一处漏洞CVE-2023-6466

url:http://localhost:9528/planet

原本在广场这个地方,在1.0的地方就出现过存储型xss漏洞,开发人员已经对其进行修复,可是修复不是那么彻底,里面存在存储型xss漏洞

我们插入payload

<object data="data:text/html,<script>alert(5)</script>"></object>

我们换个浏览器访问

存储型xss漏洞成功

第二处漏洞:CVE-2023-42188(CSRF)

漏洞payload是

'''
<html>
  <body>

  <script>history.pushState('', '', '/')</script>

    <form action="http://localhost:9528/square/DelectSquareById/264">
      <input type="submit" value="Submit request" />
    </form>

  </body>
</html>
'''

伪造网址被管理员打开,点击提交请求后,ID为264的用户被删除了,危害还是很大 的

第三处漏洞:CVE-2023-6757(接口未授权)

/adplanet/PlanetUser

访问该页面并抓包,发现 api:/square/GetAllSquareUser ,用于获取用户信息,包括用户名、密码、邮箱地址等敏感信息!

我们把这个数据包放入文本模糊模块中,删除他的JWT token,然后发送数据包,我们可以发现我们仍然可以获取到用户信息!

为了进一步验证,我们换了浏览器,访问这个界面,发现仍然可以获得很多用户信息!

第四处漏洞:CVE-2023-6758

漏洞url:ip:port/squareComment/ChangeSquareById/{user id}/{content}

后台/adplanet/PlanetCommentList页面下有用户内容管理功能!

我们进入这个页面,获取数据包,找到/squareComment/ChangeSquareById/{user id}/{content},用于获取修改后的用户内容!修改成功返回1

我们将此包放入文本模糊模块中,删除其 JWT 令牌,然后发送该包以将用户内容更改为 hello。成功返回1

返回浏览器刷新页面,内容成功修改为hello

第五处漏洞:CVE-2023-6760(水平越权)

url:http://localhost:9528/userinfo/index

我们先创建两个账户 一测试1,一测试2 点击更新抓包

然后登录测试1重复以上操作

发现用户可以通过userId直接识别对方身份所以构建将刚才测试2中的userId替换为334,并修改了email、性别、密码

发现成功后台数据和前端显示已修改

这是前端页面

第六处漏洞:CVE-2023-6761(垂直越权)

url:http://localhost:9528/userinfo/index

我们先创建一个账户测试1、点击更新并抓包

然后我们抓取管理员的包,我们知道userId是3

然后回到我们之前测试用户的包,将userId改为3,并更改名称和密码发送包。成功

发现成功查看数据库后管理员账号已更改

登录账号发现已被修改 这是前端页面

第七处漏洞:CVE-2023-6762(越权修改)

url:http://localhost:8181/article/DelectArticleById/{Article ID}

我们首先创建两篇文章一测一,一测二,并记录两篇文章id 1000002190 1000002189

删除文章并抓包

注销管理员账号,登录普通用户账号,抓包获取普通用户的token

管理员用户token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwicm9sZSI6ImFkbWluIiwic3ViIjoiMyIsImV4cCI6MTcwMzg2MTEzMywianRpIjoiMDY4OGEzNzktYm Q5Ni00ODdjLTg1YjktMGNmNWFmYzY0NDc0In0.YMUSh3Qyz8Lrfk1HLltMUXpYEwykzytorJRr4L3OiE4

普通用户token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwicm9sZSI6ImFkbWluIiwic3ViIjoiMzc2IiwiZXhwIjoxNzAzODYyNDkxLCJqdGkiOiIxYjQ3NT JiMS04N2U1LTRlYTMtYTNlYi1kZjc5YjE0Njk5OWIifQ.hINA6EHjO47E0F1gfGLZT8CwIedr_Qrwg97SL575WXQ

将管理员token替换为普通token 并且修改我们需要删除那个文章ID 然后成功 证明超出权限

自己测试还没有被提交的漏洞(一)

思路和之前的cve挖掘的思路差不多

url:http://localhost:8181/squareComment/ChangeSquareById/{user id}/{content}

我们通过查看流量发现::http://localhost:8181/squareComment/ChangeSquareById/{user id}/{content} 这个请求包可以查看用户信息

我们把这个数据包放入文本模糊模块中,删除他的JWT token,然后发送数据包,我们可以发现我们仍然可以获取到用户信息!

为了进一步验证,我们换了浏览器,访问这个界面,发现仍然可以获得很多用户信息!

自己测试还没有被提交的漏洞(二)

URL: http://localhost:8181/square/DelectSquareById/{user id}/{content}

我们先删除评论再捕获数据包,发现删除评论依赖于 ID 和 JWT 的双重认证,并且 ID 是可控的,

我们可以遍历和删除所有评论。如果我们删除 jwt 的身份认证,我们会发现删除成功

普通用户无需任何授权即可通过遍历ID删除网站上的所有评论

0 条评论
某人
表情
可输入 255