公司网站建设怎么计费,成都私人网站建设,手机网站免费做推广,淘客网站佣金建设漏洞概要
Joomla 在海外使用较多#xff0c;是一套使用 PHP 和 MySQL 开发的开源、跨平台的内容管理系统(CMS)。 Joomla 4.0.0 至 4.2.7 版本中的 ApiRouter.php#parseApiRoute 在处理用户的 Get 请求时未对请求参数有效过滤#xff0c;导致攻击者可向 Joomla 服务端点发送包…漏洞概要
Joomla 在海外使用较多是一套使用 PHP 和 MySQL 开发的开源、跨平台的内容管理系统(CMS)。 Joomla 4.0.0 至 4.2.7 版本中的 ApiRouter.php#parseApiRoute 在处理用户的 Get 请求时未对请求参数有效过滤导致攻击者可向 Joomla 服务端点发送包含 publictrue 参数的请求(如/api/index.php/v1/config/application?publictruekeyvalue) 进行未授权访问。
修复方案在4.2.8版本中对漏洞进行了修复建议用户将Joomla升级至 4.2.8 及以上版本漏洞链接 https://www.oscs1024.com/hd/MPS-2023-1918
以下内容来自公众号《安全日记》 Erikten 对该漏洞的分析
0x00 环境搭建
直接去 Github 上下载即可 https://github.com/joomla/joomla-cms/releases/tag/4.2.80x01 漏洞分析
这个漏洞的本质就是一个变量覆盖导致的越权我们可以去diff一下看看官方是怎么修复这个变量覆盖漏洞的
https://github.com/joomla/joomla-cms/commit/5897df8ee39056fbd37624eeeeff1b81e24d84ef#diff-865580463b5f16d45dc41be7d57bf9f2ab7dd875215c2ad0471247f63b9e1b4c array_key_exists()的作用就是判断数组中是否包含指定的键名如果存在public这个键为true接着通过unset()直接销毁这个变量。到这里聪明的你指定知道大概是怎么事儿了就是覆盖了public这个变量导致的越权
我们直接在第一处红框哪里打断点这里为了方便复现漏洞先注释掉补丁访问
/api/index.php/v1/config/application?publictruekeyvalue可以看到$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/?sfv832dc 情报订阅 https://www.oscs1024.com/cm/?sfv832dc 漏洞库https://www.oscs1024.com/hl/?sfv832dc