質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • PHP

    21390questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • proxy

    129questions

    proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

$_SERVER['HTTP_X_FORWARDED_HOST'] の値を偽装する方法

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 463

kokkosan

score 5

$_SERVER['HTTP_X_FORWARDED_HOST'] の値を偽装する方法ってありますか?
単にプロキシ(フォワードプロキシ)を通しただけでは値は変わりませんでした。

$_SERVER['HTTP_X_FORWARDED_HOST'] = host1 (host1はリバースプロキシ)
となっているところを
$_SERVER['HTTP_X_FORWARDED_HOST'] = host1, host2(もしくは HTTP_X_FORWARDED_HOST = host2, host1)

に改ざんする方法を知りたいです。

悪用するわけでなく、
wikiにはX-Forwarded-For自体が信憑性に欠けるため、与えられた情報は慎重に取り扱うべきであるとあるのですが、
どのように扱えばいいのかを判断する根拠がないので、どんな改ざんをすれば HTTP_X_FORWARDED_HOST に
どのような値が入ってくるのか、手口を知っておきたいのです。

X-Forwarded-For(wiki)
https://ja.wikipedia.org/wiki/X-Forwarded-For

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+5

クライアントが偽装する話であれば、単にX-Forwarded-Forヘッダを付加するだけだと思いますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/17 02:39

    ご回答ありがとうございます!
    私の知識が乏しく、実現方法がわからないためご質問させていただきたいのですが、

    ヘッダを追加するには、わざわざ自分でWEBサーバを立て(もしくはホスティングサーバやクラウドなどを利用し)、
    そこに例えばPHPモジュールなどを置いて、そのPHPモジュール内でヘッダを追加する一文を追加し、
    そのモジュール経由でお目当のサーバにアクセスすればいいのでしょうか。

    PC(Client)→ hostA(リバースプロキシ)→ hostB(Apache)

    から

    PC(Client)→ hostC(新サーバ) → hostA(リバースプロキシ)→ hostB(Apache)

    になるイメージ。
    新たにWEBサーバを立てずに、X-Forwarded-Forヘッダを追加してhostBにアクセスする方法はありますでしょうか…?

    キャンセル

  • 2018/07/27 11:32

    curlなりwgetなりでもヘッダの付加機能はありますし、ブラウザ拡張でヘッダを加工することも可能です。

    キャンセル

  • 2018/07/31 11:45

    ありがとうございます!試してみます!

    キャンセル

  • 2018/08/02 17:02

    試してみました。
    curl -H 'X-Forwarded-Host:www.test.com, www.test2.com' https://www.xxxxxxxx.co.jp/

    PHP側でサーバー変数をvar_dumpして確認すると
     HTTP__X_FORWARDED_HOST => www.test.com, www.test2.com

    サーバー変数に新しく追加されてはいますが、アンダースコアが2つついてて、HTTP_X_FORWARDED_HOST に対して上書きはされていない模様。
    (HTTP_X_FORWARDED_HOST は上書きされることなく、残っている。)

    やり方がまずいのかも…もう少し調べてみます。

    キャンセル

  • 2018/08/03 15:08

    Linuxでやったらできました。インストールしたcurlがWinだとダメだったのだろうか…
    ひとまず解決しましたので、ここはクローズします。ありがとうございました!

    キャンセル

0

【操作】
curl -H 'X-Forwarded-Host:www.test.com, www.test2.com' https://www.xxxxxxxx.co.jp/

【結果】
リーバスプロキシ:www.test3.com を最後に通ってアクセスされた場合は、

$_SERVER['HTTP_X_FORWARDED_HOST'] = www.test.com, www.test2.com, www.test3.com

となる。www.test3.comはモジュールの直前の接続先のため、最も信頼性が高く改ざんが難しいが、
その他の情報についてはいくらでも改ざん可能のため、信頼性が低いことがわかった。
(wikiに書いてあるとおり)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    21390questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • proxy

    129questions

    proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。