web-dev-qa-db-ja.com

Charles SSL Proxyで機密データが表示された場合、そのデータは安全ではない/公開されていますか?

今日私は学生の成績と学校に関連するすべてを追跡するために使用されるウェブサイトを探っていました。基本的に、私の国の90%の学校で使用されている、子供向けの学校進捗トラッカーのようです。

Charlesプロキシを起動して電話を接続し、Charlesのルート証明書をインストールして、httpsを使用できるようにしました(サイトで使用しています)。とにかく、私はサイトにログインして、チャールズが捕獲したものをチェックしました。

すべてのログイン資格情報を含む4つのフィールドを持つ単純なajax呼び出しをキャプチャしました。これがスクリーンショットです:

enter image description here

すべてにラベルが付けられています。uporabnikは「ユーザー」を意味し、gesloは「パスワード」を意味します。これを正しく理解している場合(私は本当に初心者です)、これをキャプチャできた人なら誰でも見ることができますか?

これはプロキシでのみ可能ですか、それともたとえばwiresharkでこれを実行して、無線LAN経由でパケットをキャプチャするだけですか?

私の仮定は本当ですか?それが真実である場合、私はそれについて何をすべきですか?

22
K.Vovk

TLSの機能を根本的に誤解しているようです。

TLSは通常のプレーンHTTPトラフィックを取得して暗号化し、整合性チェックを追加します。これにより、サーバーの証明書と一緒に、

  • 機密性:ネットワークトラフィックをキャプチャする攻撃者は、通信の内容を読み取ることができません。
  • 整合性:攻撃者がネットワークトラフィックを変更すると、エラーが発生します。
  • Authenticity:通信相手が、通信先と思われるサーバーであることを確認できます。 (すぐにこれに到達します。)

基礎となるHTTP通信を見ると、ユーザー名とパスワードがプレーンテキストで表示されます。これは、サーバーに送信したものだからです。

プロキシは現在何をしていますか?

CharlesなどのTLSプロキシを使用する場合、基本的にはプロキシと通信し、プロキシはWebサーバーと通信します。では、攻撃者がTLSプロキシを使用するのを阻止するものは何でしょうか。証明書!

TLSプロキシをインストールすると、プロキシが新しいCA証明書を生成し、それをインポートしました。これは、プロキシにanyドメインの証明書を作成する権限を与えたことを意味します。プロキシであることを目的として、これは問題ありません。

ただし、攻撃者が証明書をインポートする(または自分の秘密鍵を盗む)必要があるため、プロキシによって証明書を信頼する必要があります。

それで、これは今問題ですか?

いいえ、ちがいます。すべてが想定どおりに機能しています。 1日の終わりに、ユーザー名とパスワードをWebサイトに送信するとき、それはなんとなく実際にそのWebサイトに到達する必要があります。

48
MechMK1

ほとんどのWebサイトがログインをどのように処理すると思いますか? POSTデータでユーザー名とパスワードを送信し、後でセッションCookieを使用してログインしたユーザーを認識します。クライアント側で資格情報をハッシュする理由はなく、変数名を難読化する必要はありません。 uporabnikまたはugcbuzsqがユーザー名を運ぶ変数であることを理解するのも同じくらい簡単です。

そのため、接続はTLSを使用して暗号化されます。また、Charlesプロキシのルート証明書をインストールする前にこの情報を表示できなかったのもこのためです。

4
Esa Jokinen