Burpはデフォルトで、PortSwiggerが提供するパブリックBurp Collaboratorサーバを使います。しかしさまざまな目的によっては、これが適していない場合があります。詳細は、メインのBurp Collaboratorドキュメントを参照してください。
必要に応じて、Burp Collaboratorサーバのプライベートインスタンスを配備できます。このドキュメントは、そのための手順と、次のトピックについても説明します:
閉じたプライベートなネットワークでひとり(または少人数のチーム)で利用する方法が、プライベートCollaboratorサーバの一般的な利用方法です。インターネットアクセスがない閉じたネットワーク上のアプリケーションをテストする場合、デフォルトのCollaboratorサーバは使用できません。
このような状況では、設定ファイルは必要なく、インストールと実行にあるいずれかコマンドで、最小限のCollaboratorサーバのインスタンスを実行できます。Burpの設定で、Collaboratorサーバのアドレスに自分のマシンのIPアドレスを設定する必要があります。
このセットアップ方法では、DNS名前解決のカスタマイズや、信頼された有効なHTTPS接続はサポートしません。しかし、Collaboratorの最低限の機能を使用でき、外部にHTTP通信するような問題は検出できます。
プライベートBurp Collaboratorサーバを実行し、すべてのCollaborator機能を使用したり、インターネットからアクセスできるようにしたり、複数ユーザに対応するには、次の手順を行う必要があります:
Collaboratorサーバのドメインを選択します。Collaboratorサーバは、独自ドメインの権威DNSサーバになる必要があり、それにはドメインプロバイダに相談する必要があるでしょう。
Collaboratorサーバが使用するポートを選択します。サーバが使用するデフォルトポートはこちらですが、必要に応じて変更できます。特に必要がなければ、デフォルトポートの使用を推奨します。
サーバを配置する場所を決定します。物理マシンまたはクラウドベースのマシンに配置できます。Collaboratorサーバの選択したポートにアクセスできかどうか、ファイアウォールの設定を確認してください。サーバのリソースも確認してください。
ドメインプロバイダで、NSレコードとそれに対応するAまたはAAAAレコードを設定します。DNS設定以降を参照してください。
Collaboratorサーバは設定ファイルが必要です。このガイダンスを使用して、設定ファイルを作成してください。
TLS、イベントとポーリングの通信、メトリクス、Collaboratorのログ出力、カスタムHTTPコンテンツを設定するには、以下のガイダンスを使用してください。
Collaboratorサーバを起動します。
証明書を取得するためにドメインの所有権を証明する必要がある場合は、CollaboratorサーバでカスタムHTTPやDNS機能を使用し、認証局にドメインの所有権を証明してください。
このサーバを使用するようにBurpを設定します: Burp Suiteのプロジェクトオプション > その他で、自身のCollaboratorサーバの場所を設定します。
Collaboratorヘルスチェックを実行します。これは、プロジェクトオプション > その他にあります。
Burp Collaboratorサーバは、Burp Suite Professional自身と同じ実行ファイルに含まれています。独自のサーバインスタンスを実行するのに、ライセンスキーは必要ありません。サーバはコマンドラインから--collaborator-server
引数を使って直接起動できます。例:
sudo java -jar /path/to/file.jar --collaborator-server
上記のコマンドは、デフォルトの設定ファイルを使用してCollaboratorサーバを起動します。カスタム設定を追加するには、次の引数を追加します:
--collaborator-config=myconfig.config
ただし、プライベートCollaboratorの使用状況によっては、さらに設定が必要になる場合があります。サーバのセットアップに必要な設定は前のセクションを、独自の設定ファイルを作成する方法の詳細はCollaborator設定ファイルのセクションを参照してください。
サービスを実行するのに必要なポートにバインドできない場合、サーバは起動に失敗します。これらのポートを使用している他のプロセスを停止する必要があります。Burp Collaboratorサーバはデフォルトで、次のポートをリッスンします:
DNS: UDP ポート53
HTTP: TCP ポート80
HTTPS: TCP ポート443
SMTP: TCP ポート25と587
SMTPS: TCP ポート465
ファイアウォールで、これらのポートに対する任意のネットワークからのインバウンド通信を許可する必要があります。テストしているアプリケーション(およびそれらのDNSサーバ)からもCollaboratorサーバにアクセスできる必要もあるので、ファイアウォールのルールを調整する必要があるでしょう。さらに、Unixベースのシステムでこれらのポートにバインドするためには、root権限でサーバを実行する必要があります。あるいは、非標準のポート上で実行するようサーバを設定し、ポートマッピングで元のポートへリダイレクトする方法もあります。
Collaboratorサーバをroot以外のユーザとして実行する場合は、非標準のポート上で実行するように設定する必要があります。使用しているカスタムポートと標準ポートをマッピングするように、オペレーティングシステムを設定する必要もあります。通常、TCPとUDP接続の受信のためのマッピング設定が必要です。
Collaboratorサーバを標準ポート以外で使用するよう設定している場合、プロジェクトオプション > その他以下のBurp Collaboratorサーバオプションでそれらを指定する必要があります。
Collaboratorサーバが非標準ポートを使用するよう、設定ファイルで設定できます。例:
{ "serverDomain": "burpcollaborator.example.com", "eventCapture": { "http": { "ports": 8080 }, "https": { "ports": 8443 }, "smtp": { "ports": [ 8025, 8587 ] }, "smtps": { "ports": 8465 } }, "dns": { "ports": 8053 } }
"ports"の値には単一の数値が、または複数のポートでサービスのリッスンをしたい場合はポート番号の配列が指定できます。Collaboratorサーバはデフォルトで、SMTP通信用にポート25と587をリッスンします。
Burp Collaboratorサーバの起動時には、想定する使用方法に基づいて、JVMのメモリ処理とガベージコレクションの設定を推奨します。少人数での利用を想定してデスクトップマシンでCollaboratorサーバを実行する場合、JVMの使用するメモリ量を減らせます。次のコマンドは、ヒープを10から200MBの間で変動させ、JVMの5%の時間をガベレージコレクションに使用する設定で、通常あまりメモリを消費しません:
sudo java -Xms10m -Xmx200m -XX:GCTimeRatio=19 -jar /path/to/file.jar --collaborator-server
大人数で利用ができるよう専用マシン上でCollaboratorサーバを実行する場合、通常はOS、JVM、その他の実行プロセス用に1GBのメモリを残し、使用可能な物理メモリの量にヒープサイズを固定する設定が効率的です。例:
sudo java -Xmx3g -Xms3g -jar /path/to/file.jar --collaborator-server
サーバを頻繁に使用する予定で4GB以上の物理メモリがある場合は、ガベレージコレクション中に起こるJVMの一時停止を大幅に削減する、G1 ガベレージコレクタへの切り替えを推奨します。例:
sudo java -Xmx12g -Xms12g -XX:+UseG1GC -jar /path/to/file.jar --collaborator-server
Collaboratorサーバの機能をすべて使うには、通常は適切な設定ファイルを作る必要があります。
Burp Collaboratorはデフォルトで、指定したドメインのDNSサービスを実行します。これにはCollaboratorが使用する専用ドメインやサブドメインが必要です。DNS機能を省略し、IPアドレスのみでCollaboratorサーバにアクセスもできます; しかしこの設定は、さまざまな脆弱性の検出に効果的ではありません。
Burp Collaboratorをパブリックなインターネットで実行する場合、特定のドメイン(たとえばexample.com)を購入するか、既に所有し使用しているドメインのサブドメイン(たとえばburpcollaborator.example.com)が使用できます。制限された内部ネットワークの場合は、任意の専用内部ドメインを選択できます。
Collaboratorサーバが適切なDNSレコードを使用できるように、制御するドメインを知っている必要があります。これは、Collaborator設定ファイルの設定です。例:
{ "serverDomain": "burpcollaborator.example.com" }
DNS設定の詳細は、ドメインレジストラによって異なりますが、次のエントリが必要です:
通信用インタフェースの外部IPに割り当てる、Collaboratorサブドメイン(例: burpcollaborator.example.com
)のAレコードまたはAAAAレコード。
Collaboratorのネームサーバに割り当てる、Collaboratorサブドメイン(例: burpcollaborator.example.com
)のNSレコード(例: ns1.burpcollaborator.example.com
)。
Colaboratorネームサーバ(例: ns1.burpcollaborator.example.com
)のAまたはAAAAレコード。
設定ファイル内で指定されたドメインについて、そのドメインに対するすべてのクエリをCollaboratorサーバが名前解決するように権限を与えることが不可欠です。詳細な設定方法は、環境によって異なります。ほとんどのドメインレジストラは、ドメインの権威DNSサーバを設定するWebインタフェースを提供しています。
また、それぞれをCollaboratorサーバのIPアドレスに関連づけるグルーレコードを設定する必要があります。設定したDNSサーバそれぞれに異なるIPアドレスを指定するようドメインレジストラが要求する場合、Collaboratorサーバに2つのパブリックIPアドレスを設定する必要があるかもしれません。
テスト対象サーバのhostsファイルを編集するだけでは、Collaborator DNSサービスの使用は避けられません。テストでCollaboratorサーバを使用すると、メインに設定されたドメインの、ランダムに生成したサブドメインを使用します。hostsファイルはワイルドカードをサポートせず、よってランダムに生成されたサブドメインを検索する方法がありません。
Burp Collaboratorサーバのすべてのオプションは、設定ファイルを使用して制御します。デフォルトで、collaborator.config
というファイルをカレントディレクトリ内で探します。--collaborator-config
コマンドライン引数でこの場所を上書きできます。例:
sudo java -jar /path/to/file.jar --collaborator-server --collaborator-config=myconfig.config
設定ファイルはJSONフォーマットを使用し、コメントもサポートします。IPアドレスが必要な場所では、単一のアドレスまたはアドレスのリストを設定できます。たとえば、ネットワークインタフェースのローカルアドレスの設定に次のどちらも使用できます:
"localAddress": "10.20.0.159" "localAddress": [ "10.20.0.159", "127.0.0.1" ]
Collaborator設定ファイルは、次のフィールドを使用します:
フィールド | 意味 | 例 |
Your_Collaborator_Domain
|
Collaboratorが権威を持つサーバドメインです。 | somedomain.net |
NS_record_label_1
|
サーバドメインのNSレコード内の最初のエントリのラベルです。 | ns1 (somedomain.netのNSレコードにはns1.somedomain.netが含まれるでしょう) |
NS_record_label_2
|
サーバドメインのNSレコード内の2番目のエントリのラベルです。 | ns2 (somedomain.netのNSレコードにはns2.somedomain.netが含まれるでしょう) |
External_IP_Nameserver_A_Record1
|
Aレコードエントリで指定されているCollaboratorサーバのパブリックIPアドレス。 | ns1.somedomain.netのA(またはAAAA)レコードでしょう。 |
External_IP_Nameserver_A_Record2
|
Aレコードエントリで指定されているCollaboratorサーバのパブリックIPアドレス。 | ns2.somedomain.netのA(またはAAAA)レコードでしょう。 |
Local_IP_1
|
Collaboratorサーバの実際のIPアドレス。 | 10.20.0.160 |
Local_IP_2
|
Collaboratorサーバの実際のIPアドレス。 | 10.20.0.161 (Local_IP_1とは異なるべきです) |
Collaborator_External_IP
|
Collaboratorサーバのパブリックアドレスの1つ。 | 10.20.0.162 |
path_to_key_file
|
Collaboratorの秘密鍵のファイルパス。 |
/opt/collaborator/collaborator.key
|
path_to_certificate_file
|
Collaboratorの証明書のファイルパス。 |
/opt/collaborator/collaborator.crt
|
設定ファイルのサンプルと、使用可能な各オプションの説明は次の通りです:
{ "serverDomain": "Your_Collaborator_Domain", "workerThreads": 10, "interactionLimits": { "http": 8192, "smtp": 8192 }, "eventCapture": { "localAddress": "Local_IP", "publicAddress": "Collaborator_External_IP", "http": { "ports": 80 }, "https": { "ports": 443 }, "smtp": { "ports": [ 25, 587 ] }, "smtps": { "ports": 465 }, "ssl": { "certificateFiles": [ "path_to_key_file", "path_to_certificate_file" ] }, "canonicalName": "<FQDN>" }, "polling": { "localAddress": "Local_IP", "publicAddress": "Collaborator_External_IP", "http": { "port": 9090 }, "https": { "port": 9443 }, "ssl": { "certificateFiles": [ "path_to_key_file", "path_to_certificate_file" ] }, "canonicalName": "<FQDN>" }, "metrics": { "path": "url_to_metrics", "addressWhitelist": [ "21.10.23.0/24" ] }, "dns": { "interfaces": [ { "name": "NS_record_label_1", "localAddress": "Local_IP_1", "publicAddress": "External_IP_Nameserver_A_Record1" }, { "name": "NS_record_label_2", "localAddress": "Local_IP_2", "publicAddress": "External_IP_Nameserver_A_Record2" } ], "ports": 53 }, "logLevel": "INFO" }
設定ファイルでサポートされている定義は次の通りです:
serverDomain
|
Collaboratorサーバが制御するドメインまたはサブドメイン。この設定は、DNS機能に必須です。 |
workerThreads
|
Collaboratorが受信リクエストの処理に使用するスレッド数。 |
eventCapture.localAddress
|
デフォルトで、通信イベントをキャプチャするためにすべてのローカルインタフェースをリッスンします。指定した場合、設定したインタフェースのみリッスンします。 |
eventCapture.publicAddress
|
通信イベントのキャプチャに使用するパブリックIPアドレス。 |
eventCapture.http.ports
|
HTTP通信イベントをリッスンするポート。ポート80が転送されている場合のみデフォルトから変更する必要があります。 |
eventCapture.https.ports
|
HTTPS通信イベントをリッスンするポート。ポート443が転送されている場合のみデフォルトから変更する必要があります。 |
eventCapture.smtp.ports
|
SMTP通信イベントをリッスンするポート。ポート25と587が転送されている場合のみデフォルトから変更する必要があります。 |
eventCapture.smtps.ports
|
SMTPS通信イベントをリッスンするポート。ポート465が転送されている場合のみデフォルトから変更する必要があります。 |
eventCapture.https.hostname
|
自己署名証明書を生成する際に使用されます。詳細は、TLS設定を参照してください。 |
eventCapture.canonicalName
|
通信イベント用にCNAMEレコードを設定する際に使用されます。 |
interactionLimits
|
HTTPまたはSMTP通信の受信メッセージについて、メッセージごとの保存される最大バイト数の設定に使用されます。 |
polling.localAddress
|
Collaboratorはデフォルトで、通信イベントのキャプチャとポーリングリクエストに、同じネットワークインタフェースを使用します。指定した場合、ポーリングリクエストに別のインタフェースが使用されます。 |
polling.publicAddress
|
ポーリングリクエストに使用するパブリックアドレス。 |
polling.http.port
|
HTTP経由のポーリングに使用するポート。標準ではないポートに設定できますが、Burp Suiteがそれを使用するように設定する必要があります。 |
polling.https.port
|
HTTPS経由のポーリングに使用するポート。標準ではないポートに設定できますが、Burp Suiteがそれを使用するように設定する必要があります。 |
polling.https.hostname
|
自己署名証明書を生成する際に使用されます。詳細は、TLS設定を参照してください。 |
polling.canonicalName
|
ポーリングリクエスト用にCNAMEレコードを設定する際に使用されます。 |
metrics.path
|
メトリクスページにアクセスするためのURLパス。 |
metrics.whitelist
|
メトリクスページにアクセスを許可するクライアントIPアドレスのホワイトリスト。 |
dns.ports
|
DNSクエリのリッスンポート。53 番ポートを転送している場合のみデフォルトから変更する必要があります。 |
dns.interfaces
|
DNSクエリをリッスンするローカルインタフェースのリスト。各権威ネームサーバに異なるIPアドレスを設定するようレジストラが要求する場合、複数のネットワークインタフェースを使用し、それらの場所をこのオプションで設定できます。 |
dns.interfaces.name
|
このインタフェースで実行するネームサーバのホスト名(FQDNではありません)。FQDNは、この値にserverDomain に付けて生成されます。たとえば、ns1 の場合、ns1.burpcollaborator.example.com になります。各ネームサーバに異なるホスト名を使用してください。
|
dns.interfaces.localAddress
|
このネームサーバにバインドするローカルアドレス。 |
dns.interfaces.publicAddress
|
設定されたローカルアドレスに対応するパブリックIPアドレス。通常、ドメインのDNSレコードに、設定されたホスト名とパブリックIPアドレスを使用する必要があります。 |
logLevel
|
標準出力に表示するログ出力レベル。 |
customDnsRecords.label
|
カスタムDNSレコードのDNSラベル(例: _acme-challenge)。 |
customDnsRecords.record
|
ラベルに対応するカスタムDNSレコード。 |
customDnsRecords.type
|
カスタムDNSレコードのタイプ。現在のところ、TXTまたはCNAMEのいずれか。 |
customDnsRecords.ttl
|
レコードの生存時間(秒単位)。 |
customHttpContent.path
|
カスタムHTTPコンテンツのパス。 |
customHttpContent.contentType
|
カスタムコンテンツのレスポンスヘッダに追加するMIMEタイプ。 |
customHttpContent.base64content
|
BASE64でエンコードされたコンテンツ。パスがリクエストされるとデコードして返される。 |
Burp Collaboratorは、テスト対象システムからの通信キャプチャと、Burp Suiteによるポーリングリクエストを提供するために、HTTPSとSMTPSサービスを実行します。通常は、Collaboratorが使用しているドメイン名のワイルドカードTLS証明書が設定されている場合のみ、CollaboratorサーバへのTLS接続は成功します。Collaboratorの設定ファイルでTLS証明書を設定できます。
ドメインに対する有効なワイルドカードTLS証明書を持っていない場合、Burp Collaboratorは自己署名の証明書を生成できます。たとえば、次の設定で *.burpcollaborator.example.com
の自己署名ワイルドカード証明書が作成されます:
"ssl": { "hostname": "burpcollaborator.example.com" }
テスト対象のサーバで信頼する証明書にインストールできるか、対象アプリケーションがTLS証明書の検証を行わない場合は、自己署名証明書で十分でしょう。
ドメイン用の有効なワイルドカードTLS証明書を購入していれば、認証局(CA)から証明書を取得し、Collaboratorサーバにインストールできます。この例では、OpenSSLで証明書署名要求(CSR)を作成し、CAは証明書と中間証明書を提供しています。
OpenSSLの秘密鍵のデフォルトフォーマットは、伝統的なSSLeayフォーマットになっています。Collaboratorサーバにインストールする前に、これらをPKCS8に変換する必要があります。この変換を行うOpenSSLコマンドは次の通りです:
openssl pkcs8 -topk8 -inform PEM -in keys/burpcollaborator.example.com.key -outform PEM -out keys/burpcollaborator.example.com.key.pkcs8 -nocrypt
Collaboratorの設定ファイルでTLS証明書を設定できます。次の設定ファイルの例では、秘密鍵、証明書、中間証明書を読み込む方法を示しています。
"ssl": { "certificateFiles": [ "keys/burpcollaborator.example.com.key.pkcs8", "keys/burpcollaborator.example.com.crt", "keys/intermediate.crt" ] }
証明書ファイルは正しい順序(秘密鍵、証明書、中間証明書)で指定する必要があります:
また、Java keytoolを使用してCSRを生成し、結果として得られる証明書をサーバのJavaキーストアにインポートできます。この場合、次の設定で証明書をCollaboratorサーバに読み込みます:
"ssl": { "keystore": { "path": "myKeystore.jks", "password": "myPassword" }
通信イベントとポーリングを個別のネットワークインタフェースに設定した場合、インタフェースごとに個別のTLS設定が必要です。
Collaboratorサーバは、クライアントからの2種類の受信通信をサポートします。
Collaboratorサーバはデフォルトで、通信イベントとポーリングリクエストの両方の通信を、同じネットワークインタフェースで処理します。必要に応じて、ポーリングリクエストに異なるインタフェース(またはポート)を使用するように設定できます。この機能は、ファイアウォール制限の回避や、ポーリング機能をネットワーク層でアクセス制御する場合に使用できます。
Collaboratorの設定ファイルの"polling"オプションセクションで、個別のポーリングインタフェースを設定できます。
"polling": { "publicAddress": "<外部IP>" },
このポーリングインタフェースの例では、カスタムポート、HTTPS、自己署名証明書を使用しています:
"polling": { "localAddress": "<ローカルIP>", "publicAddress": "<外部IP>", "http": { "port": 9090 }, "https": { "port": 9443 }, "ssl": { "hostname": "collaboratorpolling.example.com" } },
通信用とポーリング用インタフェースに、同じワイルドカードTLS証明書も使用できます。その場合、CollaboratorサーバのDNSサービスでポーリングリクエストが正しいインタフェースに向くよう設定してください。
CollaboratorサーバのDNSサービスにリクエストを誘導するには、プロジェクトオプション > その他以下のBurp Collaboratorサーバオプションでサーバの場所を設定する必要があります。Burp Suiteはポーリングリクエストを行うときに自動的に、サーバドメインの前にpolling.
を追加します。
CollaboratorのDNSサービスはポーリングサブドメインを、分離したポーリングインタフェースのパブリックIPアドレスに名前解決します。これにより、Burpクライアントで複雑な設定を行わなくても、通信用とポーリング用に別々のインタフェースを使用できます。
また、CollaboratorサーバがCNAMEを使用するように設定もできます。そのためには、イベントやポーリングインタフェースに、次のセクションを追加します:
"eventCapture": { "canonicalName": "<FQDN>" }, "polling": { "canonicalName": "<FQDN>" }
CNAME設定を使用する場合、DNSクエリの種類にかかわらず、ドメイン内のラベルが一致すればCNAMEレコードが返されます。
次のポーリングインタフェースの例では、カスタムポート、HTTPS、CNAME設定、CA発行の証明書を使用しています:
"polling": { "localAddress": "<Local_IP>", "publicAddress": "<External_IP>", "http": { "port": 9090 }, "https": { "port": 9443 }, "ssl": { "certificateFiles": [ "path_to_key_file", "path_to_certificate_file" ] }, "canonicalName": "<FQDN>" },
内部CAに署名された証明書を使用している場合は、Javaのトラストストアに正しい証明書があるか確認する必要があります。
保存される通信メッセージのサイズを制限するように、Collaboratorサーバーを設定できます。
次の設定は、バイト単位で設定された制限値まで、SMTPとHTTPのメッセージを切り詰めます。
"interactionLimits": { "http": 8192, "smtp": 8192 },
この設定で、Collaboratorサーバーの負荷が軽減されます。大規模なチームで同時にCollaboratorを使用するユーザには便利でしょう。小規模なチームや一人のテスターでは、サーバへの負荷がすでに低いので、有用ではないかもしれません。
Collaboratorサーバは、管理者がサーバのパフォーマンスや負荷を監視するためのさまざまな使用率のメトリクスを収集します。Collaboratorのマシンがその使用レベルに十分耐えうるかを確認するためにこれらのメトリクスが有用です。通信イベントやポーリングリクエストから抽出されたデータは、このメトリクスにはまったく含まれていない点に留意してください。
Collaboratorサーバのポーリングインタフェース経由でメトリクスデータにアクセスでき、共有秘密URLとクライアントIPアドレスのホワイトリストでアクセスを制御できます。メトリクスはデフォルトで無効で、Collaborator設定ファイルの"metrics"オプションセクションを使用すると有効になります。例:
"metrics": { "path": "jnaicmez8", "addressWhitelist": [ "21.10.23.0/24" ] },
この設定では、21.10.23.0/24ネットワーク上のクライアントが次のURLにアクセスすると利用できます:
https://10.20.0.159/jnaicmez8/metrics
設定ファイル
で、標準出力へのログ出力レベルを設定できます。使用可能な値は次の通りです:
サーバを配備したとき、Burp Suite Professionalを使用して、正しく動作しているか確認できます。Burp Suiteで、Burp Collaborator Serverオプションの詳細を設定し、ヘルスチェックを実行してください。するとBurpはCollaboratorの各機能を順番にテストしていきます。
プライベートCollaboratorサーバ上のほとんどのURLはデフォルトで、Burp Collaboratorに関する基本的な情報を提供する単純なページを表示します。しかし、カスタムURLを定義して、カスタムコンテンツも返せます。たとえば、組織やサービスの目的を示す独自のインデックスページを作成できます。
またこの機能を使用して、任意のURLでファイルも返せます。たとえば、TLS証明書要求を検証する際に、ドメインを所有していることを証明するために特定のURLにファイルを置くようCAが要求する場合があります。カスタムrobots.txt
ファイルやcrossdomain.xml
ファイルの配置も可能です。
カスタムURLを定義するには、設定ファイルのトップレベルに配列 customHttpContent
を追加します。この配列では、定義したいURLごとにオブジェクトを作成します。各オブジェクトに、次のプロパティを指定する必要があります:
path
- Collaboratorサーバ上でこのリソースにアクセスできるパス
contentType
- リソースのMIMEタイプ
base64Content
- Base64でエンコードした、このURLで提供する実際のコンテンツ
たとえば、次の設定を追加すると、カスタムインデックスページがルートパスに設定され、/info/readme.txt
にreadme
ファイルが追加されます:
"customHttpContent": [ { "path": "/", "contentType": "text/html", "base64Content": "PCFkb2N0eXBlIGh0bWw+Cgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8dGl0bGU+RXhhbXBsZSBQYWdlPC90aXRsZT4KCiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvbXlzdHlsZXNoZWV0LmNzcyI+CjwvaGVhZD4KPGJvZHk+CjxoMT5XZWxjb21lIHRvIG15IGV4YW1wbGUgcGFnZTwvaDE+CjxwPlRoYW5rcyBmb3IgdmlzaXRpbmcgbXkgZXhhbXBsZSBwYWdlLjwvcD4KPC9ib2R5Pgo8L2h0bWw+" }, { "path": "/info/readme.txt", "contentType": "text/plain", "base64Content": "VGhpcyBpcyB0aGUgcmVhZG1lIGZpbGUgZm9yIG15IGNvbGxhYm9yYXRvciBzZXJ2ZXIu" } ]
TXTとCNAMEのカスタムDNSレコードを追加できます。これはドメイン検証の際にDNSチャレンジが行われる場合にCollaboratorサーバが対応できることを目的としています。1つのラベルに複数のTXTレコードを指定できますが、CNAMEレコードは1つだけです。設定例は次の通りです:
label
の値は、問合せの対象になるサブドメインです。record
の値は、サーバが応答する値です。
"customDnsRecords": [ { "label": "_acme-challenge", "record": "275fe5b909adb10e41c78066e9485f7d", "type": "TXT", "ttl": 60 }, { "label": "queried_subdomain", "record": "reponse", "type": "TXT" }, { "label": "queried_subdomain", "record": "response", "type": "CNAME" } ]
ttl
の値はオプションで、秒単位です。
たとえばこのエントリをburpcollaborator.example.com
の設定ファイルに追加し、ネームサーバへ_acme-challenge.burpcollaborator.example.com
のTXTタイプを問い合わせると、275fe5b909adb10e41c78066e9485f7d
が返ってきます。
customDnsRecords.label
|
カスタムDNSレコードのDNSラベル(例: _acme-challenge)。 |
customDnsRecords.record
|
ラベルに対応するカスタムDNSレコード。 |
customDnsRecords.type
|
カスタムDNSレコードのタイプ。現在のところ、TXTまたはCNAMEのいずれか。 |
customDnsRecords.ttl
|
レコードの生存時間(秒単位)。 |
Collaboratorサーバに問題がある場合は、次を試してください:
サーバドメインがCollaboratorサーバのIPアドレスに解決されるか確認してください。
されない場合は、ドメインのレコードが正しくない可能性があるため、ドメインのNSレコードが期待されるネームサーバに解決されるか確認してください。例:
dig burpcollaborator.example.com NS +noall +answer +short ns1.burpcollaborator.example.com
これが正しい場合は、このエントリに対応するCollaboratorのIPアドレスに解決されるように、A/AAAAレコードがあるか確認してください。例:
dig ns1.burpcollaborator.example.com A +noall +answer +short 192.168.0.1
Collaboratorサーバのランダムなサブドメインを名前解決した場合、そのパブリックIPアドレスが返されるか確認してください。例:
dig randomsubdomain.burpcollaborator.example.com A +noall +answer +short ns1.burpcollaborator.example.com 192.168.0.1
失敗する場合は、Collaboratorのログと設定を確認してください。また、UDPのポート53のトラフィックが開いているか確認してください。