web-dev-qa-db-ja.com

httponlyを設定すると、XSSを使用してセッションを盗むことはできますか?

セッショントークンがhttponlyが設定されたCookieに保存されている場合、XSSの脆弱性により悪意のあるユーザーがユーザーのセッショントークンを盗む方法はありますか?

18
Abe Miessler

一般に、トークンにhttponlyが設定されている場合、XSS攻撃はセッショントークンを取得できません。ブラウザやプラグインの過去のバグ、サーバーの設定ミス(例:HTTP TRACEへの応答)のモジュロ。

しかし、それはあまり価値がありません。 XSSがトークンを取得しないようにすることはできますが、XSS攻撃はユーザーのマシン上のセッションを完全に制御できます。これにより、ユーザーはサイト上でほとんど何でもすることが強制されたり、サイトへのユーザーのインターフェースが改ざんされたりする可能性があります(たとえば、サイトの認証情報をフィッシングするため)。攻撃者が侵害されたセッションで達成できることの例については BeEF を参照してください。

httponlyを設定しないことで、ユーザーがブラウザウィンドウを開いたままにしておく時間に制限されるのではなく、自分のマシンから自分の時間にセッションにアクセスできるため、攻撃者の生活が少し楽になります。可能であればhttponlyを使用する価値はありますが、XSSの影響から魔法のようにあなたを保護しない穏やかな緩和策です。

19
bobince

一部のブラウザーおよびWebサーバーの特定のバージョンでは、HttpOnly機能をバイパスできます。
その他のデータ (natexim)
その他のデータ (google)

XSS攻撃は非常に柔軟性が高いため、たとえば、HttpOnly機能を使用してJSおよびETCからCookieを隠す場合でも、攻撃を実行できます。
他の可能なシナリオには、CSRFトークンのバイパス、ブラウザの弱点の悪用、内部Webページのなりすましなどがあります。

4
Sajjad Pourali

正しく実行された場合、HttpOnlyは攻撃者がCookieを盗むのを防ぎます。ただし、被害者のユーザーになりすまして任意のWebリクエストを実行し、応答を抽出することはできます。たとえば、BEEFにはこれを行うためのモジュールがあります。

言い換えれば、HttpOnlyは攻撃者にとって事態を難しくしますが、熟練した攻撃者を阻止しません。

また、他の人が指摘したように、攻撃者がHttpOnly Cookieを抽出することを可能にするさまざまな欠陥があります。

結論-すべてのXSSは潜在的に深刻であり、XSSの欠陥を修正する必要があります。

4
paj28

はい。主に。ヘッダーは、スクリプトがセッションをハイジャックする簡単な方法である「Cookieの盗用」を防ぎます。

また、ブラウザーがHTTPonlyヘッダーをサポートしているかどうかにも依存します。そうでない場合は無視され、作成される機能は発生しません。

これは、ヘッダーをもう少し説明するリンクです。また、それをサポートするブラウザーを示す表も含まれています。 https://www.owasp.org/index.php/HttpOnly

2
DCIndieDev