Moodle安全漏洞如何启动远程代码执行?

简介:

Moodle是开源基于PHP的学习管理系统,全球数以万计的大学都在使用它,然而,近日Moodle中发现的漏洞可能让服务器及其数据受到攻击。根据发现该漏洞的研究人员表示,Moodle安全漏洞实际由几个小漏洞组成,它可使攻击者在相关服务器执行PHP代码。那么,这个漏洞执行条件是什么,以及我们应该如何阻止它?

Moodle安全漏洞如何启动远程代码执行?

Michael Cobb:Vaultra公司安全研究人员兼首席执行官Netanel Rubin发现,通过利用一系列小漏洞,他可将它们链接起来在运行Moodle的服务器远程执行代码。

Moodle是一个开源学习管理系统,它存储着大量敏感信息,例如学生成绩、测试和隐私数据,这使其成为黑客的攻击目标。Moodle安全漏洞被跟踪为CVE-2017-2641以及Moodle Tracker问题MDL-88010。

这种攻击几乎可在所有Moodle版本执行,因此管理员应该升级到最新版本3.2.2,以尽快解决该问题。除了更新到最新版本,管理和还应该检查Moodle内任何新管理员、插件或者模板,并在文件系统中搜索任何新文件,以防服务器遭到入侵。

Moodle系统的规模和复杂性导致这些编码和逻辑缺陷,也最终产生这个Moodle安全漏洞;Moodle系统包含数千个文件、数百个组件以及大约200万行PHP代码,由不同开发人员在不同时间编写和更新。

此前,Moodle中添加了一个新函数update_user_preferences来替换update_users函数,它会进行特权检查,因此即使攻击者可通过用户偏好设置来更改设置,也只能以自己的权限更改。

虽然这个新函数消除了更改每个用户属性的可能性,但该代码无法检查哪些偏好设置被更改。前面的函数使用setuserpref.php文件来检查需要更新的偏好设置列在ajax_updatable_user_prefs数组中,该数组定义了可通过Ajax更改的偏好设置,以确保不会更改关键值。

具有讽刺意味的是,为了减少对该用户属性更新功能的任何潜在滥用情况,这个新的特权检查实际上引入了Moodle安全漏洞。开发人员可能认为用户偏好设置不可能被利用来加载全面攻击,因为它们只是影响图形用户界面部分。

然而,缺乏包含让对象注入攻击可更新整个数据库的任何行,例如管理员账户、密码和站点配置。Rubin发现,在代码开发过程中做出的这个假设和其他假设可能被利用来最终执行PHP代码。

逻辑漏洞可能出现在任何具有大型代码库的系统中,特别是在由不断变化的开发团队在长时间开发的系统。

根据《Code Complete》作者Steve McConnell表示,超过512000行代码的软件项目平均每千行代码中有4到100个编码错误。典型的Web应用会使用多种语言,例如Java、HTML、PHP、Python、CSS、第三方库和组件等,很少有开发人员知道或者了解如何使用和整合它们,而不会引入任何安全漏洞。

为了减少开发人引入逻辑漏洞或者省略安全及验证检查,应该要求他们使用约定的注释风格来添加最低级别的代码注释,以及更详细的支持文档。维基百科有完整的注释样式列表。

尽管花时间评论和记录代码会减缓开发速度,但这可确保在未来更改代码的开发人员可完全了解函数的作用、操作方式以及需要对处理的数据进行哪些检查。同样重要的是当函数在接收其他函数传递的数据时,不能认为数据已经经过检查,因为前面的函数可能通过不同的要求或规则对其进行检查。

这方面很好的示例是电话号码,从数据库检索和显示用户电话号码的函数可能会接收+和()符号,但如果该函数将数据传递给实际拨打号码的函数,且在处理前没有移除这些符号,可能会导致该函数失效。


本文作者:邹铮 

来源:51CTO

相关文章
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
278 3
|
6月前
|
SQL 人工智能 自然语言处理
别让你的大模型被忽悠了,聊聊prompt注入攻击
本文探讨了Prompt工程中的隐私与安全问题,重点分析了“奶奶漏洞”及更广泛的Prompt攻击现象,特别是Prompt注入的原理与防御手段。Prompt注入通过构造恶意输入突破模型限制,使LLM执行非预期操作。文章介绍了直接注入和间接注入类型,并提供了多种防御方案,如输入过滤、强化系统指令、接入第三方校验库及多模型协作防御。此外,还讨论了Prompt逆向工程及其正负影响,以及恶意MCP服务投毒的实际案例,如GitHub Copilot漏洞。最后提出了动态权限控制和持续安全监测等解决策略。
[HDCTF2019]Maze(初识逆向)
[HDCTF2019]Maze(初识逆向)
556 1
|
存储
[ACTF新生赛2020]SoulLike 题解
[ACTF新生赛2020]SoulLike 题解
326 0
|
存储 安全 算法
CTF磁盘取证分析方法案例
CTF磁盘取证分析方法案例
505 0
|
Ubuntu 安全 Linux
Linux安装phpstudy
为服务器环境提供极佳配置的解决方案 支持CentOS、Ubuntu、Debian、Fedora、deepin,Web端管理,QQ群及论坛技术支持 一键创建网站、FTP、数据库、SSL;安全管理,计划任务,文件管理,PHP多版本共存及切换;自带LNMP与LAMP
Linux安装phpstudy
|
XML 安全 网络安全
网站安全渗透测试 文件包含注入检测办法
昨天给大家普及到了渗透测试中执行命令漏洞的检测方法,今天抽出时间由我们Sine安全的渗透工程师来讲下遇到文件包含漏洞以及模板注入漏洞的检测方法和防御手段,本文仅参考给有授权渗透测试的正规安全检测的客户,让更多的客户了解到具体测试的内容,是如何进行全面的网站安全测试。
1677 0
|
1天前
|
云安全 人工智能 自然语言处理

热门文章

最新文章