ペネトレーションテスト&バグバウンティ
Burp Suiteの「Repeater」の機能を使って、やられサーバであるDVWAにアクセスして、SQLインジェクションの確認を行います。
Burp Suiteのテスト環境を構築されていない方はこちらをご覧ください。
- バグハンターが利用するアプリ「Burp Suite」を徹底的に使いこなす。パート1 windowsにXAMPPと、やられサーバーのテスト環境を構築する
- バグハンターが利用するアプリ「Burp Suite」を徹底的に使いこなす。パート2 windowsにBurp Suiteをインストール
SQLインジェクション(SQL Injection)とは
最近のWEBサイトにおいて、データベースが使われていないWEBサイトは皆無だと考えます。
SQLインジェクションとは、データベースを利用しているウェブアプリケーションのデータベースの呼びだしかた(SQL文)に不具合(バグ)が発生した場合の脆弱性になります。
ウェブサイトのデータベースには、商品の情報のほかに、個人情報(氏名、住所、電話番号、クレジット番号、マイナンバー番号など)や、秘密情報などが格納されているため、これらの情報が漏洩してしまうと、大変なことになってしまいます。
※広範囲に影響を及ぼす脆弱性になります。
SQLインジェクション攻撃(SQL Injection Attack)とは
SQLインジェクション攻撃とは、ウェブアプリケーションやデータベースに対するセキュリティ上の脆弱性を悪用する攻撃手法です。攻撃者は不正なSQLコードを注入することで、データベースに対して意図しない操作を行うことができます。
SQLインジェクション攻撃の例を挙げると
ユーザー入力の不適切な処理: ウェブアプリケーションがユーザーからの入力を適切に検証やエスケープ処理せず、直接SQLクエリに組み込んでしまう場合、攻撃者は不正なSQLコードを注入することができます。
クエリの改ざん: ウェブアプリケーションが既存のSQLクエリを動的に構築する場合、攻撃者はクエリの一部を改ざんし、予期しないクエリを実行することができます。
SQLインジェクション攻撃に成功すると
SQLインジェクション攻撃が成功すると、以下のような影響が発生する可能性があります。
- 機密情報の漏洩: 攻撃者はSQLインジェクションを利用して、データベースから機密情報を抽出することができます。これには、ユーザーの個人情報(パスワード、クレジットカード情報、メールアドレスなど)、業務データ、取引履歴などが含まれます。
- データベースの改ざん: 攻撃者はSQLインジェクションを使用して、データベース内のデータを改ざんすることができます。これにより、データの削除、改竄、不正なデータの挿入などが行われる可能性があります。重要なデータの消失やデータの信頼性の低下が生じることがあります。
- ユーザー認証のバイパス: SQLインジェクションによって、攻撃者は通常の認証機構をバイパスし、特権ユーザーとしてシステムにアクセスすることができる場合があります。これにより、攻撃者は管理者と同じ権限でアプリケーションやデータベースにアクセスし、システム全体を侵害することができます。
Burp Suiteの環境を起動
XAMPPの環境の起動
1.XAMPPを起動します。
2.XAMPPのコントロールパネルが開きます。
3.ApachとMySQLの「Actions」の「Start」ボタンを押下します。
※ボタン押下後は「Stop」に表示が変わっています。
Burp Suiteの起動
1.Burp Suiteを起動します。
2.Burp Suite起動中です。
3.「Welcome to Burp Suite community Edtion, Use the options below to create or open a project」の画面で「Next」ボタンを押下します。
4.「Select the configuration that you would like to load for this project」画面で「Start Burp」ボタンを押下します。
5.指定された内容で起動しています。
6.Burp Suiteが立ち上がりました。
※これで、テストできる環境ができました。
SQLインジェクション確認の準備
1.「Proxy」タブを押下します。
2.「Intercept is off」の状態で、「Open browser」ボタンを押下します。
3.ブラウザが立ち上がったら、アドレス欄に「localhost/dvwa/login.php」を入力して、エンターボタンを押下します。
4.「DVWA」のログイン画面が表示されるので、
Usernameに admin
Passwordに password
を入力して「Login」ボタンを押下します。
5.「DVWA」のトップページが表示されました。
6.「セキュリティレベル(脆弱度)」を設定します。左サイドバーの「DVWA Security」ボタンを押下します。
7.セキュリティレベルに「Low(脆弱性有り)」を設定して、「Submit」ボタンを押下します。
Low:このセキュリティ レベルは完全に脆弱であり、セキュリティ対策はまったくありません。
Medimu:この設定は主に、開発者がアプリケーションを保護しようとしたものの失敗した、悪いセキュリティ慣行の例をユーザーに示すことを目的としています。
High:このオプションは中程度の難易度の拡張であり、コードを保護するためのより困難な方法や代替の悪い方法が混合されています。
Impossibil:このレベルはすべての脆弱性に対して安全です。
SQLインジェクション セキュリティ レベルLowの確認
Burp Suiteの「Repeater」の機能を用いて、効率よく確認を行います。
1.左サイドバーの「SQL Injection」ボタンを押下します。
2.「Vulnerability:SQL Injection」の画面が表示されます。
※UserIDを入力して、「Submit」ボタンを押下する画面です。
3.「Burp Suite」の画面に戻り、「Intercept is off」のボタンを押下して、「Intercept is on」にします。
4.「Vulnerability:SQL Injection」の画面に戻り、User IDに「1」を入力して「Submit」ボタンを押下します。
5.「Burp Suite」の画面に戻り、サーバに送信する情報を確認します。
一行目の
GET /dvwa/vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
?id=1が先ほど、UserIDのフィールドに入力した情報になります。
6.「Forward」ボタンを押下してサーバーに情報を送信します。
7.ブラウザのDVWAの画面に
ID: 1
First name: admin
Surname: admin
と表示され、UserIDの1番はadminさんの情報と表示されました。
※これは、正常の操作になります。
8.引き続き「Vulnerability:SQL Injection」の画面で、再度、User IDに「2」を入力して「Submit」ボタンを押下します。
9.「Burp Suite」の画面に戻り、送信データ上でマウスを右クリックして、「Send to Repeater」を選択します。
10.「Burp Suite」の上部の「Repeter」タブをクリックします。
※この機能は、(5.)のサーバに送信する情報が「Repeter」タブの「Request」にコピーされ表示されています。
この「Repeter」タブの情報が、これからSQLインジェクションで使用するテンプレートになります。
11.「Request」の上にある「Send」ボタンを押下すると、サーバにRequestの情報が送信されます。
12.結果は、となりの「Respons」のフィールドに表示されます。
13.「Respons」のフィールドの「Render」タブをクリックすると、ブラウザに表示される情報が表示されます。
※この機能は、サーバに送信する前に、Requestのフィールドに表示されているサーバーに送信する情報を変更(改ざん)して、「Send」ボタンでRequest情報をサーバに送信します。そして、サーバの処理結果を「Respons」のフィールドに表示します。
14.SQLインジェクションの確認の為のデータを設定します。
SQLインジェクションで良く利用されるデータとして、
があります。
これは、単純な真の条件を表すSQLインジェクションのペイロード(データ)です。
これにより、SQLの条件式が常に真となり、通常のクエリの結果が変化しなくなります。
この
のデータを利用して、ウェブアプリケーションの脆弱性を確認します。
その前に、
の情報をサーバーが理解できるようにエンコードします。
15.エンコードするために「Burp Suite」の画面の「Decoder」タブを押下します。
16.フィールドに
を入力します。
17.「Encode as …」のボタンを押下し、「URL」をクリックします。
18.下のフィールドにエンコードされた結果が表示されます。
結果は「%27%20%4f%52%20%27%31%27%3d%27%31」になります。
※この結果をコピーしておきます。(CTRL + C)
19.「Repeter」の画面に戻り、サーバに送信する情報
?id=2
を以下に変更します。
?id=%27%20%4f%52%20%27%31%27%3d%27%31
20.変更した情報で「Send」ボタンを押下します。
21.右側のResponseのフィールドが以下のように表示されます。
22.Responseのフィールドの「Render」タブを押下します。
上図のように表示され、データベースに登録されている情報が全て表示されました。
※ウェブアプリケーションの脆弱性が発見されました。
23.このように、「Repeter」の機能を使うとブラウザを操作しなくても、入力データを変更して、何度もサーバーに情報を送信して結果を見ることができます。
バグハンターが利用するアプリ「Burp Suite」を徹底的に使いこなす。パート5 Burp Suiteの「Repeater」の機能を用いてSQLインジェクションの確認を行うのまとめ
Burp Suiteの「Repeater」の機能を使うと、脆弱性がテストが簡単にできることがわかりました。
今回は、「DVWA Security:セキュリティレベル(脆弱度)」を「Low」で確認してみましたが、Medimu、High、Impossibilで確認して脆弱度を確認してみてください。
また、SQLインジェクションで今回、
のコードを使用しましたが、他にも多くのコードがあるので調べてみてはいかがですか?