Exp9 Webセキュリティインフラストラクチャ
基本的な質問には答え:
-
SQLインジェクション攻撃、どのように守るために?
-
SQLインジェクション攻撃は、WebフォームにSQLコマンドを介して挿入されて送信したり、ドメイン名のクエリ文字列またはページ要求を入力し、最終的には悪質なSQLコマンドを実行するための欺瞞サーバーの目的を達成します。
- SQLインジェクション攻撃の防止のため、主に私たちは、コードから開始すべきだと思います。
- 限り、それをのsetXXX値を使用する従来の方法として、SQLインジェクションを処理する能力を内蔵したPreparedStatementプリコンパイル文のセットを、使用します。それは、代わりにそのため、SQL文の準備を解析しての、データ処理として、(コンパイル)プロセスは、有害な影響を持っている、とのPreparedStatementの準備ができてSQLインジェクションSQL文にのみ準備動作しますが、実行段階の入力文字列SQLインジェクションの問題を回避。
- 入ってくるのパラメータは、SQLインジェクションのフィルタリングが含まれているいくつかのキーワードをフィルタリングするために正規表現を使用します。
- ストリングの濾過方法。
- JSP SQLインジェクションからURLを防ぐために、無効な文字をチェックするために、この関数を呼び出します。
-
-
原理XSS攻撃、どのように守るために?
- XSSは、Webページを表示するときに、他のユーザーが影響を受けるであろう、悪意のあるユーザーがページにコードを挿入することを可能にするコードインジェクションあり、かつ成功裏にブラウザを実装することができます。このような攻撃は、多くの場合、HTMLとユーザ側のスクリプト言語が含まれています。XSS攻撃の主な目的は、この情報を使用すると、任意の着陸地点でのインターネットパソコンを活用できるようにすることができ、seesionを持っているため、クッキーと同等の攻撃サイトのクッキーのターゲットを取得する方法を見つけることであり、他の人のアイデンティティでログインして、いくつかのダメージを与えます。
- XSSの防衛は、次の二つの側面ことがあります
- 前者の方法は、フォームの送信またはURLのパラメータ渡し、必要なフィルタパラメータです。
- このような角ブラケット、引用符と出力のように、厳密なコントロールとして違法なコンテンツのユーザ入力、かどうかをチェック。
3.CSRF攻撃、どのように守るために?
- 私たちは、XSSのクロスサイトスクリプティング攻撃、攻撃者のスクリプトがそのクッキーやその他の情報を取得するために、ユーザーのブラウザで実行されていることを知っています。CSRFは、要求が、いわゆる、ユーザの意図ではないため、Webサーバにリクエストを送信し、ユーザーのIDを借用し、「クロスサイトリクエストフォージェリ。」
- CSRFの防御のためにも、次の側面から開始することができます:
- リファラによって、ユーザによって提出されたトークンまたは認証コードが検出されます。
- 最適な使用のポスト操作を変更または削除するユーザーのために、リンクのページにユーザーのプライバシー情報を公開しないようにしてください。
- 一般的なCookieステーション全体、厳格なセットCookieドメインを避けてください。
実験手順:
、WebGoat設定
https://github.com/WebGoat/WebGoat/releases/tag/7.0.1ウェブサイトを入力します。
ダウンロードwebgoatコンテナ-7.0.1-戦争-exec.jar
入力 webgoatコンテナ7.0.1-戦争-exec.jar - マウントされたjarパッケージのjava -jar
ブラウザのログイン情報を開くには、地図上の赤いボックスを見た後 // localhostを:8080 / WebGoatサイトのhttpを。
二、SQLインジェクション攻撃(インジェクションの欠陥)
1.噴射指令(コマンド・インジェクション)
- インジェクションの欠陥を選択- > [コマンドインジェクション
右ページボックス、ソースコードを変更する要素のレビューページ要素を検査選択し、最後に追加"& netstat -an"
- 表示するにはクリックして、ネットワークポートの使用状況やIPアドレスを参照して、攻撃が成功します
2.ログ欺く(ログインスプーフィング)
-
- 选择インジェクションの欠陥 - >ログインスプーフィング
- ユーザー名JS入力します
%0d%0aLogin Succeeded for username: admin
使用0D%(入力)と%0A(改行)を二列に表示されるログイン - 任意のパスワードを入力し、[ログイン]をクリックした後、成功は、ログファイルにユーザー名を追加します。
3.SQL注入(LAB:SQLインジェクション)
ステージ1:文字列のSQLインジェクション
-
- インジェクションの欠陥を選択 - >文字列SQLインジェクション、右ページパスワードパスワードボックス、ソースコードを変更する要素のレビューページ要素を検査選択し、最大の長さの上限が20に変更されました
-
- ネビルのユーザログイン、パスワード
Smith' or '1' = '1
- 攻撃は、すべての関係者のリスト成功しています
- ネビルのユーザログイン、パスワード
4.ブラインドSQLインジェクション(ブラインド数値SQLインジェクション)
- 情報サーバは、2つの方法でページを返します。有効なアカウントを、アカウントが有効ではないので、単純にPIN値のアカウントを照会することはできません。しかし、あなたは、クエリとバックグラウンドでシステムを使用することができ
SELECT * FROM user_data WHERE userid=accountNumber;
、戻り情報アカウントであれば、ページがそうでない場合は、プロンプト無効、アカウントが有効でプロンプトが表示されます。 - 入力
101 AND 1=1
ページは、有効なアカウント番号を返します。
-
-
入力し
101 AND 1=2
第2の条件が満たされていない、ページが無効なアカウント番号を返します。
-
-
-
入力
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
ページが無効な口座番号を返し、説明PIN <= 10000
-
-
- 入力するいくつかの試みは、入力した
2364
正しいPIN値を
- 入力するいくつかの試みは、入力した
二、XSS攻撃
1.蓄積型XSS攻撃(ストアドXSS攻撃)
-
- 任意の入力、メッセージボードの入力でタイトル文字で
<script>alert("js4303");</script>
- 任意の入力、メッセージボードの入力でタイトル文字で
2.反射型XSS攻撃(XSS攻撃反射)
-
- コード入力し
<script>alert("js4303");</script>
、それがフィードバックを与えると同時に、購入ページのクリックを
- コード入力し
三、CSRF攻撃
1. CSRF(クロスサイトリクエストフォージェリ(CSRF))
-
- それぞれのsrc値で321と900のページとメニューのパラメータの右側をチェック
-
- タイトルに指定した任意のパラメータを入力し、入力メッセージボックス
<IMG SRC = "のhttp:// localhostを:?8080 / WebGoat /攻撃スクリーン= 321&メニュー= 900&transferFunds = 5000" />
-
- 点击 Submit (其中语句中的&transferFunds=5000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)
-
2.绕过 CSRF 确认( CSRF Prompt By‐Pass
)
-
- 查看页面右侧Parameters中的src和menu值分别为279和900
-
- 在title框中输入学号,message框中输入代码:
-
点击链接,攻击成功
实验感想:
这次实验难度不高,但项目比较多,因此也花费了不少时间。终于做完了最后一个实验,有点小开心,尽管说实话自己也觉得做得不怎么样,验收从没有去过,现场的确做不出来,一般要花费好几天才能搞定,因此从来没敢去验收。但将基础的东西完整地做完,我觉得自己的收获也不少。尽管过程很痛苦,但现在想起来还是挺好的。