Amazon EC2にDVWAから攻撃してみた

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは!Sekoguchiです。
前回はこちら↓

Amazon EC2にDVWAから攻撃してみた ~事前準備その2~

最後はWAF作成し実際に攻撃します。
AWSでは定義されたセキュリティ標準に対して AWS 環境をテストするAWS カスタマーサポートポリシーがあります。
このポリシーに適合していることでセキュリティ評価または侵入テストを実施することができます。
詳しくはこちらをご覧ください。
https://aws.amazon.com/jp/security/penetration-testing/

手順の概要

  1. WAF作成
  2. WAF動作確認

実行環境

EC2(AmazonLinux2Kernel5.10)XAMPP、DVWAインストール済み
ALB

手順

WAF作成

WAFはWebアプリケーションファイアーウォールの略でアプリケーション層のファイアーウォールとして使用します。
AWSWAFはルールを用いて不正な攻撃等遮断するブラックリスト型です。
今回はALBにWAFをアタッチします。

AWSコンソール画面の検索でWAFを検索します。WAFの作成時は英語のまま実施してください。
日本語の翻訳するとエラーになります。
左タブWebACLsを選択しリージョンを日本にしcreate Web ACL作成へ
名前を適当に決めて右下にある「Add AWS resources」をクリックしALBを選択して次へ
ルール→優先度→Cloudメトリクスの順でページが出てきますが今は全部デフォルトで次へ行き作成してください。

WAF動作確認

DVWAにて実際に攻撃してみましょう!
前回インストールしたDVWAをロードバランサーのDNS 名からXAMPPを開きそこからDVWAへログインします。
初期ログインIDは「admin」初期パスワードは「password」です。
左側タブDVWA SecurityをクリックしSecurity level is currently:impossibleになっていて脆弱性のないサイトなので
レベルを低い値lowにしSubmitをクリック Security level set to lowと表示されれば成功です。

今回はSQLインジェクション、コマンドインジェクション、XSS(クロスサイトスクリプティング)攻撃を実施します。
くれぐれもDVWAサイト内だけで攻撃してください。法で罰せられる可能性があります。

SQLインジェクション

左側タブSQL InjectionをクリックしUser ID:に下記コマンド入力します。
1' or 1=1 union select user,password from users #
検索すると真ん中のほうにFirst nameとSurnameが出てきます。
First name: admin
Surname: 5f4dcc3b5aa765d61d8327deb882cf99
Surnameの欄はハッシュ値になっておりハッシュの逆変換により復元するとpasswordとなります。
これでadminユーザでログインすることができます。これでなりすましが簡単にできてしまいます。

コマンドインジェクション

左側タブCommand InjectionをクリックしEnter an IP address: に下記コマンド入力します。
; cat /etc/passwd
EC2インスタンスのユーザー一覧が出てきました。他にもwgetコマンドで悪意のあるファイルをダウンロードや
ファイル改ざんすることができます。

XSS(クロスサイトスクリプティング)

左側タブReflected Cross Site Scripting (XSS)をクリック
What’s your name?に下記コマンド入力します。
<script>alert('XSS');</script>
ダイアログでセッションIDが表示されます。
別サイトへ誘導し入力した情報やCookieなどが攻撃者へ漏洩します。

WAF動作確認

このような攻撃をAWSWAFのルールを設定すると防ぐことができます。
作成したWebACLsを開きRulesタブからAdd rulesのAdd managed rule groupsをクリック
AWS managed rule groupsの中にある「Core rule set」「POSIX operating system」「SQL database」を有効にし追加します。
Set rule priorityは今回気にしなくていいのでsaveで完了です。

追加したルールは先ほど攻撃した手法をそれぞれ対策したものになります。
「Core rule set」→XSS対策
「POSIX operating system」→コマンドインジェクション対策
「SQL database」→SQLインジェクション対策

ロードバランサーDNSからDVWAを開き先ほどと同じ攻撃をしてください。
全て403 Forbiddenが出るはずです。
これは不正なコマンドをルールとして覚えさせ不正が発覚した場合403 Forbiddenが出る仕組みです。
これでAWSWAFで攻撃を防ぐ動作確認できました。

まとめ

アカウント乗っ取りや情報漏洩、改ざんなどWebセキュリティを強固なものにしないと
あっという間に取り返しのつかない事態に陥ってしまうので、この記事を通してWAF重要性を知っていただければ幸いです。