skillup

技術ブログ

サーバー・ネットワーク

HTTPヘッダ・インジェクション+オープンリダイレクタ

投稿日:2017年2月8日 更新日:

HTTPヘッダ・インジェクションとは?

通常Webでサイトにアクセスをする場合、ブラウザからサーバーにリクエストを送り、サーバーからはレスポンスが返されます。

リクエスト時のデータに、悪意のあるコードが埋め込まれると場合によってはレスポンスボディが改ざんされ、本来と違ったWebコンテンツが表示される可能性があります。

といいますか、下記URLの説明を写しただけですが(汗)。

【HTTPヘッダインジェクション】の仕組みと対策のまとめ記事

被害(ほぼクロスサイト・スクリプティング攻撃による脅威と同じ脅威)

  • Webサイトを閲覧していて意図しない操作をさせられてしまう(GET句にリダイレクトなどの処理を埋め込まれる)
  • ニセのCookie発行(これまたGET句にSetCookieなどを入れるなど)
  • 複数のレスポンスに分割し、任意のレスポンスボディをリバースプロキシなどにキャッシュさせることにより、キャッシュ汚染を引き起こし、ウェブページの改ざんと同じ脅威が発生します。
  • htmlエスケープ

対策

  • ヘッダの出力を直接行わず、ウェブアプリケーションの実行環境や言語に用意されているヘッダ出力用APIを使用する。要はGET句などからHTTPヘッダーになるような値の挿入を行わない。
  • 改行コードを適切に処理するヘッダ出力用APIを利用できない場合は、改行を許可しないよう開発者自身で適切な処理を実装する(Perlの場合、HTTPヘッダを自力でかくことが多いため、このタイプの問題が起こりがち)。クッキーには改行が入る可能性があるため、この場合はパーセントエンコーディングなどを行う。

オープンリダイレクタとは?

リダイレクト先をGET句などで動的に指定する仕様のことです。

このアプリの場合、悪意のあるページにリダイレクとさせて個人情報を盗まれるなどの危険性があります。(フィッシング詐欺などが典型的な例です。)

対策

  • そもそも動的なURLを設定しない
  • やむをえず入れる場合、正規表現などのチェックを入れる

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

form以外でのPOST送信(というかHTTP通信全般)

前回の記事に引き続きですが、APIを叩く側はformでデータを送るのではなく、コードの中にPOSTする処理を書きます。 選択肢としては curlコマンドを使う file_get_contentsを使う …

no image

SSLに関して(主にオレオレSSLの作成方法など)

Contents1 HTTPSとは1.1 概要説明1.2 SSL費用の違いについて2 オレオレSSL2.1 秘密鍵作成コマンド2.2 公開鍵作成コマンド2.3 オレオレSSL証明書の作成3 webサー …

no image

ファイル一括検索 xargsを利用した置換

実務でよくあるファイル一括置換。 sedに関しては以前も触れましたが使用範囲は多いですね。

ちなみにオプションがすごく大事でxargs …

no image

docker上でミニサービスを起動させるまで

dockerで何とかホストOS上でサービスを起動させるところまでは終了。 Contents1 やったこと2 苦戦したこと やったこと CentOSのイメージを取得 [crayon-5f09c1dbeb …

no image

追跡ブランチからローカルブランチを作る方法~ (svn→gitの移行など)

SVNで運用されていたプロジェクトをgitに移行する機会があったのでその時のメモなどを。 思ってたよりは楽だったかな・・・ Contents1 準備2 実際の移行(git svn clone)3 gi …