Webアプリケーションのハッキング
ではこれから、僕が作成したWebアプリケーションへのハッキングを実際に行うことで、ハッキングの手法そして対策方法を学びましょう。
今回扱うWebアプリケーションは本カリキュラムのために作成したもので、脆弱性を攻撃するためだけの用途になります。
Webアプリケーションは、先ほどインストールしたLinux Mint上で動いています。
Webアプリケーションの脆弱性
実践に入る前に、Webアプリケーションの脆弱性とはどのようなものかを説明します。
Webアプリケーションの脆弱性とは、Webアプリケーションが攻撃者に対して意図しない動作を可能にするセキュリティ上の欠陥のことを指します。これはソフトウェアの設計ミスや実装エラーなどさまざまな原因で生じます。
Webアプリケーションの脆弱性を悪用されると、下記の様な被害が発生します。
- データ漏洩:悪意のある攻撃者が脆弱性を利用してシステムにアクセスし、機密データを盗むことができます。これにはクレジットカード番号や個人情報などが含まれます。
- コード実行:特定の脆弱性を利用すると、攻撃者は不正なコードをサーバー上で実行することが可能になります。結果的に、攻撃者はシステムを制御下に置くことができます。
- 改ざん:攻撃者は脆弱性を利用してWebサイトの内容を改変することが可能です。これには、ユーザーを偽サイトに誘導したり、悪意のあるリンクやダウンロードを強制したりする場合があります。
Webアプリケーションの脆弱性は大きく分けて2つです。
クライアントサイドの脆弱性は、ユーザーのブラウザ上で発生する脆弱性であると考えてください。サーバーサイドの脆弱性は文字通りサーバー上で発生する脆弱性のため、情報漏洩などに繋がるおそれがあります。
Webアプリケーションには様々な脆弱性が存在しますが、今回は下記6つの脆弱性を学びます。
- XSS(クロスサイトスクリプティング)
- SQLインジェクション
- OSコマンドインジェクション
- ディレクトリトラバーサル
- ブルートフォース攻撃
- IDOR(安全でない直接オブジェクトの参照)
それぞれの脆弱性の説明は後ほど行います。
では実際にハッキングしてみましょう。
Burp Suite
まずはWebアプリケーションをハッキングするために必要なツールを起動します。
それが「Burp Suite」です。(Kali Linuxにすでにイントールされています。)
Burp Suiteとはローカルプロキシツールであり、クライアント(ブラウザ)からサーバーに対して送信されるHTTP/HTTPSリクエストの中身を傍受・改変できるツールです。リクエストだけでなくレスポンスも取得可能です。
言葉で説明されても分かりにくいでしょうから、実際に触って学びましょう。
ちなみにローカルプロキシツールはBurp Suite以外にも様々なツールが存在しますが、おそらく最も利用者が多いであろうBurp Suiteを使用します。
僕も実際の業務でBurp Suiteを愛用しています。
まずKali Linux上で左上隅のアイコンを押して、Burp Suiteと検索して起動します。
全てデフォルトのまま次へ進めていくと、下記の様な画面が表示されるはずです。
現在のBurp Suiteでは、設定済みのブラウザを開くだけですぐにHTTPSリクエストの傍受・改変が可能です。
Proxyタブを選択し、「Open browser」ボタンを押すと、ブラウザが立ち上がります。
このブラウザから送信されるリクエストは必ずBurp Suiteを通るため、例えばGoogleに行ってみるとリクエストがキャプチャされているのが分かります。
「Proxy」タブの「HTTP history」タブを選択してください。
Googleに飛んだだけですが、大量のリクエストが送信されていることがわかります。
各リクエストを見てみると、様々なデータが送信されていることが確認できます。それぞれの値が何を表しているかを説明すると時間がかかりますので、一番大事な「パラメータ」について知ってもらえればと思います。
下記記事を参考にしてみてください。簡潔に書かれています。
今回のカリキュラムで扱うリクエストは2つで、GETリクエストとPOSTリクエストです。
GETリクエストでは、パラメータがURLの一部として送信されます。下記の例では5という数字をパラメータとして送信しています。
https[:]//example.com/add?number=5
一方POSTリクエストではURLではなく、リクエストボディの一部として送信されます。
ですから、基本的にBurp Suiteなどのローカルプロキシツールを使用していないと、送信しているパラメータを確認することができません。
実際の例を見てみましょう。
上記画像では、127.0.0.1というIPアドレスを送信していることが分かります。
では実際に、ハッキング対象のWebアプリケーションへのリクエストをBurp Suiteで見てみましょう。
前回の記事でお伝えした方法で、ハッキング対象のLinux MintのIPアドレスを取得します。そしてBurp Suiteで起動したブラウザにて、下記の様にURLを入力してください。(IPアドレスは先ほど取得したものを使用してください。)
下記例では、IPアドレスが10.0.2.23であったと仮定します。
例えば「XSS(クロスサイトスクリプティング) - Level1」をクリックしてみると、2乗計算プログラムが出てきます。
適当な数字を入力してみましょう。
するとGETリクエストにて、入力した数字を送信していることが確認できます。
今はまだ通信の傍受だけで改変を行っていません。
実際にWebアプリケーションを攻撃する中で、必要となった際に方法をお伝えします。
では次の記事にて、XSSなどのWebアプリケーションの脆弱性を学んでいきましょう。
learn-ethicalhacking.hatenablog.com