MetInfo 5.3.19 存在变量覆盖,导致可任意用户密码重置
见网上都没有详细的解释,我就来写一下顺便学习学习
1.漏洞成因
漏洞点主要有两个
漏洞点主要在admin/include/common.inc.php中的84行开始
这里是第一个,把CPG传参注册为变量
这意味着任何包含了该文件的代码都有变量覆盖漏洞存在的风险
可配合利用的点在admin/admin/getpassword下,是用于找回密码的
代码首行便包含了该文件
通过网上给出的信息灰盒了一下
发现变量met_host的注册点在这个文件中
持续跟进,最终发现met_host被extract注册成了变量,从64行以及上面的代码不难看出,其实就是从数据库中读出来再注册成变量(当然,这个是未被覆盖前的变量)
然后变量覆盖
最终影响到了curl_post 这个函数
当jmailsend执行失败,也就是找不到指定的邮箱,则执行curl_post
其实就是对上面覆盖的变量目标发送http post请求
2.漏洞复现
本地netcat监听
nc -lvvp 80
发包
进入相应界面即可重置