HTML5攻撃:知っておくべきこと





最新のブラウザーバージョンはすべてHTML5をサポートしているため、業界はテクノロジーを受け入れてそれに適応する準備ができている最盛期にあります。 テクノロジー自体は、3番目のプラグインまたはAPIを使用せずに、Web上のグラフィックおよびマルチメディアコンテンツを含めて処理するプロセスを簡単にするように作成されました。 この記事では、HTML5が世界に「提示」した新しいタイプの攻撃について説明します。



HTML5攻撃



CORS(クロスオリジンリソース共有)への攻撃-逆シェルコードの取得



HTML5は、高品質のサイトを作成する開発者のニーズの高まりに対応するために、以前はSOP (同じオリジンポリシー)の概念で宣言されていた制限のいくつかへの注意を緩和しました。 概念には単純なルールがあります:サイトで実行されるスクリプトは、このサイトのメソッドとプロパティにはアクセスできますが、別のサイトのページにはアクセスできません(SOPは、それ自体が広範な別個のトピックです。詳細を読む前に読むことをお勧めします)。



HTML5はこれらの制限に違反しています。



たとえば、AJAX要求は異なるドメイン間で実行できます。 SOPは前提条件によりJavaScriptによるWebページコンテンツへのアクセスを制限します。JavaScriptとコンテンツ自体は同じドメインにあります。 このような制限がなければ、悪意のあるWebサイトは、ユーザーの保存された認証データを使用して他のサイトから個人情報を読み込み、攻撃者に情報を返すjavascriptを実行できます。 そのため、HTML5ではJavaScriptを使用して他のドメインからデータを取得できました。



したがって、xyz.comではデータを受信できますが、abc.comではxyz.comにajaxリクエストを作成して回答を読むことができます。 この機能は、クロスドメインコールでHTTPトラフィックをトンネリングするために使用されます。



AJAXは、将来のツールの単純なシェルを使用して、リバースシェルに相当するブラウザを呼び出して作成します。 このツールは、攻撃者がクロスドメインリクエストリークを見つけることができる場合、JavaScriptスタッフィング(ユーザーがリンクをクリックするように誘導する)を使用でき、スクリプトがクロスドメインリクエストを介して攻撃者のサーバーに移動するという概念に基づいています。 将来、この侵害を使用して、攻撃者は被害者のブラウザを介してリクエストをトンネリングすることにより、被害者のセッションを表示できます。

重要な質問:攻撃者に対して被害者のセッションはどのように表示されますか?


これは、ユーザーのブラウザーによって起動されたスクリプトがCross Origin Resourceを介して攻撃者のサイトへのアクセスを開始するために可能です(HTML5がなければこれは不可能です)。 したがって、攻撃者は単にリクエストを被害者のブラウザにトンネリングします。



CSRFトークンの盗難



HTML5では、 CSRFトークンを盗むことが可能になりました-トークンが前述のCORSルールを使用してURL(たとえば、GET要求)を通過する場合。 攻撃者は、クロスドメインクエリを使用してページにCSRFスタッフィングを挿入できます。その後、ユーザーに通知することなく、ターゲットサイトにリクエストが行われます。 origin



と呼ばれるHTTPヘッダーをCORSに追加する必要があることに注意してください。 withCredentials



属性の値をtrue



変更すると、リクエストとともにCookieを盗むことができます。 この場合のサーバーヘッダーはAccess-Control-Allow-Origin: *



ます。 アスタリスクの代わりに、応答の受信を許可する特定のドメインのアドレスを指定できます。 アスタリスクを残すと、許可はすべてのドメインに適用されます。



ユーザーは、バックグラウンドで何が起こっているのか疑いません。 したがって、HTML5では、ユーザーの知らないうちにCSRFトークンを盗み、操作を実行できます。



内部サーバーへのアクセス



多くの商業組織には、内部ビジネスニーズに使用される内部サイトがあります。 実際、これらはインターネット経由ではアクセスできないイントラネットアプリケーションです。 このようなアプリケーションは多数あるため、何らかの方法で相互にやり取りする必要があります。 そして、大部分の開発者は急いで、すでに知っているAccess-Control-Allow-Origin: *



ヘッダーを追加し、CORSを含めます。 これは攻撃者がソーシャルエンジニアリングを使用して会社の従業員にリンクをクリックさせ、その後攻撃者がコンテンツに非常に簡単にアクセスできるようにするために使用されます。



一種の「段階的な指示」:

  1. 会社の従業員がインターネット経由でアクセスできないサイトにログインします。
  2. イントラネットサーバーは、 Access-Control-Allow-Origin: *



    という見出しのリクエストを返しますAccess-Control-Allow-Origin: *



    (なぜ?イントラネット上の他のサイトがサーバーデータにアクセスできるようにしたい)。
  3. 従業員は攻撃者からリンクをメールで受け取り、それをクリックします。
  4. サイトは完全に正常に見え、従業員は疑わしいことに気付きません。 ただし、サイトには従業員のブラウザで実行されるJavaScriptコードが含まれています。
  5. バックグラウンドのスクリプトはXMLHttpRequestリクエストを送信し、リクエストも受信します(理由は、サーバーヘッダーにAccess-Control-Allow-Origin: *



    が含まれているためです。
  6. JavaScriptはリクエストを解析し、それを攻撃者のサーバーに送信します(XMLHttpRequestを介して簡単に実行されます)。
  7. 攻撃者は、会社の内部Webサイトに保存されているデータを傍受します。


新しいXSS HTML5ベクトル



開発者は常に、XSS攻撃をブロックするために独自のカスタムフィルターを作成することを好みます。 それらのほとんどは<img, <script



などのようなブラックリスト文字です。 HTML5では、オーディオ/ビデオのマルチメディアおよび動的な読み込みをサポートするための多くの新しいタグが導入されています。 新しいタグ、属性、およびイベントは、デューデリジェンスにより、XSSフィルターを回避するための潜在的なベクトルになります。 以下は、さまざまなリソースから収集されたいくつかの可能なベクトルです。



List of XSS vectors for HTML5





<video><source onerror="javascript:alert(1)">





<video onerror="javascript:alert(1)"><source>





<audio onerror="javascript:alert(1)"><source>





<input autofocus onfocus=alert(1)>





<select autofocus onfocus=alert(1)>





<textarea autofocus onfocus=alert(1)>





<keygen autofocus onfocus=alert(1)>





<button form=test onformchange=alert(2)>X





<form><button formaction="javascript:alert(1)">







オフラインWebアプリケーションのキャッシュポイズニング



オフラインHTMLアプリケーションのキャッシュは、ほとんどのブラウザー(Google Chrome、Mozilla、Opera、Safariなど)で使用されます。 そのため、アプリケーションはコンテンツをオフラインで利用できるようにキャッシュできます。 このようなキャッシュの主な問題は、キャッシュポイズニングと呼ばれる攻撃のクラスに対する脆弱性です。 特定のサイトのJSファイルが攻撃者によって汚染された場合、攻撃者はユーザーアカウントを非常に簡単に取得できます。 通常のキャッシュとHTML5アプリケーションキャッシュの主な違いは、最初のキャッシュではすべての種類のファイルのキャッシュが許可されず、2番目のキャッシュでは許可されることです。 この機能を使用して、攻撃者はユーザー認証データを盗むことができます。



攻撃者がこれを行う方法を見てみましょう。

  1. ユーザーは、ショッピングセンターの保護されていないWi-Fiネットワークに接続します。
  2. ユーザーがランダムなサイトにアクセスします。
  3. 攻撃者は、ユーザーからFacebookログインを収集するように設計された非表示のIFrameを含むページでリクエストに応答します。
  4. ユーザーのブラウザーは自動的に認証リクエストを送信します。
  5. この時点から、ネットワークは攻撃者によって制御され、ユーザーはFacebookのログインページとまったく同じページを表示しますが、追加コードは1つだけです。
  6. このコードは、入力されたアクセスを攻撃者のサイトに送信します。 ページには、これをユーザーのシステムにキャッシュするコマンドも含まれています。 そのため、この時点まで、事実上は何も起こりませんでした-承認ページがユーザーのシステムにキャッシュされたことを除いて。
  7. 現在、1〜2日後、被害者は自宅またはオフィスの安全なネットワークに接続し、アドレスバーにサイトへのリンクを入力してFacebookにログインしようとします。
  8. ブラウザはキャッシュから偽の承認ページをロードします。
  9. ユーザーがアクセスを入力すると、キャッシュされたページがこのようにプログラムされているため、攻撃者に転送されます。


おわりに



したがって、Webアプリケーションのキャッシュをポイズニングすることにより、攻撃者はユーザーアクセスを盗むことができます。 これらは、セキュリティの専門家が発見した攻撃の一部です。 今後数年のうちに、HTML5の仕様に基づいた攻撃がさらに増えることは間違いありません。



ボーナスとして-私たちの主な情報擁護者であるアレクセイ・フェドロビッチによる権威あるコメント:



アバター 実際、HTML5に対する攻撃はほとんど使用されず、攻撃者は機密データへのアクセスを取得するプロセスを複雑にすることを好みません。実際には、メールボックスの通常の侵害はますます進んでおり、必要なリソースからこのメールボックスへのパスワードの回復がさらに進んでいます。 そしてもちろん、すべてのブラックハットの中で最もお気に入りの方法は、攻撃者のサーバーにあるサイト許可フォーム(偽物)の正確なコピー(Facebookや自分のものなど)です。



そしてCSRF、XSS、SQLinjなど 攻撃者が自分の計画を実行するのに十分な時間と技術的知識を持っている場合、人が頭の向こう側に座っているときにのみサイトで検索を開始します。 あなたがハッキングしたい場合、ハッキング、オプションはありません。 侵入のしきい値を下げて、最初のレベルでセキュリティスキャナーとハックルを使用して学童を除外することができます。 がんばって。


Onextrapixelに関するオリジナル記事



All Articles