MetInfo 网站漏洞之PHP版本覆盖变量漏洞



         MetInfo是一款基于PHP+mysql数据库开发的企业建站代码,在优化以及功能上,包括移动

端,自适应,多款模板免费使用,内含多种语言,中英双语,适合外
贸建站,在搜索优化上比较

友好,深受各大企业公司以及建站公司的喜爱。最近一
次的更新时间为2018年1月29日,MetInfo

6.0.0版本。支持nginx、apache、iis
等各种服务器环境。
 
 
对MetInfo进行网站安全检测发现,存在网站漏洞,是基于PHP版本的覆盖变量漏洞。PHP覆盖变

量漏洞通俗来讲是通过自定义的变量值来更换PHP版本里默认的变量值
的一个漏洞,这个漏洞基本

上不会造成太大的威胁,但是这个覆盖变量漏洞会改变
PHP代码程序设计的逻辑功能,使原有的

PHP安全出现问题。

 
 
MetInfo 网站漏洞检测中比较危险的几个函数
 
1.import_request_variables()变量函数
 
2.extract()变量函数
 
3.register_globals=on 变量函数
 
4.parse_str()变量函数
 
5.$$
 
register_globals=on 变量函数是通过前端网站注册用户那里,来传递注册的值,当属性为on值,

用户注册传递过来的值会被当成全局的变量值来注册,而当
register_globals=off,注册的值就需

要到程序代码的数组里去获取当前的变量值


 
extract() 变量函数,是从程序代码里的数组来获取网站的符号表,这个函数使用的都是数组的键

名来使用一个变量名,变量名里的每个元素,都会对应当前网站里
的符号表,并自动创建相应的

变量名。Sine安全公司是一家专注于:网站安全、服
务器安全、网站安全检测、网站漏洞修复,渗

透测试,安全服务于一体的网络安全服
务提供商。
 
上面的几个函数就大体的跟大家讲解一下,关于MetInfo 漏洞,存在于网站根目录下include文

件夹下的common.inc.php里的第30到45行的代码里,这个代码是接收
于GET、POST、cookies、

方式传输进来的参数,在这几种提交方式上,存在着
MetInfo PHP版本覆盖变量的漏洞,我们来

看下代码:


 
上面代码的写法,会直接造成php覆盖变量漏洞,即使代码里写明了变量,但还是会被自定义的变

量值给覆盖掉,导致可以执行恶意的变量值,在MetInfo用户密码
找回功能上可以利用该php 覆盖

变量漏洞进行找回管理员密码操作,进而导致管理
员后台被攻击者入侵,并上传webshell进行篡改

并提权等攻击情况。
 
MetInfo 密码找回漏洞利用的是admin目录下的admin文件夹里的getpassword.php文件,我们

看下代码:


 
代码里的前面写的基本都是从数据库进行查询匹配,并调用common.inc.php代码,switch语句是

找回密码的逻辑控制语句。其中$post是未能成功发送的邮件内容,
然后根据$met_host指定的地

址将邮件内容发送过去,$met_host 在程序的值指定
为app.metinfo.cn,应该是metinfo官方设置

的邮件转发服务器.


当站长自身设置
的邮件服务器不起作用时先将邮件内容通过http请求发送此服务器,再由此服务器

发送密码重置邮件。但是这个$met_host的值由于变量覆盖的原因导致可以被任意设置,可以将密

码重置邮件的内容发送到我们指定的服务器。前提是jmailsend发
送失败,这里再来看一下jmail

send函数,在文件/include/jmail.php中。Sine安
全公司是一家专注于:网站安全、服务器安全、

网站安全检测、网站漏洞修复,渗
透测试,安全服务于一体的网络安全服务提供商。
 
然后我们来构造一下密码找回的链接以及exp,看到可以重置密码成功。
分享: