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

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

条件



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

  1. UTF-8またはISO-8859-1エンコードである必要があります。
  2. POST要求によって、開始元と同じドメイン(GETなし)のpost.phpページに自分自身をコピーする必要があります。 テキストパラメータはcontent必要がありcontentpost.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:サイトの読み込み速度の確認

Source: https://habr.com/ru/post/J18906/


All Articles