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

相关文章
|
安全 关系型数据库 MySQL
windows提权总结
windows提权总结
466 1
|
监控 Unix 数据安全/隐私保护
告别中央服务器:Syncthing实现点对点文件同步
告别中央服务器:Syncthing实现点对点文件同步
488 3
|
Python
【Python】已解决ModuleNotFoundError: No module named ‘requests’
【Python】已解决ModuleNotFoundError: No module named ‘requests’
6760 2
|
Web App开发 安全 .NET
FCKeditor上传漏洞总结
0x01 FCKeditor简介 FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。
3443 1
|
测试技术 API Python
Python3 新一代Http请求库Httpx使用(详情版)(下)
Python3 新一代Http请求库Httpx使用(详情版)
1469 0
|
运维 安全 Linux
【运维知识进阶篇】手把手教你搭建OpenVPN(保姆级教程)(一)
【运维知识进阶篇】手把手教你搭建OpenVPN(保姆级教程)
16302 2
|
安全 API 网络安全
查询和开启3389端口方式总结
查询和开启3389端口方式总结
1871 0
|
XML 安全 Oracle
Weblogic IIOP协议反序列化(CVE-2020-2551)漏洞复现
Weblogic IIOP协议反序列化(CVE-2020-2551)漏洞复现
2114 0
|
负载均衡 网络协议 安全
利用frp工具实现内网穿透、随时随地访问内网服务
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
利用frp工具实现内网穿透、随时随地访问内网服务
|
安全 Shell 测试技术
pyinstaller打包exe免杀和逆向浅析(上)
pyinstaller打包exe免杀和逆向浅析
2670 0