blog of morioka12

morioka12のブログ (Security Blog)

オススメのRust製無料プロキシツール「Caido」の紹介

1. 始めに

こんにちは、morioka12 です。

本稿では、最近注目を浴びているオススメの Rust 製の無料プロキシツール「Caido」について紹介します。

本稿で触れるプロキシツールは、Web アプリやスマホアプリの通信を傍受して、リクエストの内容を確認したり書き換えたりするツールを指します。


[更新 2026/06/21] お知らせ

zenn.dev

想定読者

  • バグハンターやバグハンティングに興味ある方
  • Burp Suite や ZAP を利用している方
  • Web Security に興味ある方
  • Web アプリやスマホアプリを開発する方


2. Caido の概要

「Caido」とは、Web アプリケーションの通信(リクエスト/レスポンス)をキャプチャしてリアルタイムで確認したり編集したりすることができるプロキシツールです。

caido.io

Caido は2021年に発表されて、2025年の現在では従来の著名なプロキシツールである「Burp Suite」の代替として注目されており、特に使いやすさやパフォーマンス、柔軟性において強みを持っています。

また、Caido の開発チームや Plugin の開発者は、現役のバグハンターが多数関わっており、バグハンター向けにモダンな UI で Rust による高速で効率的なプロキシツールを実現しています。


アドバイザー

Caido のアドバイザーには、バグバウンティ業界で著名な2名が就任しています。

そのため、現役のプロのバグハンターによるバグハンターのためのプロキシツールとしてとても期待されます。


主な特徴

Caido の大きな特徴としては、「軽い」「早い」「モダンな UI」です。

  • Rust で構築されていて軽量 & 高速性や効率性も実現
  • モダンな UI で直感的
  • ディスクトップアプリと CLI で使える
  • HTTPQL でクエリ指定がしやすい
  • ワークフロー機能によるアクションの自動化が手軽に可能
  • バックエンドログ表示で UI からの直接アクセスによるデバッグ機能付き
  • HTML, CSS, JavaScript などで Plugin の開発が可能
  • ワークスペースの切り替えが楽
  • 現役のバグハンターたちによるコミュニティが活発 & (バグがあればすぐ治してくれる)


ディスクトップアプリと CLI

Caido は Windows・Mac・Linux に対応していますが、ディスクトップアプリ以外にも CLI で利用することができます。

$ ./caido-cli --listen 127.0.0.1:8081

そのため、VPS やコンテナ環境、クラウドマシンなどでも Caido を利用することができます。

caido.io

https://docs.caido.io/concepts/essentials/cli_vs_desktop.htmldocs.caido.io

Caido CLI のオプションは以下のようになっています。

-l, --listen <ADDR:PORT> リスニングアドレス
  --invisible すべてのリスナーに対して非表示モードを有効にする
  --proxy-listen <ADDR:PORT> プロキシリスニングアドレス
  --ui-listen <ADDR:PORT> UIリスニングアドレス
  --ui-domain <UI_DOMAIN> UIで許可するドメイン
  --no-open UIをブラウザタブで開かない
  --debug デバッグログを記録して表示する
  --reset-cache クラウドデータのインスタンスキャッシュをリセットする
  --reset-credentials インスタンスの認証情報をリセットする(危険)
  --data-path <DATA_PATH> データを保存するディレクトリ
  --no-logging ファイルログを無効にする
  --no-renderer-sandbox レンダラーのサンドボックス化を無効にする
  --import-ca-cert <IMPORT_CA_CERT> CA証明書をインポートする
  --import-ca-cert-pass <IMPORT_CA_CERT_PASS> CA証明書のパスワードをインポートする
  --allow-guests ゲストログインを許可する
-h, --help ヘルプ(詳細は '--help' で確認できます)
-V, --version バージョンを表示

docs.caido.io


HTTPQL

HTTPQL (HTTP Query Language)とは、バグハンターのための新しいクエリ言語で、大量の HTTP リクエストの中から特定の情報を効率的にフィルタリング、検索、分析するための機能です。SQL に似た構文を持ち、直感的かつ柔軟なクエリを記述できます。

<条件> [AND|OR <条件> ...] [ORDER BY <フィールド> [ASC|DESC]] [LIMIT <数値>]

例えば、以下のようなクエリ分で条件を指定することができます。

  • GET リクエストのみを表示
    • request.method = 'GET'
  • /api/v1 を含むパスのリクエストを表示
    • request.path LIKE '%/api/v1%'
  • 4xxまたは5xxエラーレスポンスを表示
    • response.status >= 400 AND response.status < 600
  • application/json ヘッダーのリクエストを表示
    • request.headers.Content-Type = 'application/json'
  • リクエストボディに「password」という文字列が含まれるものを表示
    • request.body LIKE '%password%'
  • パスが /user/ の後に数字が続くものを表示 (正規表現)
    • request.path ~ '^/user/[0-9]+$'

docs.caido.io


DNS の書き換え

Caido の「DNS Rewrites」では、必要に応じてドメイン名を解決するために特定の IP や DNS サーバーを設定できます。

docs.caido.io


ブラウザでレスポンスの表示

Caido の新機能で、ブラウザ内で直接リクエストを再生してレスポンスを表示できるようになりました。

caido.io


SDK・Plugin

Caido の SDK には、Backend・Frontend・Workflow 用にそれぞれ用意されています。

また、開発者向けの Plugin も複数用意されています。

developer.caido.io

github.com

github.com

github.com


Caido と Burp Suite の違い

Caido の公式では、以下のような違いを表しています。

  • 開発言語
    • Caido: Rust
    • Burp: Java
  • インターフェース(UI)
    • Caido: 直感的な UI に焦点を当てている
    • Burp: 多機能ゆえに複雑に感じられることもある
  • パフォーマンス
    • Caido: 高速でメモリの使用量が少ない
      • 特に大規模な JavaScript ファイルを開いてコードを読み込む際などにスムーズさが感じられるという声があり
    • Burp: Java 製ということもあり重めでメモリの使用量も多い
  • 拡張機能の開発
    • Caido: JavaScript / TypeScript / Go などで一般的な Web 技術で開発可能
    • Burp: Java / Python / Ruby などで組み込みの敷居が少し高い
  • ノーコードでのカスタマイズ
    • Caido: ワークフローの機能により、コーディングの知識がなくても強力な自動化やテストプロセスの微調整が可能

caido.io


Caido の使い始め方

Caido のダウンロードから使い始め方の手順などは、公式の「Quickstart」で丁寧に画像付きで紹介されています。

docs.caido.io


3. Caido の主な機能

  • Overview
    • Sitemap
    • Scope
    • Filters
  • Proxy
    • Intercept
    • HTTP History
    • WH History
    • Match & Replace
  • Testing
    • Replay
    • Automate
    • Workflows
    • Assistant
    • Environment
  • Logging
    • Search
    • Findings
    • Exports
  • Workspace
    • Files
    • Plugins
    • Workspace

以下では、よく使う機能のみを少し紹介します。


Sitemap

Sitemap とは、キャプチャしたリクエストをもとに Web サイトの構造を自動的にツリー状で可視化することができます。

そのため、Web サイトの全体構造を簡単に把握したり、Web ページごとのリクエストを一覧で手軽に確認したりすることができます。

https://docs.caido.io/guides/sitemap.htmldocs.caido.io


Intercept

Intercept とは、キャプチャしたリクエストを一度止めて編集することができ、編集後の内容をそのままサーバーに送信することができます。

そのため、HTTP リクエストの内容を改ざんしてサーバーに送りたい際によく使われます。

また、Caido は WebSocket にも対応していて、同様に Intercept から内容を変更することができます。 (結果は WH History タブで見ることが可能です。)

https://docs.caido.io/guides/intercept.htmldocs.caido.io


HTTP History

HTTP History とは、キャプチャした全てのリクエスト/レスポンスを一覧で確認することができます。

また、高度なフィルタリング機能やエクスポート機能も備わっており、特定のリクエスト/レスポンスを検索したい時などによく使われます。

ちなみに、エクスポート機能では、JSON と CSV の形式でダウンロードすることが可能です。

https://docs.caido.io/guides/http_history.htmldocs.caido.io


Match & Replace

Match & Replace とは、キャプチャするリクエストとレスポンスを自動的に変更する定義を設定することができます。

例えば、バグバウンティでは HTTP ヘッダーにバグハンターであることがわかる任意のヘッダーを付与する必要がある場合に、この機能を使うことで自動的に任意のヘッダーを付与した状態でリクエストを送ることができます。

docs.caido.io


Replay

Replay とは、個別にリクエスト/レスポンスを編集して送信したりすることができます。

そのため、特定のリクエストごとに検証をしたい場合によく使用されます。

また、Replay タブ内ではリクエストごとに Sessions と Collections の機能があり、リクエストのタブをグループ化することができ、プロジェクトや機能ごとにフォルダで管理することもできます。

https://docs.caido.io/guides/replay.htmldocs.caido.io


Automate

Automate とは、単語リストを用いて特定のパラメーターを変更するリクエストを一括送信することができます。

そのため、特定のパラメーターに対して総当たりやファジングをしたい場合によく使用されます。

https://docs.caido.io/guides/automate.htmldocs.caido.io


Workflows

Workflows とは、特定の条件下で実行される複数のアクションを手軽に設定することができます。

Workflows には「Passive Workflows」と「Active Workflows」と「Convert Workflows」があり、それぞれ用途に合わせてワークフローを設定することができます。

docs.caido.io

docs.caido.io


Search とは、Intercept タブや Replay タブ、Automate タブなどの Caido 内の全てのリクエスト/レスポンスを一覧で表示することができます。

そのため、全てのキャプチャした内容や後に検証した内容をもとに、フィルタリング機能を用いて列挙して確認したい際によく使用されます。

https://docs.caido.io/guides/search.htmldocs.caido.io


Findings

Findings とは、Workflows や SDK で検出された実行結果を一覧表示することができます。

https://docs.caido.io/guides/findings.htmldocs.caido.io


その他

Built-in Browser

Caido には、内臓ブラウザの機能が存在します。

そのため、普段使っているブラウザに対してプロキシの設定をすることなく、内臓ブラウザで Web サイトを閲覧することでセットアップなしに通信をキャプチャすることができます。

Discord に通知を送信する

Caido では、Active Workflow を活用することで、簡単にリクエスト/レスポンスを Discord に通知させることができます。

これにより、気になるリクエスト等を Discord に流してメモしたり、他の人と情報を共有したりと、いろいろな活用方法があると思います。

スクリプトの例 (クリックで表示)

// Request object under the alias of FetchRequest.
import { Request as FetchRequest, fetch } from "caido:http";

export async function run(input, sdk) {
  // Discord webhook data.
  const webhookData = {
    username: "Caido Bot",
    avatar_url: "https://caido.io/images/logo.color.webp",
    content: "Message from Caido Workflow",
    embeds: [
      {
        title: "Webhook Fetch Request",
        description: "Hello World!",
        color: 14329120,
        fields: [
          {
            name: "Field A",
            value: "Value A",
            inline: true,
          },
          {
            name: "Field B",
            value: "Value B",
            inline: true,
          },
        ],
        footer: {
          text: "Sent via Caido",
        },
        timestamp: new Date().toISOString(),
      },
    ],
  };

  // Create a new request to Discord webhook.
  const fetchRequest = new FetchRequest("YOUR-DISCORD-WEBHOOK-URL", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(webhookData),
  });

  try {
    const response = await fetch(fetchRequest);

    // Create response data object.
    const responseData = {
      status: response.status,
      statusText: response.statusText,
      headers: Object.fromEntries(response.headers.entries()),
    };

    // Log the response data with proper formatting.
    sdk.console.log("Response data:", JSON.stringify(responseData, null, 2));

    // For Discord webhooks, 204 means success.
    if (response.status === 204) {
      return "Webhook sent successfully";
    }

    // If not 204, get the error details from response.
    const errorBody = await response.text();
    return `Webhook failed: ${errorBody}`;
  } catch (error) {
    return `Error: ${error.message}`;
  }
}

https://docs.caido.io/assets/trigger_discord_workflow.CeKnaO6v.png

https://docs.caido.io/assets/caido_discord_message.1klP2RT3.png

docs.caido.io

Android・iOS

Caido は Android や iOS にも対応しているため、スマホアプリの通信もキャプチャすることができます。

https://docs.caido.io/tutorials/android_configuration.htmldocs.caido.io

docs.caido.io

一部有料機能

Caido には一部 Caido Pro な機能が存在します。

  • Assistant
    • 攻撃ベクトルなどを支援する AI アシスト機能
  • Backups
    • プロジェクト内の全てのデータをバックアップする機能
  • Search
    • Search タブでの HTTPQL クエリによる検索機能

caido.io

ちなみに、学生には「1年間学生無料プラン」があるそうです。

caido.io


4. Caido のおすすめ Plugin

Caido では、Plugins タブから任意の Plugin をセットアップすることができます。

https://docs.caido.io/guides/pluginsdocs.caido.io


Scanner

Scanner とは、自動セキュリティテスト機能を提供する脆弱性検出 Plugin です。

これにより、一般的な Web アプリケーションの脆弱性を特定するためのユーザーフレンドリーなインターフェースを提供します。

github.com


Shift

Shift とは、プロキシ内の機能や中身に対して、命令文を入力するだけで自動的に操作する AI Plugin です。

例えば、Intercept の内容を自動で編集したり、一致置換ルールを作成したり、リクエストとレスポンスからワードリストを生成させたり、レスポンスのボディ内容からリクエストのパラメーターの型を生成したり、API エンドポイントに含む JavaScript の分析させたりなど、様々なことを自動的に操作することができます。

github.com

https://shiftplugin.com/shiftplugin.com


Shift Agents

Shift Agents は、Caido ユーザー向けの新しいマイクロエージェント フレームワークです。

XSS エクスプロイト、WAF バイパスなど、考えられるあらゆるタスク向けにカスタマイズされたマイクロエージェントを構築します。

github.com


Caido403Bypasser

Caido403Bypasser とは、カスタムテンプレートを利用して、HTTP リクエストを変換させることで403 ステータスのリクエストを回避するスキャンを実行する Plugin です。

このツールは、組み込み AI を利用して、カスタムテンプレートを効率よく生成させることができます。

github.com


CaidoCSRF

CaidoCSRF とは、リクエストから CSRF の PoC を自動生成できる Plugin です。

github.com


QuickSSRF

QuickSSRF とは、外部サービスとやり取りするようなリクエストに対して SSRF の検証に役立つ Plugin です。

github.com


ParamFinder

ParamFinder とは、リクエストにおいて非表示のパラメーターを列挙できる Plugin です。

github.com


JWT-Analyzer

JWT-Analyzer とは、JWT を自動的に検出して手軽に分析できる Plugin です。

github.com


Convert Tools

Convert Tools とは、リクエスト/レスポンス内の文字列をエンコードやデコードなどのデータ形式を変換できる Plugin です。

github.com


Data Grep

Data Grep とは、リクエスト/レスポンスからデータを抽出することができ、単語リストの作成やシークレットキーの検出などを快適に実行することができる Plugin です。

github.com


JXScout

JXScout とは、Caido でキャプチャしたリクエストを自動的にローカルに保存して、手元のエディタで JavaScript を簡単に分析できる Plugin です。

github.com


CaidoExploitGenerator

CaidoExploitGenerator とは、リクエストを Python や JavaScript 、Curl などでエクスプロイトを生成してくれる Plugin です。

github.com


EvenBetter

EvenBetter とは、Caido の UI をお好みに カスタマイズできる Plugin です。

github.com


Notes++

Notes++ とは、Caido 内で Markdown 形式によるメモが取れる Plugin です。

github.com


Drop

Drop とは、他の Caido ユーザーと簡単にコラボレーションして一緒に Caido を操作できる Plugin です。

github.com


Workflows

Workflows とは、コミュニティが提供するワークフローを利用できたり、独自のワークフローを設定して一定のテストを自動化することができる Plugin です。

github.com


Burp2Caido

Burp2Caido とは、Burpsuite からエクスポートされた HTTP history ファイルを Caido に移行できる Plugin です。

github.com


5. 終わりに

本稿では最近注目を浴びているオススメの Rust 製の無料プロキシツール「Caido」について紹介しました。

ぜひ、バグバウンティやバグハンティングなどで一度使ってみてください。

そして、最新情報については公式 X (@CaidoIO)をご覧ください。

x.com

また、バグバウンティやバグハンティングについては、以下のブログ等をご覧ください。

scgajge12.hatenablog.com

scgajge12.hatenablog.com


ここまでお読みいただきありがとうございました。




更新履歴

2025/06/16

  • 一部新機能の情報を追加しました。

2025/08/12

-新しい Plugin を追加しました。