【漏洞预警】metinfo 6.2.0最新版本前台注入分析
概述
近日,白帽汇安全研究院发现metinfo曝出了sql注入漏洞。此次曝出漏洞存在于2019年3月28日更新的最新版本及之前版本中。官方目前仍没有修复该漏洞。
长沙米拓信息技术有限公司成立于 2009 年 3 月,是一家专注于「为中小企业提供信息化服务」的互联网企业。用户大部分位于中国。其中浙江最多,有10938个开放服务,北京4444个,广东1775个。
分布情况
根据FOFA的数据统计,全球开放的metinfo的服务中,中国最多,有33856个服务,美国第二,有11833个服务,日本第三,有218个服务,南非第四,有183个服务。
Metinfo全球分布情况(非漏洞影响范围)
全国的开放的metinfo服务中,浙江最多,有10938个,北京第二,有4444个,广东第三,有1775个,河南第四,有1522个。
Metinfo全国分布情况(非漏洞影响范围)
漏洞详情
漏洞的关键点在auth类的encode()和decode()方法。看下代码:
这里两个方法全都调用了authcode()方法,跟进authcode看一下:
这里decode和encode算法可逆,但我们需要知道$key的值,查看构造函数:
这里$key的值是来源于met_webkeys这个配置,查看met_webkeys来源发现在安装的时候把这个key写入到./config/config_safe.php文件中。
查看/config/config_safe.php文件,这种代码php是无法解析的,php后面必须要有一个空白字符,右键查看源代码即可得到met_webkeys,但有的会报错,根据这个作者所说和php线程安全有关,本地试了下好像是这样。
这里有两个利用点,简单说下其中一个。在register类的doemailvild()方法中,这里把用户提交的p参数进行了解密,并且传入到了get_user_valid()方法中。
查看get_user_valid()方法,这里又把解密后的值传入到了get_user_by_username()方法。
查看get_user_by_username()方法,又传入了get_user_by_nameid()方法。
查看get_user_by_nameid()方法,直接拼接。
这里基本就清楚了,将auth类的authcode()方法copy本地。
访问本地文件得到加密后的字符串。
将加密后的字符串放到cookie,get或者post中,构造请求提交,延时注入成功。
payload
这里有两个,一个是不需要登陆就可注入,另一个需要以会员登陆。以下请自行替换p参数。
- 1、不需要登陆
GET /admin/index.php?n=user&m=web&c=register&a=doemailvild HTTP/1.1
Cookie: p=00c7%2FDBwD23b41olxVCthTvDDTRBhldmrrdyA8S3t%2F3yAl4QZ0P%2FSfOS5zlB
- 2、 需要登陆
GET /admin/index.php?n=user&m=web&c=profile&a=dosafety_emailadd HTTP/1.1
Cookie: p=497cD9UpkDtsvFzU9IKNlPvSyg1z%2bf09cmp8hqUeyJW9ekvPfJqx8cLKFSHr;<自行添加登陆后的cookie>
漏洞POC
目前,文中提到的漏洞相关PoC,FOFA客户端目前以支持检测上述漏洞。
CVE编号
无
修复建议
目前官网针对此安全风险已经修复,用户如果没有升级,请务必修改后台登录文件夹名称,此安全隐患只有在知道网站后台登录地址的前提下才能被利用。升级公告地址: https://www.metinfo.cn/news/2055.html
白帽汇安全研究院建议限制用户对config_safe.php文件的访问来进行应急修复。
- Apache配置.htaccess文件:
Order allow,deny
Deny from all
- Nginx在nginx.conf文件添加以下配置:
location = /config/config_safe.php {
deny all;
}
参考
[1] https://xz.aliyun.com/t/4508
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。
最新评论