• phpcms2008远程代码执行漏洞


    phpcms2008远程代码执行漏洞

    描述:

    近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127)。攻击者利用该漏洞,可在未授权的情况下实现对网站文件的写入。该漏洞危害程度为高危(High)。目前,漏洞利用原理已公开,厂商已发布新版本修复此漏洞。

    影响范围:

    PHPCMS2008 sp4及以下版本

    POC github地址:

    https://github.com/ab1gale/phpcms-2008-CVE-2018-19127

    漏洞分析:

    在type.php中:
    包含/include/common.inc.php 其作用是对$_GET,$_POST等全局变量进行注册。

    image.png

    extract函数大家都明白,将数组的项注册为变量。可以对任意变量进行注册。
    在type.php第30行调用template函数

    image.png

    template函数定义在global.func.php

    image.png

    image.pngimage.png

    $template变量在这里是完全可控的,且默认开启模版缓存自动刷新。当template变量输入为template=tag_(){};@unlink(FILE);assert($_POST[1]);{//../rss时,$compiledtplfile=”data/cache_template/phpcmstag(){};@unlink(FILE);assert($_POST[1]);{//../rss.tpl.php” .此时,可自然进入判断 ,调用template_compile函数,次函数定义在include/template.func.php

    image.png

    在templatecompile函数中,$template变量是我们可控的,而$content变量当我们的输入为”template=tag(){};@unlink(FILE);assert($_POST[1]);{//../rss”自然会选择前者,而content内容中$template变量可控,最后file_put_contents函数写入任意代码,需要注意的是,file_put_contents路径为data/cache_template/phpcmstag(){};@unlink(FILE);assert($_POST[1]);
    {//../rss.tpl.php时,php会将其路径解析为data/cache_template/rss.tpl.php。

    image.png

    总结一下:

    type.php 包含common.inc.php 任意变量注册-》$template变量可控->template函数变量$template可控->template_compile函数变量$template可控-》file_put_contents函数由$template影响两个参数变量可控,借助php此函数解析文件特性,将一句话写入文件。

    漏洞修复:

    升级至最新版本

    REFERECE:

    https://github.com/ab1gale/phpcms-2008-CVE-2018-19127

    http://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-19127

  • 相关阅读:
    Swift
    Swift
    Swift
    Swift
    获取项目版本号与设置引导页的判断条件
    [iOS]简单的APP引导页的实现 (Swift)
    iOS
    文顶顶 iOS开发UI篇—UITabBarController简单介绍 iOS开发UI篇—UITabBarController简单介绍
    Swift开源项目精选
    Fuel 5.1安装openstack I版本号环境
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/10039579.html
Copyright © 2020-2023  润新知