Metinfo 5.x 管理员密码重置漏洞
前言
在先知看到了一篇分析该漏洞的文章,复现分析一下,漏洞还是比较有趣的。
正文
首先知道是 管理员密码重置时出现的问题,于是抓包,定位到相关的php文件。
首先包含了 ../include/common.inc.php
, 在这个文件中可以搞清楚对我们提交参数的处理。
把提交的参数注册为变量, 这样的代码非常容易形成变量覆盖漏洞。
在 getpassword.php
中 首先注册提交的参数为变量,然后生成重置密码的连接,最后发送出去。问题就出在发送链接的流程中。
发送时首先通过 jmailsend
发送,如果发送失败,则使用 curl_post
重发一遍。
curl_post
中会向 met_host:80
发送 POST
数据, 而我们可以利用 变量覆盖 设置 met_host
为我们自己的 vps
, 然后我们就可以接收到密码重置连接了。
下面就是要让程序能进入该流程。
在 jmailsend
中 met_fd_port
为邮件服务器的 端口,我们使用 变量覆盖 设置 met_fd_port
为一个随机端口,就会导致 $mail->Send()
发送失败 返回 false
, 然后就可以进入 curl_post
。
最后的 poc
:
|
|
vps的 80端口就可以接收到
总结
拿到一套程序首先看看对提交数据的处理,如果有 变量覆盖 漏洞,就去可能出现漏洞的功能代码里面看看能不能利用 变量覆盖 漏洞,一些不好静态看的东西,可以自己测试一下。
参考
https://xianzhi.aliyun.com/forum/topic/2097#toc-0
本站文章均原创, 转载注明来源
本文链接:http://blog.hac425.top/2018/03/05/metinfo_5x_reset_admin_passwd.html