ワークショップ受付クライアントを再接続する

NmapBeginner
オンラインで実践に進む

はじめに

Willow Workshop は CLAY-OPEN の参加者名簿を必要としています。しかし名簿クライアントは、閉じられた古いポートを参照したままです。同じ訓練環境には、便利な参照用サービスと、維持すべきアーカイブもあります。現在のサービスを見つけ、クライアントを再接続して、現在の完全な名簿を保存してください。

Nmap を使い、開いたポート、識別されたプロトコル、実際に必要な業務を区別します。基本的な端末とパスの知識があれば十分で、必要なオプションは説明します。人物とレコードはすべて合成データです。これらは 1 つの訓練用コンテナ内の実際の HTTP サービスであり、別々のマシンではありません。終始 Terminal タブを使います。スキャン対象は 127.0.0.2 の TCP ポート 8100-8199 のみです。サービスとプラットフォーム設定は変更しないでください。

正常な名簿を読み取る

このステップでは、失敗する接続を調べる前に、正常な業務クエリを確認します。Terminal から始めます。cd はこのシェルの作業ディレクトリを変更します。以後の相対パスはこの場所を基準とします。別の端末を開いた場合は再実行してください。

cd /home/labex/project/workshop

準備された workshop-client は小さな HTTP クライアントです。./ は現在のディレクトリ内のプログラムを選びます。接続先ファイルからベース URL を 1 つ読み、/roster.tsv を要求し、レコードを表示して応答をそのまま保存します。別のサーバーを探したり設定を修復したりはしません。--endpoint は接続先ファイル、--save は出力ファイルを指定します。テキストファイルを表示する cat で参照用アドレスを読みます。

cat reference.txt

http://127.0.0.2:8120 が表示されます。アドレスは宛先を、コロンの後のポートは待ち受けサービスを指定します。HTTP はこのクライアントの要求と応答のプロトコルです。

./workshop-client --endpoint reference.txt --save reference-roster.tsv

Session: ORIENTATION、2 レコード、Saved 2 records to reference-roster.tsv を確認します。ファイルは TSV 形式で、ヘッダーとレコードの各列をタブ文字で区切ります。session_id は対象の回を識別し、残りの列は参加者と品物を記述します。これは正常な参照例であり、CLAY-OPEN の結果ではありません。

--endpoint がない場合、クライアントは endpoint.txt を読みます。確認してください。

cat endpoint.txt

現在の設定を試します。

./workshop-client --save roster.tsv

このコマンドは意図どおり失敗し、Client error と接続拒否の説明が出ます。古いポートには待ち受けプログラムがありません。接続の失敗であり、HTTP 権限拒否や名簿形式の問題ではありません。失敗時に名簿は保存されません。reference.txt、クライアントプログラム、全サービスは変更しません。endpoint.txt の変更と、この作業場所での証拠・ダウンロードファイル作成は許可されています。

許可されたサービスのポートを探す

このステップでは、アプリケーションを推測せずに候補ポートを探します。Terminal の /home/labex/project/workshop に留まってください。TCP ポートの open は接続を受け付けたことを示しますが、どの回を提供するかは分かりません。

Nmap の既定スキャンはよく使うポートの集合を調べ、全ポートを調べるわけではありません。許可範囲は 8100-8199 全体です。-sT は TCP connect スキャンで、ここでは生パケットの権限が不要です。-n は逆引きを省略し、-p はポート範囲を指定します。-oX は構造化 XML を保存し、同時に Nmap は読みやすい結果も表示します。XML は対象、プロトコル、ポート、状態を関連付けて後の確認に残します。

nmap -sT -n -p 8100-8199 -oX ports.xml 127.0.0.2

TCP ポート 8120、8142、8187 が開き、範囲内の残りは閉じているはずです。SERVICE 列には慣例的な名前や unknown が表示されます。能動的な識別がなければポートデータベースの手掛かりであり、実際のアプリケーションの証明ではありません。開いていることや見慣れた名前だけでサービスを選ばないでください。

対象や範囲の入力ミスは誤解を招きます。修正したコマンドを再実行して ports.xml を置き換えます。後でファイルが見つからない場合は pwd で現在位置を確認し、ステップ 1 の cd で戻ります。プラットフォームのアドレスやポートへ範囲を広げないでください。

候補サービスを識別する

このステップでは候補を識別し、業務の説明を比較します。Terminal を使い続けます。-sV はアプリケーションのプローブを送り、--version-light は小さなプローブ集合で不要な処理を抑えます。製品バージョンが分からなくても、サービス故障の証拠にはなりません。

Nmap Scripting Engine、略して NSE は、目的を絞ったアプリケーション要求を行えます。必要な 1 つのスクリプトのヘルプを読みます。

nmap --script-help http-title

http-title は HTML ページのタイトルを取得します。引き継ぎ情報では、3 候補はワークショップの HTTP 接続先とされています。先頭の + は、古いプロトコルデータベースが特殊なポートやヘッダーを認識できなくても、そのスクリプトを明示的に実行します。既知の HTTP 範囲だから適切なのであり、無関係なサービスに任意のスクリプトを強制実行する理由にはなりません。--script-args は名前付き引数を渡し、http-title.url=/about は既定パスでなく説明ページを要求します。

nmap -sT -n -sV --version-light --script=+http-title --script-args=http-title.url=/about -p 8120,8142,8187 -oX services.xml 127.0.0.2

Nmap done まで待ちます。http-title の行を比較してください。Orientation は参照用、Clay Archive は古い回、Clay Open Studio は CLAY-OPEN の候補です。現在の接続先のポートは 8187 です。VERSION 列は変動し、明示した HTTP スクリプトが動作しても unknown になることがあります。架空のバージョンを決め付けず、実際のスクリプト応答を読みます。

タイトルは候補を絞りますが、名簿の識別や完全性を証明しません。次にクライアントで確認します。誤ったサービスを現在のものに見せるため、サーバーのタイトルやレコードを編集してはいけません。途中でスキャンを止めた場合は再実行し、完了を待ってください。不完全な XML は証拠として使えません。

再接続して現在の名簿を保存する

このステップでは、スキャンで分かったことを実際の接続設定にします。引き続き Terminal を使います。接続先ファイルには HTTP ベース URL を 1 つだけ書き、/about や /roster.tsv は付けません。リソースのパスはクライアントが付けます。

printf は書式付きの文字列を書き出します。ここで '%s\n' は文字列とその後の改行を意味します。単一引用符で中身をリテラルに保ちます。> は出力で指定ファイルを置き換えるため、変更可能な endpoint.txt のみを指定してください。

printf '%s\n' 'http://127.0.0.2:8187' > endpoint.txt
cat endpoint.txt

設定したサービスに問い合わせ、元の完全な応答を保存します。

./workshop-client --save roster.tsv

Session: CLAY-OPEN、3 人分のレコード、Saved 3 records to roster.tsv が出ます。実際に保存したファイルを確認します。

cat roster.tsv

ヘッダーに続いて W01/Ana/Clay kit、W02/Sam/Glaze kit、W03/Lee/Clay kit があり、すべて CLAY-OPEN である必要があります。アーカイブも HTTP 200 と正しい形式の名簿を返せますが、業務結果は誤りです。別の回なら接続先を修正して再実行します。ベース URL の書式が不正なら説明付きの Client error が出ます。プログラムを変更せず、その URL だけを置き換えてください。

最後に参照用を再度読み、既存の有用な機能が残っていることを確認します。

./workshop-client --endpoint reference.txt --save reference-roster.tsv

引き続き ORIENTATION が返り、現在の名簿は roster.tsv に残ります。アーカイブも元の用途で利用可能なままです。サーバー再起動、サーバー設定修復、サービス削除は必要ありません。

まとめ

許可された TCP ポートを探し、能動的なサービスと HTTP の証拠を集め、実際のクライアントを正しい回に再接続しました。完全な名簿、正しい接続先、維持された参照用・アーカイブサービスが結果を示します。開いたポート、見慣れた名前、製品バージョン、HTTP 200 だけでは不十分です。