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、第三方库和组件等,很少有开发人员知道或者了解如何使用和整合它们,而不会引入任何安全漏洞。

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

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

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

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

相关文章
|
7月前
|
安全 NoSQL API
【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞
YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。
486 1
|
7月前
|
Web App开发 JSON 安全
【漏洞复现】Yapi接口管理平台远程代码执行漏洞
Yapi接口管理平台远程代码执行漏洞,攻击者可通过特定Payload对目标实施恶意攻击,获取敏感信息,操控服务器指令。
121 1
|
10月前
|
安全 数据安全/隐私保护
亿邮电子邮件系统远程命令执行漏洞 漏洞复现
亿邮电子邮件系统远程命令执行漏洞 漏洞复现
433 0
|
10月前
|
开发框架 安全 PHP
Thinkphp5 5.0.22/5.1.29 远程代码执行漏洞 漏洞复现
Thinkphp5 5.0.22/5.1.29 远程代码执行漏洞 漏洞复现
527 0
|
10月前
|
开发框架 安全 PHP
ThinkPHP5 5.0.23 远程代码执行漏洞 漏洞复现
ThinkPHP5 5.0.23 远程代码执行漏洞 漏洞复现
835 0
|
开发框架 安全 PHP
ThinkPHP5 5.0.20 远程代码执行漏洞
ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
841 0
ThinkPHP5 5.0.20 远程代码执行漏洞
|
XML 安全 Java
网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现
S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器管理员权限,网站数据被篡改,数据库被盗取都会发生。
126 0
网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现
|
SQL 安全 关系型数据库
ecshop 全系列版本通杀漏洞 远程代码执行sql注入漏洞
ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0、3.6、4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码执行sql注入语句漏洞,导致可以插入sql查询代码以及写入代码到网站服务器里,严重的可以直接获取服务器的管理员权限,甚至有些网站使用的是虚拟主机,可以直接获取网站ftp的权限,该漏洞POC已公开,使用简单,目前很多商城网站都被攻击,危害较大,针对于此我们SINE安全对该ECSHOP漏洞的详情以及如何修复网站的漏洞,及如何部署网站安全等方面进行详细的解读。
460 0
ecshop 全系列版本通杀漏洞 远程代码执行sql注入漏洞
|
存储 缓存 安全
Discuz 网站漏洞修复之远程代码执行漏洞
近期SINE安全在对discuz x3.4进行全面的网站渗透测试的时候,发现discuz多国语言版存在远程代码执行漏洞,该漏洞可导致论坛被直接上传webshell,直接远程获取管理员权限,linux服务器可以直接执行系统命令,危害性较大,关于该discuz漏洞的详情,我们来详细的分析看下。
759 0
Discuz 网站漏洞修复之远程代码执行漏洞