web-dev-qa-db-ja.com

Webアプリが私のパスワードをクリアテキストで送信するかどうかを確認するにはどうすればよいですか?

Webアプリケーションが何らかの形式のクリアテキストでパスワードを送信するかどうかを確認しようとしています。問題は、Webアプリがhttpsを使用していないことです。これが、パスワードがクリアテキストで送信されるのではないかと思う理由です。

ブラウザに次のようなCookieが見つかりました。

usr=waytodoor&mdp=3C5115ECB18725EBFFF4BB11F9D17798358477D6E11E0188D54BAB80C86D38D41A16F76D8D0B253445774484FB1AE22E9FC13E257CFB9E7B7466F1BA5417EA004FCBB4E7965CA571819146A148EED15A2AEA6E47D9DF338B534264FBC99A57952212629BA79BB34BE9C8C60B73F1F681EE872C64

私が知ることができることから、usrは私のユーザー名であり、mdp(フランス語で「mot de passe」はパスワードを意味します)です。

それで、Cookieのmdpフィールドは私のパスワード(そして、もしそうなら、どうやってそれを "解読"することができるのでしょうか?)、または単にある種のトークンなのでしょうか?パスワードは7文字です。

16進数またはbase 64から変換しようとしましたが、うまくいきませんでした。

EDIT:HTTPSが使用されていないことを含むステートメント。

EDIT2:website は学生向けのウェブサイトです。パスワードは、年度の初めに学校から提供されます。それらを変更することはできません。

一部の生徒は学校のネットワークをARPしているのではないかと思います。私はできるだけ早くWebサイトから切断してCookieを無効にしようとしていますが、Cookieからパスワードを見つけられるかどうか知りたいと思っていました。

21
WayToDoor

パスワードが暗号化されているかどうかを尋ねる理由は2つあります。

  1. あなたはサイトのセキュリティを心配しています。
  2. あなたは自分のパスワードのセキュリティを心配しています。

サイトのセキュリティに関しては、HTTPSがないため、効果的なものはありません。サイトとのすべての通信をパブリックと見なし、攻撃者があなたになりすますことができると想定する必要があります。注意してサイトを使用してください。

パスワードのセキュリティに関しては、SSLがなければ問題にはなりません。誰かがあなたのセッションクッキーを盗み、あなたのパスワードを知らなくてもあなたになりすますことができます。そのため、他のサイトでパスワードを再利用しないで(またはこれまでにパスワードを再利用して)、このサイトでのパスワードの漏えいが他のサイトのアカウントを侵害しないようにしてください。

編集ARPスプーフィング に関するあなたの懸念に応えて、SSLなしでは、彼らは MiTM 。彼らがそれをしたら、彼らはクッキーを見ることができます。 Webサイトを詳細に調べないと、Cookieがパスワードを漏えいしているかどうかはわかりません。おそらくそれは安全に暗号化されているでしょう。とはいえ、MiTMを取得すると、ブラウザーに送信されるJavaScriptを変更できます。これにより、ネットワーク上で送信される内容を変更して、パスワードを取得できるようになります。そして、私はさらなる調査なしには確信が持てませんが、そのCookieは ハッシュの脆弱性を渡す のように私に見えます。その場合、Cookieの値はパスワードと同じであるため、パスワードを盗む必要はありません。これらすべては、SSLなしでは、セキュリティはありません。

35
Neil Smithline

取得したのは、232桁の16進数、つまり116バイトのデータです。通常のエンコーディングでは、プレーンテキスト文字列ではありません。パスワードのハッシュである可能性もあれば、暗号化されたパスワードである可能性もあり、簡単に元に戻せる難読化の一種である可能性もあります。または、セッション識別子など、パスワードとは完全に異なるものにすることもできます。それは何でもかまいません。パスワードやウェブアプリが使用するコードがわからない場合、それを伝えるのは困難です。

しかし、もしあなたがパスワードの安全性について心配しているならそれがネットワーク上にあるときなら、それは本当に問題ではありません。重要なのは、HTTPSを使用していることです。* HTTPSを使用すると、ユーザーとサーバーの間で送信されるすべてのものが暗号化されます。そうしないと、クライアントでどのような暗号化を試みても、中間者がパスワードを盗むことを保証する方法はありません。

通常、サーバーにパスワードを送信するときに使用される唯一の暗号化は、HTTPSが提供する暗号化です。

とはいえ、パスワードをcookieに保存する(平文、暗号化、ハッシュ化、または単に難読化されているかどうかにかかわらず)のは悪い考えです。コンピュータにアクセスできる人なら誰でもCookieを盗む可能性があり、CookieがHTTPのみでない場合は、XSSの脆弱性を利用してそれを盗む可能性もあります。

* 適切なHTTPSであることを前提として-証明書が有効であること、TLSの最新バージョンなどを使用していることなど。常に当てはまる警告と同じです。

20
Anders

Webブラウザーとサーバーの間の通信を盗聴したい場合、Webブラウザーの開発者ツール(通常はホットキー:F12)を使用してそれを行うことができます。ほとんどのブラウザには、現在のWebサイトとインターネット間のすべてのネットワーク通信がクリアテキストで記録される、ある種のネットワークタブがあります。

そこにクリアテキストのパスワードが見つかり、それがhttps接続ではない場合、それは悪い兆候です(それがis httpsの場合、送信時に暗号化されていても、ブラウザーはデータを暗号化せずに表示します-ワイヤー)。

しかし、暗号化/ハッシュ化されたパスワードをそこに見つけたとしても、それがgood暗号であるかどうかはわかりません。暗号化の仕組みを理解するまで、またはWebサイトのJavaScriptコードをリバースエンジニアリングしてその仕組みを見つけるまでは、通常、暗号解析技術を使用しないとわかりません。

7
Philipp

これは、通常これを調査する方法です。パスワードのハッシュである場合は、ハッシュ関数を使用してパスワードをテストし、出力を比較できます。この特定の(想定される)ハッシュ文字列は232桁の16進数で、928ビットに相当します。これは、RSA-280番号の正確なサイズであり、SHA-1暗号化で使用されます(他の多くのRSA番号と一緒に使用されるため、関数を試さないと確認できません)。

https://en.wikipedia.org/wiki/RSA_numbers#RSA-28

RSA-280の10進数は280(928ビット)であり、これまでのところ考慮されていません。

Webページのソースコードを開き、SHA-1(この場合)と関係のあるモジュールを見つけてから、その内部のハッシュ関数を見つけて、ブラウザーの開発ツールまたはnode.jsを使用して実行できます。この:

console.log(hashingFunction('yourpass'))

次に、出力が同じ232文字かどうかを確認します。ハッシュ関数を見つけるのは難しいかもしれませんし、難読化されているかもしれませんし、ページがロードされてからかなり後にダウンロードされるかもしれません。そしてJavaScriptの知識が明らかに必要になることに注意してください。

1
exebook

2つの可能性があります。パスワードは、その文字列にエンコードまたは暗号化されます。暗号化されている場合は、webappで定義されたキーを使用してのみ復号化できます。これは非常に安全で、解読に長い時間を必要とします。

0
Arief Karfianto