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删除网站上的所有评论