脆匱性コンテスト、たたは完党に私を砎る

3月19日、脆匱性怜玢の月の初めに「Badooの匷さを確認する」ず発衚したした。 今日は、最初の結果をたずめお䞭間結果を共有し、匷床テストの準備方法を教えおください。最も興味深い脆匱性を怜蚎し、「フェむスパヌム」を䜜成したす。



そしお、はじめに、いく぀かの統蚈



サむト䞊のコンポヌネントごずの脆匱性タむプずその分垃のグラフ








競争の準備...



数か月前、サむト党䜓にグロヌバルなXSS保護を構築したした。 すぐに䞇胜薬ではなく、脆匱性の100をカバヌしないこずを予玄しおください。 その目的は、開発者が偶発的な゚ラヌを防止するこずです。 このメ゜ッドの本質は、開発者が出力を非スクリヌン圢匏で衚瀺するこずを明確に蚱可しおいる堎合を陀き、 blitzを介しお衚瀺されるすべおの倉数を自動的に完党にスクリヌニングするこずです。



最も興味深い、そしお唯䞀の本栌的なXSS発芋は、䞍正なプロファむルでの远加のSEOコンテンツの出力で芋぀かりたした。 さたざたなSEOニヌズの䞀郚のプロファむルデヌタメむンの[About]フィヌルドがメタタグの1぀に远加されたした。 この時点で、生デヌタの出力が䞀床蚱可されたため、攻撃が蚱可されたした。 この脆匱性は蚱可されおいないナヌザヌに察しおのみ機胜したため、最初の最も危険なカテゎリを割り圓おたした。機密デヌタを取埗するこずは䞍可胜でした。 頭に浮かぶ唯䞀の合理的なアプリケヌションは、アカりントデヌタをさらなるフィッシングのオヌプンリダむレクトずしお䜿甚するこずですが、この堎合でも、ナヌザヌが珟圚サむトにいないこずを確認する必芁がありたす。



...そしお圌らが準備しなかった方法。



2013幎、 OWASPプロゞェクトは、その人気の倧幅な増加ず倚くの倧芏暡なWebプロゞェクトに察する保護の欠劂にもかかわらず、CSRF攻撃の評䟡を3ポむント䞋げたした。 攻撃の本質は簡単です。POSTたたはGETリク゚ストを含むフォヌムで特別なペヌゞに移動するず、ナヌザヌのセッションでアカりントのコンテンツたたは蚭定を倉曎できたす。 この堎所では、すべおが私たちが望むほど良くありたせんでした。 サむトの機胜の䞀郚承認、ログアりト、個人情報の倉曎などのみが䞀意のセッショントヌクンによっお保護されおいたした。 このバグに関する最初の10件のレポヌトが届くずすぐに、問題を党䜓ずしお解決する必芁があるこずが明らかになりたした。 コンテストの開始から数日埌、別のグロヌバル防埡を投皿したした。サむトの蚱可された郚分のすべおのWebサヌビスは、POSTたたはGETリク゚ストでトヌクンのチェックを開始したした。 この修正により、CSRFアプリケヌションのほずんどを閉じたした。



次に、最も興味深い脆匱性のいく぀かを芋お、それらを発芋した参加者にコメントをしたす 。



賌入時のロヌン凊理の脆匱性BSI-13

投皿者 ニコラむ・゚ルミシキン  Asd 

カテゎリ5



なぜこの脆匱性を5番目に高い重芁床に割り圓おたのですか なぜなら、ブラりザずデバッグコン゜ヌルを陀いお、特別なスキルずツヌルを必芁ずしないほど操䜜が簡単だったからです。 HTMLコヌドでは、ロヌンの数を遞択するためのフォヌムは次のようになりたした。



... <option data-ga-ev="100  - 45,00." value="100"> <option data-ga-ev="550  (50 !) - 200,00." value="550" selected="selected"> <option data-ga-ev="1250  (250 !) - 450,00." value="1250"> <option data-ga-ev="2750  (750 !) - 900,00." value="2750"> ...
      
      





倀フィヌルドの倀が盎接䜿甚されたこずが刀明したした それをほが任意の数に眮き換えるず、220ルヌブルの金額で支払いを行い、この金額のロヌンを口座に入れるこずができたした。 脆匱性は数時間以内に修正され、Asdずいうニックネヌムを持぀ナヌザヌは、最も重芁床の高い脆匱性を最初に怜出した瀟内トップの1䜍になりたした。



Asdによるコメント
「最初は、サむトのさたざたなセクションに行き、リク゚ストのパラメヌタヌ倀を倉曎しようずしたしたが、このレベルのプロゞェクトでは、SQLむンゞェクションのような深刻な脆匱性を芋぀けるこずはできないず予想されたした。 著者がサむトに盎接ない脆匱性を怜玢したhabrahabr.ru/post/117039の研究を思い出したした。Amazonでさえ、サヌドパヌティのサヌビスずのやり取りに抵抗できたせんでした。 badooで同様のやり取りを意図的に怜玢したずころ、連絡先のむンポヌト、アカりントの確認、ロヌンや超倧囜の支払いなど、いく぀かの堎所でそれらを芋぀けたした。 クレゞット賌入ペヌゞを蚪れお、私はいく぀かの方法で支払う可胜性を発芋し、支払いシステムずの盞互䜜甚スキヌムは非垞に異なっおいたした。

そのうちの1぀で間違いを犯すこずは完党に可胜であるず刀断し、より詳现な調査を開始したした。 私は手持ちの小額の財垃を持っおいたので、最初にりェブマネヌを遞びたした。 私はそれを理解しおいるので、賌入は次のように行われたすナヌザヌは可胜なオプション100、550、1250、2750のいずれかを遞択し、圌の遞択はサむトの内郚アカりントのどこかに保存され、その埌ナヌザヌはwebmoneyりェブサむトで支払い、その埌請求曞が支払われたす保存されたものず比范され、それらが䞀臎し、支払いが成功した堎合、ナヌザヌはロヌンを受け取りたす。 アカりントの保存䞭にどのパラメヌタヌが転送されるかを芋お、支払ったロヌンの数が盎接ではなく、いく぀かの倀ではなく、4぀の可胜なオプションの1぀を瀺しおいるこずに気付きたした。 それを倚数に眮き換えるず、7.5wmz550クレゞットの暙準䟡栌の請求曞ず私が瀺したクレゞット数で、サヌバヌから正しい答えを受け取りたした。 私はそれを支払いたした-そしお、ロヌンは私のアカりントにありたしたが、わずかに切り捚おられた圢で-2147483647 "だけでした。







プロファむルデヌタを倉曎するずきの蚭定ミスBSI-12

投皿者 whitebureau

カテゎリ5



同じ日に、別の重倧なギャップがwhitebureauナヌザヌによっお発芋されたした。 他のナヌザヌのプロファむルず察話するずき远加情報の衚瀺、アクションの実行、芁求パラメヌタヌでcuidパラメヌタヌ珟圚のナヌザヌIDが枡され、このナヌザヌのIDが瀺されたした。



 GET http://badoo.com/ws/profile-ws.phtml?section=pimore&cuid=31337
      
      





これらの盞互䜜甚は、プロファむルの線集を担圓した同じコントロヌラヌを介しお実行され、違いはアクションアクションのみであり、whitebureauはナヌザヌの線集芁求に任意の倀を持぀このuseridパラメヌタヌを远加しようずしたした。



 POST http://badoo.com/ws/profile-ws.phtml ... section=interested_in&interested_in_text=cats&cuid=31337
      
      





プロファむルの線集時に、このパラメヌタヌが珟圚のナヌザヌIDに準拠しおいるかどうかの確認がスキップされるこずが刀明したした。 そのため、2番目の重倧な脆匱性がありたした。



コメントwhitebureau
このような゚ラヌは、倧芏暡なプロゞェクトでよく芋られたす。 特に、ajaxを積極的に䜿甚しおいるプロゞェクトでは。 スヌパヌグロヌバルphp倉数には混乱がありたす。開発者は、より正確な$ _GET、$ _POST、たたは$ _COOKIEの代わりに、httpリク゚ストのすべおの倉数で$ _REQUESTを䜿甚したす。 その結果、攻撃者はpostたたはgetリク゚ストで目的の倉数を眮き換えるこずにより、非垞に簡単にコヌドを混乱させるこずができたす。 スクリプトは眮換を認識したせん。






サむトのすべおのペヌゞのクリックゞャッキングBSI-9

投皿者ナヌゞン・ファヌフェル

カテゎリ1



たた、重芁ではないが興味深い脆匱性のレポヌトも受け取りたした。 それらの1぀は、サむトのすべおのペヌゞでいわゆるクリックゞャッキング英語のクリックゞャッキングを実行する機胜でした。

この甚語は、2008幎にゞェレマむアグロスマンによっお最初に䜿甚されたしたが、これたでのずころ、この脆匱性の重芁性ず結果に぀いお考えた人はほずんどいたせん。 クリックゞャッキングずは䜕ですか OWASPが蚀うように、「クリックゞャック、「UI救枈攻撃」ずも呌ばれたすは、攻撃者が耇数の透明たたは䞍透明なレむダヌを䜿甚しお、ナヌザヌが別のペヌゞのボタンたたはリンクをクリックするように誘導する堎合です。トップレベルペヌゞ」。



簡単に蚀えば、クリックハンドラヌを含む透明なdivタグで䞀郚の芁玠をオヌバヌラむドするこずにより、iframe内にサむトを衚瀺できたす。 したがっお、疑いを持たない蚱可ナヌザヌに匷制的に任意のアクションを実行させるこずができたす。



最もよく知られおいる保護方法の1぀はフレヌムバスティングず呌ばれたす。 Javascriptを䜿甚しお、iframe内でペヌゞが開いおいるこずを確認したす。 珟圚のペヌゞのアドレスがブラりザのアドレスバヌに曞き蟌たれおいるものず異なる堎合、リダむレクトが実行されたす。



 var frameBusted = (top != self); if (frameBusted) top.location.href = '/index.htm';
      
      





埌で刀明したように、この方法はほずんどの最新のブラりザヌでバむパスできたす。



 <iframe sandbox src="http://badoo.com/></iframe>
      
      





そのため、2009幎以降、すべおの最新のブラりザヌIEを含むはX-Frame-Optionsヘッダヌをサポヌトしおおり、iframe内ぞのサむトの埋め蟌みを完党に犁止したり、特定のドメむンリストに察しおのみこの機胜を有効にしたりできたす。



あなたのサむトはクリックゞャッキングから保護されおいたすか



ナヌゞン・ファヌフェルによるコメント
今日、ほずんどすべおのむンタヌネットリ゜ヌスは、同様のクリックゞャックの脆匱性の圱響を受けやすくなっおいたす。 それらを芋぀けるプロセスは特に耇雑ではありたせん。䞀般的なルヌルがありたす-リ゜ヌスがその応答でX-Frame-Optionsヘッダヌを䜿甚しない堎合、フレヌムに埋め蟌む機胜の存圚は、その埌のさたざたな皮類のフィッシングペヌゞの䜜成でほが保蚌されたす。 したがっお、この脆匱性は、HTTPヘッダヌを衚瀺した結果によっおすでに芋぀かっおいるず芋なすこずができたす。

Badooが䜿甚する.jsファむルを調べるず、window.top.locationプロパティを眮き換える䞀般的で誀った方法がフレヌムを終了するために䜿甚されおいるこずがわかりたした。 このメ゜ッドを䜿甚するず、フレヌムにBadooを埋め蟌むペヌゞがonloadむベントを受け取り、察策を講じるこずができたす。 そのような手段の1぀は、ブラりザヌを応答コヌド204で返されたアドレスにリダむレクトするこずです。そのようなURLぞの芁求は、ブラりザヌ内のナビゲヌションに぀ながりたせんフレヌムのあるペヌゞは開いたたたですが、堎所を眮き換えるBadooコヌドの詊行もキャンセルしたす。

Badooによっお導入された最初の修正は、フレヌム内のペヌゞの本文を空の文字列で眮き換えるこずにより、このコヌドを補足したした。 この修正により、フレヌムぞの埋め蟌みの問題は解決したせんでしたが、フレヌムからすべおのコンテンツが削陀され、フィッシングペヌゞを䜜成できなくなりたした。 この修正は、iframeタグのsandbox属性を䜿甚しお簡単にバむパスされ、フレヌム内のJavaScriptが無効になりたす。

原則ずしお、クリックゞャック攻撃から保護する唯䞀の方法は、フレヌムに埋め蟌たれるこずを意図しおいないすべおのペヌゞにX-Frame-Optionsヘッダヌを䜿甚し、フレヌムに埋め蟌みを含むペヌゞでシステムの状態を倉曎するすべおのアクションを確認するこずです。




CSRFおよびカスタム電子メヌルの倉曎BSI-38

投皿者 グラファむト

カテゎリヌ3

この脆匱性の䞀郚はBSI-21にあり、著者のむリダキル



それは私たちが予期しおいなかったものなので、これらは任意のナヌザヌのメヌルアドレスを倉曎する方法の説明です。 しかし、ある日、パスワヌドの再送信コンポヌネントに関連するさたざたな脆匱性に関する3぀の説明がすべお送信され、ナヌザヌのメヌルボックスを倉曎する、぀たりアカりントを「乗っ取る」こずができたした。

登録時にパスワヌドを再送信するためのフォヌムがありたす。このフォヌムでは、タむプミスが䟵入した堎合にメヌルを倉曎できたす。 ナヌザヌは、CSRFを䜿甚しお既に確認枈みの䜏所を倉曎するこずさえできるこずが刀明したした。



 <form action=http://eu1.badoo.com/not_confirmed/" method="post" id="form"> <input type="hidden" name="post" value="1" /> <input type="hidden" name="newemail" value="attacker@somemail.com" /> <input type="submit" /> </form> <script>$('#form').submit();</script>
      
      





この脆匱性を修正する方法はいく぀かありたした。

1.確認のためにチェックを远加したす。

2. CSRFトヌクンを远加したす。

3. CAPTCHAを远加したす。

このモゞュヌルは非垞に重芁であるため、3぀の方法すべおが適甚され、脆匱性を発芋したナヌザヌは報われたした。



グラファむトによるコメント
なぜなら 私は以前にBadooに粟通しおいたせんでした。たず、ここで䞀般的に䜕ができるかを知るこずにしたした。 すぐに、さたざたな電子メヌルサヌビスから連絡先をむンポヌトする可胜性に泚意が向けられたした。そのようなアドレスがパスワヌド回埩甚の远加の電子メヌルのリストに远加されおいるかどうかを確認したかったのです。 悲しいかな、玹介されおいたせん。 しかし、私の考えはすでにこのようになっおおり、しばらくしお、間違ったメヌルではなく、別のメヌルを入力する機胜を備えた登録を確認するために、メヌルを再送信するフォヌムに出䌚いたした。 このフォヌムにはCSRFがありたしたが、最も驚くべきこずは、認蚌されたナヌザヌがこのフォヌムに蚘入するず、プロファむルのメヌルアドレスが倉曎されたこずです。 明らかに、このシナリオでは、ナヌザヌが既に電子メヌルを確認したかどうかのチェックはありたせんでした。






CSRFおよび倖郚゜ヌシャルネットワヌクアカりントのリンクBSI-44

投皿者chipik

カテゎリヌ4



たた、サむトず倖郚リ゜ヌスずの盞互䜜甚の脆匱性も明らかにしたした。 サむトのプロファむルを倖郚のFacebook、VK、たたはGoogle+アカりントに関連付けるこずができる機胜がありたす。 それらを介しお、ナヌザヌはナヌザヌ名ずパスワヌドを芚えおいなくおもサむトにログむンできたす。 chipikの参加者は、このアルゎリズムの匷床をテストし、それをだたす方法を芋぀けたした。

Firefoxのタンパヌデヌタプラグむンを䜿甚するず、倖郚アカりントをバむンドしおOAuth認蚌トヌクンを取埗するリク゚ストをむンタヌセプトできたす。 CSRFを䜿甚しお、攻撃者が蚱可されたナヌザヌにこのトヌクンのリンクをクリックさせる堎合、圌のアカりントは攻撃者の倖郚アカりントに関連付けられ、埌者がそのナヌザヌずしおログむンできるようになりたす。 最も確実な解決策は、アカりントにリンクされたすべおの操䜜にセッション固有のCSRFトヌクンを远加するこずでした。



chipikによるコメント
E.Khに感謝したす。 ベクトルごずに:)






応募は4月19日たで受け付けられたすが、コンテストに参加し、報酬を受け取り、プラットフォヌムをより安党にするチャンスがありたす。

コンテスト終了埌、最もアクティブな3人の参加者を遞択し、さらに1,000ポンドを提䟛したす。

たた、コンテストのシンボルず審査員によっお眲名された感謝状が蚘茉された50枚のクヌルなTシャツがあり、最もアクティブな参加者に配垃されたす。



匷床をテストしおください



スタニスラフ・゚レミンずBadoo開発チヌム



All Articles