reCaptchaの脆弱性により、同じトークンで最大30個のアクションをアクティブ化できます

伝える価値があるかどうかは長い間考えていましたが、昨夜は少し自由な時間を過ごしましたが、それでも大きなプロジェクトの小さな問題に関する一連の記事を続けることにしました。 そして、おそらく、誰もがすでにそれを知っていますが、私は無駄に心配しています。



Googleが数年前に買収したreCaptchaサービスを知っています。 たとえば、 LiveJournalに登録するときなど、多くの大規模なプロジェクトで彼を見かけます。 私は自分のサーバーから直接リストからファイルをダウンロードするのが好きだと言わなければなりません、そして、そのようなものが私が定期的に何かをダウンロードするサイトの1つに現れたとき、それは少し私をいらいらさせ始めました。 私は何かが好きではないとき、私はあきらめませんが、これを避ける方法を考え出そうとします。



だから私はreCaptchaを克服することを決めたと私は成功したと思う...



分析を開始するには、まず質問をします。 このような大規模なプロジェクトの最大の問題は何ですか? おそらく、これは非常に大量の不必要な情報、ステータス、アクションのストレージです。 ReCaptchaはトークンを作成し、チェックして非アクティブ化する必要があります。



最初の2つのアクションを暗号化(ストレージなし)に置き換えることができる場合、非アクティブ化はもう少し複雑です。 また、サービスはドキュメントをスキャンする「メイン」機能を実行する必要があります。 これをすべて保存する場所は? これを節約したいです。 そして、通常、これは開発者の最大の間違いです。



reCaptchaの仕組み:

  1. サービスはあなたに2つの言葉を尋ねます、彼が好きなら、そしてあなたが答えたものはあなたにトークンが与えられます。
  2. トークンはタイムリミッターによって保護されています
  3. サイトからの検証要求の後、トークンは非アクティブ化され、再度使用することはできません。


この最後の2つのポイントで弱点が判明しました。 サービスはトークンを約5時間に制限することが知られています。 しかし、私が知ったように、reCaptchaはアクティブ化されたトークンを常に保存するのではなく、ブロックリストを保持し、約10分間の非アクティブ後にトークンを削除するようです。 つまり、このトークンを10分間再度アクティブにしようとしたことがない場合、ロックリストから削除されます。 したがって、5時間で1つのトークンを最大30回使用できます。主なことは、忍耐強く、10分間の間隔の前にトークンをジャークしないことです。



使い方は? とても簡単です! 10個のトークンを作成した後、サイトで1時間ごとに5時間自動的にアクションをアクティブ化できます。 わずか10トークンで300アクティベーション。 とても良いオファーだと思います。 より多くのトークン-より頻繁にアクティベーション。



残念ながら、reCaptcha( Google Code )では、この問題について一言も見つかりませんでした。 ただし、それから身を守るための非常に簡単な方法があります。アクティブ化されたトークン(recaptcha_challenge_field)をサイト側に5時間保存するだけで十分です。 結局のところ、この間にまったく同じトークンを発行する確率はほとんどゼロです。



PS通常、私の投稿には脆弱性の使用の小さな例が添付されていますが、今回はそれを伝えるのに十分簡単だと判断しました。 興味津々の心%ユーザー名%は、このメソッド自体の操作性を検証することができます。



All Articles