zoukankan      html  css  js  c++  java
  • ATutor学习内容管理系统任意文件上传漏洞(CVE-2019-12169)分析

    漏洞介绍

    ATutor是ATutor团队的一套开源的基于Web的学习内容管理系统(LCMS)。该系统包括教学内容管理、论坛、聊天室等模块。Atutor与Claroline、 Moddle及Sakai号称为四大开源课程管理系统。

    ATutor2.2.4语言导入功能处存在一处安全漏洞(CVE-2019-12169)。攻击者可利用该漏洞进行远程代码执行攻击。

    经过分析发现,除了CVE-2019-1216所报道的语言导入功能外,ATutor在其他功能模块中也大量存在着相似的漏洞,本文会在后面针对这一点进行介绍。

    漏洞分析

    据漏洞披露可知,漏洞触发点存在于mods/_core/languages/language_import.php文件中

    首先跟入language_import.php文件

    从language_import.php文件中35行起,可以发现关于文件上传相关代码

    从上图红框中代码可知,此处代码块是对文件上传情况进行校验

    在文件成功上传后,进入下一个if分支

    在这个分支里,程序将调用$languageManager->import方法对文件进行处理

    继续跟入import方法

    在import方法中,首先确认了用来保存上传文件的路径$import_path

    接着调用PclZip对压缩包进行处理。

    为了更好的理解程序执行流程,我们动态调试一下

    首先我们构造一个poc.php

    将这个poc.php打包为poc.zip

    访问如下链接以进入上传页面

    http://target/ATutor/mods/_core/languages/language_import.php

    在上传语言包页面中选择构造好的poc.zip并点击import按钮上传

    请求发送给后台服务器,程序执行进入断点

    此时的$import_path值为atutor应用的/content/import路径:”content/import/”

    程序调用PclZip的extract方法对压缩包进行解压

    PclZip是一个强大的压缩与解压缩zip文件的PHP类,PclZip
    library不仅能够压缩与解压缩Zip格式的文件;还能解压缩文档中的内容,同时也可以对现有的ZIP包进行添加或删除文件。

    我们再来看下import方法中是如何使用PclZip的

    程序创建了上传的zip压缩包的一个PclZip对象进行操作与控制,在解压过程中使用了extract方法。该方法中第一个参数是设置项,第二个是对应设置项的值

    我们来看下PCLZIP_OPT_PATH设置项的作用

    可见,PCLZIP_OPT_PATH设置项指定我们上传的zip文件解压目录为$import_path参数对应的路径

    解压成功后,poc.zip中内容出现在对应文件夹中

    查看poc.php中的值,可以发现poc上传成功

    访问如下地址,触发poc

    除此之外,该应用几乎所有import接口,在后台都采用PclZip将上传的zip解压到对应目录中。然而这些操作无一例外的未对压缩包中的文件进行校验

    下面举几个例子:

    位于mods/_core/themes/import.php文件中的主题导入功能

    代码如下:

    可以发现,这里也使用了extract方法将上传文件进行解压

    来看一下导入主题功能对应的前端页面

    这里页面与导入语音包的页面极其相似,只不过最终解压后存放的路径不同,不再是content/import/,而是themes/

    在此处上传构造好的poc.zip,最终poc.php将会被解压到themes文件夹中

    位于/mods/_standard/tests/question_import.php文件的问题导入功能

    位于mods/_standard/patcher/index_admin.php文件的补丁导入功能

    这些功能无一例外的存在着相似的漏洞

    总结

    针对单一文件上传,大多数Web应用都会进行严格的文件类型检测,但是涉及到压缩包上传,很多应用都不会检测压缩包中的内容,直接将压缩包中内容解压到对应目录中,这样就会导致了这类漏洞的产生。

  • 相关阅读:
    神经网络回顾-感知机
    遗传算法杂记
    差分进化算法DE和粒子群算法PSO
    遗传算法GA
    Caffe学习 五 conv_layer与im2col
    Selenium
    Selenium
    Selenium
    Selenium
    Selenium
  • 原文地址:https://www.cnblogs.com/0daybug/p/12848726.html
Copyright © 2011-2022 走看看