问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
【Web实战】浅析CVE-2023-22518
漏洞分析
简单分析下CVE-2023-22518这个高危漏洞,师傅们切记不要再生产环境使用。
漏洞描述 ---- 在Confluence中存在权限验证漏洞,攻击者可以通过发送而已请求来获取服务器权限,造成远程命令执行。 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!注意,测试该漏洞会导致数据不可逆损失,如需测试漏洞请一定要使用测试环境!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 漏洞分析 ---- 既然修复了,老样子diff一下: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-a228b55d15eba29d380bc1388d19e143826dd634.png) 修改很多,不过最引人注目的还是很多class文件都新增了两个注解,看起来就是对权限做了处理: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-53e57449b0989c19ec80d71dc9cef8dfd577adc2.png) 那么就来了解下什么是`websudo`: ```php WebSudo 是 Atlassian Confluence中的一项安全特性。它的目的是确保用户在执行一些敏感操作之前重新验证自己的凭据,以提高系统的安全性。 当一个已登录的用户试图进行一些可能对系统有重大影响的操作,例如更改系统设置、安装插件等,Confluence 会要求该用户重新输入密码来确认他们的身份。这种再次确认身份的机制称为 WebSudo。 因为和sudo很像,所以就叫了websudo。 ``` 看来关键点就在权限上了,再根据长亭的通告,因为confluence滥用了struts的继承关系,所以导致了部分权限绕过,并且漏洞利用会导致数据丢失。 在diff代码的时候看到了如下内容,最开始的思路是直接通过`bootstrap`来把`confluence`的数据库切换到自己的数据库上(当然当时我并不了解confluence的bootstrap是干嘛的),走了弯路,后来想了想这样的话也不会丢失数据无法恢复,应该是一种覆盖的操作才对: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-0adbf40cd6aaf0dcb30b59e44f81b21d8cdfec22.png) 既然说到了权限问题,这里可以简单了解下: <https://struts.apache.org/core-developers/namespace-configuration> ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-a6d0386d75b1e46ffa985ecbeaa78851c4c7b170.png) 实际上`confluence`不光是会去`defualt`来进行检查,而是会去被继承的`namespace`逐层递归到`default`,所以寻找继承了`admin`的`namespace`最后发现`struts.xml`中有这么一段: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-242685c57cff82b703ecc22e2c4a61791cc6b843.png) 说明`json`的命名空间可以进行递归到admin,也就是通告中说的滥用继承关系导致部分权限绕过。 那么接下来就明了了,只需要寻找能够破坏数据的功能就可以了,实在是不想看官方文档,让我们感谢人工智能: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-b5cd406d98fe0a1d26f46dced38c11a67116c4d9.png) 很好,接下来就可以去confluence里面看备份相关的东西了: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-bf6013bdfcd0b64ca6fc9a6c53485cb0f66d90c3.png) 经过了几次创建和还原可以确定这里确实能够还原admin的密码(毕竟是备份)。 直接创建一个备份并且下载下来,然后去搜索restore相关的action,最终在不断地尝试下定位到了一个action: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-0284fa6a1c79b80a23c8d46cda7453e66456c98d.png) 尝试用`json`命名空间去访问这个action,得到了一些有趣的东西(注意这里要用POST进行访问): ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-591286a78690ee3e2640a8d5233b0dbbe5fc8a38.png) 看到下面是我创建的很多备份文件,但是这里其实是有坑的,在直接构造一个文件上传包的时候,对面返回的相应是这样的: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-42cedc8d5fc6ed0711d4c98f799a1fb3304337ab.png) 很奇怪,我明明创建的是`site`的包,为什么说我尝试恢复`space`,又创建了几个无果后,觉得还是要去看看代码,直接搜索提示语: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-608482e6adfda89ec8240fc86cd1fb91992d8a38.png) 然后进入`SetupRestoreAction.class`下个断点,可以看到导致这个问题的原因是`validate()`方法检验了一下`exportScope`是否是`ALL`,但是我们创建的是`SITE`好家伙,这哪有ALL的包啊: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-5d74725c8dd35bad2670a53334c7d29b25c48633.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-482741e178d6b2a8dde2edab7795f1f064fee6e4.png) (其实在这里直接改成ALL应该接可以了) 但是我想找到根本原因,问题只能是出在备份的时候了,发现在confluence的备份中其实只有两个选项: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-b3928953fa7e56b5f9c5ea39934df86591a4a0fd.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-ae04bd54715ef92f1e04c1e1557cb293822fe552.png) 因为这个漏洞太危险了,所以怎么解决这个问题的就不放了,再次提醒千万不要用在生产环境中。 重新构造数据包: ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-147360df44877d52ec0dbf58b24735a40fef0828.png) 可以看到跳转地址和struts.xml写的一样,这里要注意`synchronous=true`的设置,发送完包后等待一小会儿,就会将备份导入,当然原先设置好的管理员账号密码也会被备份中的内容覆盖。 效果如下 ---- ![动画.gif](https://shs3.b.qianxin.com/attack_forum/2023/11/attach-ebf6611e6fbce0f769db55747507b2e3bf8a0cfa.gif) RCE --- 参考历史漏洞即可RCE,老生常谈,不过多说啦。
发表于 2023-11-10 10:00:01
阅读 ( 19996 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
SpringKill
4 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!