文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

CVE-2023-23752 Joomla未授权访问漏洞分析

2023-09-03 17:47

关注

漏洞概要

Joomla 在海外使用较多,是一套使用 PHP 和 MySQL 开发的开源、跨平台的内容管理系统(CMS)。
Joomla 4.0.0 至 4.2.7 版本中的 ApiRouter.php#parseApiRoute 在处理用户的 Get 请求时未对请求参数有效过滤,导致攻击者可向 Joomla 服务端点发送包含 public=true 参数的请求(如:/api/index.php/v1/config/application?public=true&key=value) 进行未授权访问。

以下内容来自公众号《安全日记》 Erikten 对该漏洞的分析:

0x00 环境搭建

直接去 Github 上下载即可

 https://github.com/joomla/joomla-cms/releases/tag/4.2.8

0x01 漏洞分析

这个漏洞的本质就是一个变量覆盖导致的越权,我们可以去diff一下,看看官方是怎么修复这个变量覆盖漏洞的

`https://github.com/joomla/joomla-cms/commit/5897df8ee39056fbd37624eeeeff1b81e24d84ef#diff-865580463b5f16d45dc41be7d57bf9f2ab7dd875215c2ad0471247f63b9e1b4c` 

[图片]

array_key_exists()的作用就是判断数组中是否包含指定的键名,如果存在public这个键为true,接着通过unset()直接销毁这个变量。到这里聪明的你指定知道大概是怎么事儿了,就是覆盖了public这个变量,导致的越权

我们直接在第一处红框哪里打断点,这里为了方便复现漏洞,先注释掉补丁,访问

/api/index.php/v1/config/application?public=true&key=value

可以看到$query接收了我们请求的参数
[图片]

继续往下跟,会进行一个正则匹配,看看我们的请求方式以及路径是否合法
[图片]

[图片]

我们直接强制跳转到循环体内,可以看到$vars的值是获取的路由的默认值,这里public的值是false
[图片]

这里因为$route下的routeVariables值为空,所以不会进入循环体
[图片]

接着通过$route->getController()获取当前route的controller,里边的值分别对应控制器以及其下的方法名字
[图片]

敲黑板敲黑板,接下来就是真正实现变量覆盖的地方,程序通过array_merge()来将多个变量合并到同一个数组下,可以看到此时$vars下边的public是false的
[图片]

但是经过array_merge()处理,将$query的值进行合并的时候发生了覆盖,可以看一下官方对于array_merge()的解释
[图片]

所以合并后的public变成了true
[图片]

为什么说这里改了public为true就能越权,这是因为libraries/src/Application/ApiApplication.php:304进行了权限校验,如果$route下的public存在或者public的值为false,那么就进行身份校验
[图片]

最终我们就绕过了身份校验,实现了越权
[图片]

在前面分析的时候会有一个遍历routes的操作,那些都是受影响的接口
[图片]

免费情报订阅 & 代码安全检测

墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,核心团队来自百度、华为、乌云等企业,公司为客户提供完整的软件供应链安全管理平台,围绕SBOM提供软件全生命周期的安全管理,平台能力包括软件成分分析、源安全管理、容器镜像检测、漏洞情报预警及商业软件供应链准入评估等多个产品。为客户提供从供应链资产识别管理、风险检测、安全控制、一键修复的完整控制能力。同时产品可以极低成本的和现有开发流程中的各种工具一键打通,包括 IDE、Gitlab、Bitbucket、Jenkins、Harbor、Nexus 等数十种工具无缝集成。

代码安全检测: https://www.murphysec.com/?sf=v832dc
情报订阅: https://www.oscs1024.com/cm/?sf=v832dc
漏洞库:https://www.oscs1024.com/hl/?sf=v832dc

[图片]

来源地址:https://blog.csdn.net/murphysec/article/details/129178727

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯