ゼロ、参考資料
まず、概念
クロスサイトスクリプティング攻撃クロスサイトスクリプティング(XSS)のセキュリティ上の脆弱性で、攻撃者は、サイト上で悪意のある注入するために、この脆弱性のクライアントコードを悪用する可能性があります。着陸地点の攻撃者が自動的に悪質なコードを実行するときに、攻撃者は、被害者を装った、サイトのアクセス許可を突破することができます。(からの転送MDN)。
次の2つの場合には、発生しやすいXSS攻撃:1)のデータがWebアプリケーションに信頼できないリンクから入りました。2)動的コンテンツ悪質なコードがウェブユーザに送信されるフィルタリングされません。
悪意のあるコンテンツは、一般的に含まれる JavaScriptを時々 HTML、FLASHなどの、しかし、。広く、しかし、彼らは共通している様々 XSS攻撃の形式は以下のとおりであるクッキーのようないくつかのプライベートなデータは、攻撃者にセッションは、被害者が攻撃者によって制御されるサイトにリダイレクトされ、被害者のマシン上でいくつかのマルウェア操作。
第二に、攻撃
反射、永続的な、DOMタイプ:XSS攻撃は3種類に分けられます。
1.反射
反射型攻撃は、一般的にURLに表示されます。コードは通常、サーバーに送信パラメータとして、リクエストURLに追加されたXSSこれは、非永続的な攻撃であり、サーバは応答を解析します。応答が結果XSSコードが含まれている場合、ブラウザが解析され、実行されてもよいです。URL移植XSSのコードとサーバー側の構文解析、最後のブラウザが解析し、コードのXSSを実行します。そのため、攻撃のこのタイプは、3つの段階に分けXSS。
例えば:
http:// localhostを:?8080 / helloController /検索名= <スクリプト>警告( "!ちょっと")</ SCRIPT> のhttp:// localhostを:?8080 / helloController /検索名= <IMG SRC = 'w.123 'ONERROR ='警告( "ちょっと!") '> のhttp:// localhostを:?8080 / helloController /検索名= <a onclick='alert("hey!")'>点我する</a>
構築されたシンプルなを使用して、Node.jsのサーバー:
; VAR = HTTP( 'HTTP')を必要とする 。VAR =必要とするURL( 'URL') VAR = http.createServerサーバー((REQは、RES)=> { res.writeHeadは(200 {ある の値//注意コンテンツタイプ、 //テキスト/プレーンコードは<PRE> </ PRE>ブロック効果が攻撃を達するに含まれる "コンテンツタイプ": "テキスト/ HTML;のcharset = UTF-8" }); VAR =のparams url.parse(req.url、真の).query; IF(params.name)res.write( `の<div> params.name $ {} </ div>`); res.end(); }); サーバー.listen(9999)。
クロムブラウザエンジン(クロム、360高速モード)の使用は、特別な治療をした、インターセプトし、Firefoxは、すなわちブロッキングが存在しない、それがFirefoxでテストすることが示唆されます。
結果は以下の通りであります:
2.ストレージタイプ
また、主にサーバーへのXSSコードを送信するために、永続的なXSSの種類として知られているストレージタイプのXSS、そのページが要求され、次回は入れていませんでしXSSコード(それはデータベース、メモリやファイルシステムなどあるかどうか)。最も典型的には、メッセージボードのXSSです。ユーザがデータベースにXSSコードを含むメッセージを送信します。ターゲット・ユーザーの問合せメッセージは、それらのメッセージの内容を解析した後、サーバーからロードされたとき。ブラウザは、通常のHTMLとJSの解析の実行として、あなたのXSSコードを発見しました。XSS攻撃が発生しました。
ユーザー情報を取得するために使用される、例えば:
ジョー・スミスは、ポスト、ジョン・ドウの返事をした。しかし、内容は他の人が持っているだろうというとき、このポストが)、警報(のほんの一例を見てきたjsのスクリプトですが、スクリプトは、もう少し複雑な盗難を書くことができますユーザーのCookieなどの操作。
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <メタ名= "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0"> <メタHTTP-当量= "X-UA-互換"コンテンツ= "IE =縁"> <タイトル>ドキュメント</タイトル> </ head> <body> <テーブル境界= "1"幅= "80%"> < TR> <TD>张三</ TD> <TD> 1楼</ TD> </ TR> <TR> <TD COLSPAN = "2"> XSS攻击三</ TD> </ TR> <TR> < TD>李四</ TD> <TD> 2楼</ TD> </ TR> <TR> <TD COLSPAN = "2">もう一度試してみてください<SCRIPT>警告( '持久化XSS')</スクリプト> </ TD> </ TR> </ TABLE> </ BODY> </ HTML>
これに加えて、このような蓄積型XSSのような非常にハッカーの通常のトリックは、あなたは、いくつかの悪いことを行う情報を盗むか、誘導することができるときにクリックしていくつかの魅力的な写真、テキスト(あなたが知っている!)、そして、ユーザーが生成しています次のようなフィッシングサイトへ
<IMGのonclick = "window.location.href = 'のhttp://www.baidu.com'" 幅= '300' SRC = 'IMG / webwxgetmsgimg.jpg' />
ハイジャック流れとしても、<HEAD> </ HEAD>内scriptlインプラント悪意のあるリダイレクトジャンプすることによって達成することができます。
<スクリプト> window.location.href = "http://www.baidu.com"; </ SCRIPT>
第三に、予防
- 符号フィルタリングへ:
安全性を確保するために、ソースコントロールに、いくつかの違法なものは、入力から濾過されています。、DOMはONERROR属性を削除アップロードするスタイルノードのユーザーを削除するには、ユーザーが提出したとして、<iframe>の、<スクリプト> 、<A> ノード等。 - エンコードへの参照:
後期救済策:そのようなあなたは出力エンコーディングを変換したい場合、これがブラウザを説明していません> <など、いくつかの共通の記号などは、ラベル上で実行され、ディスプレイに影響を与えずに。たとえば、<>エンコードを行う: "<"で使用される: "&LT;"、 " >" と"&GT;"代わりに、 - 基準長さの制限に:
あなたは、いくつかの入力が長さを制限することによって防衛をカットするように強制することができる期待することができますので、我々はそれがXSS攻撃を達することができるように見つける上記の例では、多くの場合、長い文字列を必要とします。 - HttpOnlyの真のクッキーに設定します
第四に、他の
1.しかし、どのようにそれについて、堤防の数千マイルは、限りコロニーがあるとして、全体のダムは安全ではありません。ゲームのセキュリティ攻撃と守備側は、決してセキュリティ情報フィールドの誕生は、常に進化しているように、停止しません。または先天性欠損症の初めから何もは独自のを持っているので、それは紛争の絶えず変革側面でした。
Pentester 2.ウェブ-ウェブスクリプティングの脆弱性運動プラットフォーム、導入およびインストールは以下を参照してくださいpentesterはじめとインストールのためのWeb。