web-dev-qa-db-ja.com

Webサイトから発行されたリクエストのHTTPホストヘッダーのコンテンツを制御するにはどうすればよいですか?

私のウェブサイトにリンクを投稿する方法を知っている人はいますか?アクセスすると、ユーザーはホストヘッダーにカスタムコンテンツを含むサードパーティのサイトにHTTPリクエストを発行します(実際のホスト/ドメインとは異なります)リクエストはIPレベルで送信されます)?私の意図を明確にする短い例-www.example.comに送信されたリクエスト:

GET / HTTP/1.1
Host: $$CUSTOM_PAYLOAD$$ (not www.example.com)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

CUSTOMヘッダーを使用して要求を発行することについていくつかの議論を見てきましたが、ヘッダーは受信側が受け入れた正当なヘッダーであるため、これは当てはまりません。さらに、ホストヘッダーでの悪意のある入力に依存する攻撃(主にXSSを反映)に関するさまざまな出版物を見てきましたが、それらがどのように実行されるかはよくわかりません。

6
user3074662

userにリクエストを発行させたい場合、XMLHttpRequestでこれを行うのは 不可能 です。

ヘッダーが次のヘッダーのいずれかで大文字と小文字を区別しない場合は、これらの手順を終了します。

Accept-Charset

Accept-Encoding

アクセス制御要求ヘッダー

アクセス制御要求メソッド

接続

コンテンツの長さ

Cookie

Cookie2

日付

DNT

期待する

ホスト

生き続ける

原点

リファラー

TE

トレーラー

転送エンコーディング

アップグレードする

ユーザーエージェント

Via

ただし、これは、IEと組み合わせて使用​​すると バージョン7および8のバグ が原因でFlashで可能でした。

IEでは、ヘッダー名にコロンを追加することで、より機密性の高いヘッダー(HostやContent-Lengthなど)を上書きすることもできます(この手法は、[3]のXmlHttpRequestのコンテキストで説明されています)。

req.addRequestHeader("Host:","foobar.site");

6
SilverlightFox

CURLなどのツールを使用して、リクエストを発行し、必要なリクエストを指定できます。 この投稿 は、リクエストでのHostヘッダーの設定について説明しています。

Webサイトを制御しているので、cURLまたはHostを指定できるその他のツールを使用して、リンクが独自のサーバーへのリクエストを開始し、ターゲットサイトへのカスタマイズされたHTTPリクエストを起動することができますか?ヘッダ?

サーバー側で使用しているプログラミング言語によっては、そこから直接実行できる場合があります。

3
Abe Miessler

更新:これは機能しません。試してみてOPへの称賛! 「答え」を残して他の人の時間を節約する:)

免責事項:私はこれを試していませんし、それがうまくいくかどうかわかりません:)

ページにJavaScriptが含まれている場合、理論的には XMLHttpRequest および setRequestHeader を使用して、説明したようなリクエストを生成できます。

1
gowenfawr