完全に安全な会議参加者の個人データ

左の写真、または私がCityCampに参加した方法については、 サンクトペテルブルクへも行かずにご覧ください



冗談がなければ、CityCamp会議の参加者の個人データ(電子メールアドレス、勤務地や役職に関する情報、携帯電話番号など)にアクセスするのにほんの数分しかかからない単純な正直なプログラマーがどのようにかかったかを説明します。その他11種類



注意トラフィック。



背景

土曜日の夜遅く、寝る前に、 グルズノフはスカイプでいくつかのことについて話し合うことにしました。さらに、彼が日中に訪れたシティキャンプについて私に話してもらいたいと思いました。 とりわけ、会議で会った開発者と彼らのスタートアップについての会話が行われました。 そして彼らの活動は、シティキャンプに似たイベントのためにインターネットリソースを展開するシステムを作成することです。



彼のアカウントからリンクと4つの英数字のアクセスコードを受け取ったので、私は彼らのシステムがどのようなものであるかを見ることができました。 一般に、これは会議参加者のミニコンタクトのようなもので、すべてがかなり退屈です。 アイコンは明らかにフリーストックのものであり、インターフェースは光りません。「膝の上での組み立て」の完全で永続的な感覚です。 将来的には、一見どのように見えたとしても、開発者のチーム全体がこのプロジェクトに取り組んだようです。彼らは自分のオフィスさえ持っているようです。 これは男子生徒がやったことではありません! おそらく、一部の学生はもっとうまくいくでしょう。 一般的に、モックするのは良いことです... =)



要点をつかむ

まず第一に、好奇心developer盛な開発者のように、私はそれが何で行われたかを知りたかった。 マイケルは、残念ながらそのような情報を持っていなかったので、最初はWebサーバーの応答ヘッダー(あなたは決して知らない)を見て、htmlを調べました。



うわー、17 tsesok ... =)さて、それはベータのために許されるとしましょう。 また、中心タグが流行に戻っており、少なくとも短いHTML 5 doctypeを書くことはファッショナブルではなく、<style> bla-bla </ style>は直接本文に書き込むことができることがわかりました。 理論上はWebサーバーのヘッダーにあるはずのディレクティブですが、ブラウザーのhtmlやその他の恐怖に含まれていることが判明したため、目を閉じます。



それから突然404エラーを見たいと思ったのですが、ブラウザのアドレスバーにハブロカダブラを入力した私は、どこにいると思いましたか? 何らかの理由で、私が始めたログインページで:





ここで、それはちょうど揺れ始め、目のけいれんが始まりました。 これは単なるアクティベーションコードではありません! 私が最初に注意しなかったこと。 すべての会議参加者は、数字付きの4文字を使用してアカウントにログインします。



かすかな耳

すぐに、手紙の大文字小文字は関係ないことがわかりました。 ログインの頻度と失敗した試行のカウンターを保護することは望みません。 しかし、これはそうではありませんでした。 私は自分の考えをミハイルと共有し、可能な組み合わせの数と、徹底的な検索に対する最も原始的なhttp-bruteフォースの大体の最大時間をすばやく見つけました。 彼らは笑い、明日、ミハイルに報告の正当な理由があると決心し、誰も嫌がらせを受けていないことを明確に示します。



次に、firebugを開きましたが、更新後に失敗し始めたので、フォームコードを見ると、おそらく友達が補うことができないだけでなく、投稿することもできます。 フォームは投稿リクエストを送信しましたが、 myrange.ru / login?code = fuckのようなアドレスも成功しました。



夜間にログインリスト全体を受け取り、午前中にレポートをダンプすることに同意しました。 おやすみなさい。 すべてがめちゃくちゃ便利でつまらないものでした。 認証に成功した場合、サーバーはプロファイルページに302番目のリダイレクトを返し、それ以外の場合はログインフォームの200番目のコードを返しました。



エディターを開いて、結果をすぐにカールマンに軽く照らしました:

 #!/bin/bash for w in {{a..z},{0..9}}{{a..z},{0..9}}{{a..z},{0..9}}{{a..z},{0..9}}; do curl -I --write-out %{http_code} --silent --output /dev/null http://myrange.ru/login?code=$w; echo " $w"; done
      
      



brute.shとして保存してから起動しました(この場合、実行可能フラグの設定は不要であり、ホームセクションはnoexecでマウントされます):

$ sh brut.sh > brut.txt







観察することができました:

$ tail -f brut.txt





クロールされたフォームの記録の速さ:

...

200 abc0

200 abc1

302 abc2

200 abc3

...







最初の5回のログインは1分で受信されました。 さらに、この数は急速に増加していました。

$ grep 302 brut.txt | wc -l

336






スポットチェックにより、すべてが機能することが示されました。



スピーカーに音量を追加し、管理者アラームをオンにします

$ sleep 5h && cat /dev/urandom >> /dev/dsp





寝ました。



スカイプコールの後で目が覚めた、ミハイルは早く起きた。 ブルータスがまだ終わっていないことに驚いた。 この理由はすぐに明らかになりました。 5時間以上(1秒あたり10回のみ)のサーバーへの最大200,000のヘッドリクエストの後、サイト全体がカメの速度で機能し始めました。 ブルータスを停止しましたが、状況は改善しませんでした。おそらく30分後にページが数分間開かれ、その後状況は徐々に改善し始めましたが、最終的にはうまくいきませんでした。



その後、実験のために試みましたが、ブルートは次のようになりました。10リクエストをすばやく、4〜5秒の一時停止、3をすばやく、4〜5一時停止を繰り返します。 サーバーの管理者が何かをしましたが、少なくともログを見るかどうかは明らかではありません。なぜ彼はすぐに私のIPを禁止して不名誉を止めなかったのでしょうか? どちらか...だから再び私はそれが何に作用するかに興味を持ちました。 明らかに、メモリリークがあるか、どこかで接続が開かれています。



まとめ

さらに強引に続ける意味はありませんでした。ミハイルは去ろうとしていたので、私は彼に何が起こったかすぐに投げました。

$ grep 302 brut.txt | cut -d ' ' -f2 > brut.sep.txt







また、Habrについての記事を書きたいという願望を表明しました。おそらく他の誰かのために、これはレッスンになるでしょう。 私たちは、彼がすべてのnafigをオフにして私に知らせるように開発者に通知することに同意しました。 その後、公開できます。



しかし、私はまだ私の主な好奇心を許可していなかったので、サイトを少し散歩したかったです。 しかし、彼らはそれを売ろうとしている:





次のような簡単な操作(プロファイルからリンクを介して参加者のリストに切り替える)で、まったく予期せず幸福と満足がすぐにもたらされました。



次のステップを受け取ったので、喜ぶ時間はありませんでした。





君たちはめちゃくちゃじゃない? このプロダクションは、実際のユーザーで既に実際に動作していますが、一体何がトレースされますか? 理解できるように、少なくとも4人のチームがあります(間違えた場合はごめんなさい)が、4文字のアクセスコードがログインオープンであるということはデザイナーにも思い浮かびませんでしたか? どうやって外に出るのか分かりませんが、少なくとも些細なキャプチャーを入れるのでしょうか? とても簡単で、数分で十分なエンコーダ時間を使用できます。既製のソリューションがあります。 防御策はありませんが、少なくともこの投稿は存在しません。 私は(ロシア語で言うと)ハッカーではなく、単純なプログラマーです。 野teなスクリプトを書くのにキャプチャの認識が必要で、数分以上かかったとしても、この愚かさに時間を無駄にしないでしょう。 しかし、一般的な状況はそのようなものではなく、もっとよく見ると、一連の貫通穴が見つかります。



しかし、これらはすべて、どのゲートにも収まりません。 私はGentooをプロジェクト用の強化されたパッチで収集しましたが、ここにあります。 これが基本です! nafig、イノベーション、会議、スタートアップは何ですか? そしてこれはベータ版ではなく、これは初期のアルファのようなものです。これはプロトタイプであるとさえ言えます。



独自の結論を導き出します。



ps今朝、シティキャンプの開始後、すべての関係者に通知され、警告されました。 数時間経ちました。 彼らは私に投稿する許可を与えました、そして、彼らはこのログインフォームを全く切断するつもりはないようです、彼らはそれがそうあるべきであると言います、まあそれはそうさせてください。



pps最初から最後まで、芸術作品を扱っています。 ここで説明されているイベントは、現実に部分的に似ているだけで、ランダムです。 そして言及された人物は架空のヒーローであり、現実の人々との偶然の一致であり、単なる事故にすぎません。 ナレーションは、第三者に代わって実施されます。



UPD:反応が発生しました 。 まあ、答えはまともです、いいです。 このトピックの過度の皮肉と笑については申し訳ありませんが、将来の別のレッスンとして役立つことを願っています。



UPD2: 問題は修正され、サイトへのアクセスが復元されました。



All Articles