CrushFTP CVE-2023-43177

admin 2023年12月11日13:20:49评论86 views字数 1062阅读3分32秒阅读模式

大概是对下面内容里面如何拿到用户cookie的一个理解

CrushFTP Critical Vulnerability CVE-2023-43177 Unauthenticated Remote Code Execution - Converge Technology Solutions (convergetp.com)

官网公告的43177修复方式 限制了加载jar包的目录,是从后台修的。

CrushFTP CVE-2023-43177

重点好奇一下前台怎么登进去

CrushFTP CVE-2023-43177

从描述感觉第一个洞利用应该是任意文件读取,读取sessions.obj 获取里面存储的登录用户的cookie信息。

CrushFTP CVE-2023-43177

来实际看看

这里idea反编译不出来,用jd-gui看的,这里buildPostItem函数会遍历传入的header头信息,然后分装到as2Info中,而判断是否是as2Info的条件就是header中有as2-to 且值不为空就可以进入到as2-to的信息处理中了

putAll会将as2-to 信息传入覆盖掉user_info

CrushFTP CVE-2023-43177

uiSG函数

CrushFTP CVE-2023-43177


开头文章提到了,从访问日志看第一次访问给的未登录cookie是anonymous权限的从而可以利用as2去覆盖一些值。这里搜索产生的日志也可以验证这一点。

CrushFTP CVE-2023-43177

CrushFTP CVE-2023-43177

流程分析

对于已有用户信息的user_info  他会调用sharedsession的find方法

首先init会从sessions.obj文件中去读取然后反序列化 获取已有的user_info

sessions.obj文件是crushftp初始化的时候就创建的文件,不被占用可以随便删除,它隔一段时间会自动生成新的。

CrushFTP CVE-2023-43177

CrushFTP CVE-2023-43177

CrushFTP CVE-2023-43177

在正常请求流程中ServerSessionHTTP调用buildPostItem可以利用as2-to 将header中的值赋值给user_info

CrushFTP CVE-2023-43177

在后面的调用流程中writeResponse会在返回前调用drain_log函数

CrushFTP CVE-2023-43177

这里user_log_path_custom不为空,则会进行文件复制移动然后删除的操作。

CrushFTP CVE-2023-43177

通过调试发现user_log_path_custom:123 参数传入的值,会被user_info赋值给user_log_path 也就是上一次文件的值

那么发起两次请求,传入两次user_log_path_custom,把文件进行移动

由于user_log_file会生成后缀拼接在path后面,我们让user_log_file的值为空即可控制想要移动的任意文件。

比如将sessions.obj移到web根目录就可以访问到了

CrushFTP CVE-2023-43177



原文始发于微信公众号(FXDSecurity):CrushFTP CVE-2023-43177

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月11日13:20:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CrushFTP CVE-2023-43177http://cn-sec.com/archives/2286931.html

发表评论

匿名网友 填写信息