問題タブ [session-hijacking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Web アプリケーションに属さない JSessionId が表示されます
私は自分の VPS と静的 IP で Web サイトを運営しています。Web サイトは Java/Spring (MVC、セキュリティ) ベースのアプリケーションであり、Tomcat 7 コンテナー内で実行されます。
Tomcat マネージャー ページに移動すると、300 を超えるアクティブなセッションが表示されますが、どれも正常に見えません。すべてのセッションの属性:
私のサイトへの通常のセッションは、上記の属性とは異なる値を持っています
私のサイト セッションはボットによってハッキングされていますか?
部外者が自分の tomcat コンテナーでセッションを作成することはどのように可能ですか?
適切に対処できるように、この状況で自分が何に直面しているのかを知りたいだけです。あなたの助けに感謝します。
ruby-on-rails - Rails 4.2.4 (Devise / Warden)、Phusion Passenger 5.0.24 での意図しないセッション ハイジャック
背景の詳細
最近、ユーザー A が、ユーザー A と (ほぼ) 同時に、コントローラーが生成したダウンロードにアクセスしようとしていたユーザー B のセッションを意図せず乗っ取る可能性があるという問題が発生しました。
これが発生するために必要なすべての条件について、まだ 100% 確信しているわけではありませんが、本番環境およびステージング環境で問題を確実に再現できます。これらの環境の重要な詳細は次のとおりです。
環境の詳細
アプリケーション サーバー: Phusion Passenger 5.0.21 または 5.0.24 (両方のバージョンを試し、両方とも問題を再現したことを意味します)
フレームワーク: Rails 4.2.4
言語: Ruby 2.2.3
オペレーティング システム: CentOS 6
興味深いことに、 Phusion Passenger 4.0.53を使用してこの問題を再現することはできません。
ハイジャックを再現する手順
単純すぎて真実とは思えないかもしれませんが、必要なことはこれだけです。
- ユーザー A がシステムにログインする
- ユーザー B がシステムにログインする
- ユーザー A と B の両方が同じダウンロード ボタンを (ほぼ) 同時にすばやくクリックします
誰かのセッションが意図せずハイジャックされるのに必要なのはそれだけです。(A と B のどちらのセッションがハイジャックされるかは、ルーレットのように思えますが、見かけほどランダムではありません。)
ページに表示されている現在のセッションのユーザー名と姓を確認できるため、ユーザーのセッションがハイジャックされたことがわかります。
毎回、1 人のユーザーが別のユーザーに「なります」。
ユーザー アクセス ロールが異なる場合は、異なるレベルのアクセス権を持つ可能性があることも意味します。たとえば、誰かが意図せずにセッションをハイジャックした場合、突然管理者になる可能性があります....
必要なコード
バージョン 4 に戻すと、この問題は発生しなくなったため、最初は Phusion Passenger がこの問題を引き起こしている唯一のもののように見えました。
ただし、いくつかのコードを変更した後、コントローラー コードのメソッドがこの問題の発生に寄与しているように見えると判断しました。
Phusion Passenger 5.0.21 または 5.0.24 でこの問題を発生させる Controller メソッドの例を次に示します。
私たちの Cache-Control の修正は、この問題に非常にうまく作用しているようです。
おそらく、これを変更するべきではありませんでしたが、キャッシュ制御パラメーターが突然別のセッションに突入する力をどのように持つことができるかについて、誰かが洞察を持っていることを願っています.
これをテストするには、Controller#sample_method にマップするルートが必要であり、クリックしてこのファイルをダウンロードできるボタンが必要です。
CSV が必要であり、CSV を返さないことを指定していることに気付きましたが、この場合、CSV は別のクラスで生成されるため、実際の CSV を proc に置き換えました。
上記の環境で上記のコードを実行すると、問題が再現されます。
その他の依存関係
ユーザー認証にはDevise gemを使用しています。この問題を再現するためにテスト アプリケーションをセットアップする場合は、Devise と 2 つのアカウントのセットアップが必要です。
ちなみに、これをテストするには、2 台の別々のコンピューターで 2 人が必要になります。両方が同時にシステムにログインし、ボタンを同時に何度もクリックする必要があります。
この問題はとてつもないことのように思えますが、実際に私たちの環境で明らかになりました。それを実現するには、Phusion Passenger の特定のバージョン、特定のヘッダー セット、およびレンダー ブロックが必要ですが、実際にそうなります。(特定のコードは、「必要なコード」セクションにリストされています。)
修正
幸いなことに、コードを使用してこの問題を回避する方法があります。format.csv ブロック内で #send_data メソッドを使用できました。
コードの他のブロックの代わりに、次の行に沿って何かを実行しているだけです。
これはよりクリーンなコードであり、より優れたコードです。しかし、Passenger やコード自体に何らかの大きな問題があるのではないかと心配しています。
アイデア?
コミュニティの専門家が、このような意図しないセッション ハイジャックがどのように可能であるかを説明できるかもしれません。
おそらく、セッション Cookie が適切に送受信されていないようです。(セッションにはデータベースを使用していません。)
この問題の特定のインスタンスに対する修正はありますが、この問題が最初に現れる可能性がある他の根本的な問題 (おそらくパッセンジャーにあるでしょうか?) があるかどうかはわかりませんでした.
非常に奇妙な問題のようです。
一方で、ヘッダーで行っていたことが悪い考えだっただけかもしれません。
あなたの洞察は大歓迎です!
ruby - Windows 10 - 64 ビットに Beef をインストールする際の TheRubyRacer エラー
Windows 10 - 64 ビット PC に Beef をインストールしようとしています。次のリンクに記載されている手順に従いました。
https://github.com/beefproject/beef/blob/master/INSTALL.txt
しかし、私はこのエラーを受け取り続けます:
therubyracer (0.11.4) のインストール中にエラーが発生し、Bundler を続行できません。
gem install therubyracer -v '0.11.3'
バンドルする前に、それが成功することを確認してください。
少し掘り下げたところ、インストーラーがバージョン 0.11.3 を検索しているのに対し、インストールされている therubyracer のバージョンは0.11.0beta1 x86 -mingw32であることがわかりました。
上記のリンクでは、次の行が 38 行目に記載されています。
最後に、必要な ruby racer バージョンを上記のリンクからダウンロードしたバージョンに置き換えて、beef の gem lock ファイルを編集します。
しかし、それを行うと、次のエラーが発生します。
ロックファイルを読み取ることができません。を実行
rm Gemfile.lock
してbundle install
から、新しいロックファイルを生成します。
誰でもこれで私を助けてもらえますか?
python - Odoo 8 でセッション ハイジャックを防ぐには?
Odoo 8 で自社向けの製品を構築しています。アプリケーションがセッション ハイジャックされるのを防ぐ方法を知りたいです。そのためにいくつかの手順を実行しました:
ログインとログアウトに成功した後のセッション ID の変更。
クライアントとサーバー間のデータの暗号化にもsslを使用しました。
しかし、私の会社のセキュリティ チームは、ログインした個人の Cookie をコピーして他のブラウザに貼り付けるだけで簡単にアカウントにアクセスできると言っていたので、私の製品を承認していません。物理的に危うい。私は今何をすべきかわかりません。
これに関するヘルプはかなりのものです。
cookies - デスクトップ アプリケーションを使用したセッション ハイジャック
特定のブラウザー タブまたは特定のドメインのセッション Cookie を読み取ることができる Windows アプリケーションを作成し、それを悪意のあるユーザーがブラウザーに入力してセッション ハイジャックなどに使用することは可能ですか?
私が読んだように、Cookieはローカルファイルに保存されます。もしそうなら、それは可能ですか?または、ここで何かを見逃しましたか?
ありがとうジハード