Metasploitable2でWebアプリの脆弱性を勉強する(SQLi その1)

Metasploitable2を使ってWebアプリの脆弱性を勉強する機会があったので備忘録がてら記事にします。

※記事の内容は、ご自身が管理するサイト以外には絶対に使用しないでください。

[OWASP TOP10] A1_Injection_SQLi_1_ExtractData_UserInfo


f:id:jiranyan:20190305112112p:plain

ExtractDataですのでSQLiを使ってデータを抽出するという事が想像できます。

まずは、どのようなサイト(機能)かどうかを調査します。

NameとPasswordを入力し、Passwordがあっていればアカウント情報を表示する機能のようですので、他ユーザの情報を収集することが目的になります。

f:id:jiranyan:20190305113409p:plain

ブラウザからどのようなリクエストを送信しているか調査します。

NameとPassowdを送信しています。(あたりまえ)

f:id:jiranyan:20190305114323p:plain

SQLiなのでどのようなSQLを投げているかソースを見てみます。(反則)

<?php
$lQuery = "SELECT * FROM accounts WHERE username='".$lUsername."' AND password='".$lPassword."'";

具体的に値をあてはめたSQLです。

SELECT * FROM accounts WHERE username='jiranyan' AND password='password'

目的(他ユーザの情報を収集)を遂行するには、ユーザを限定せず(条件がヒットしちゃうと1レコードしか返らないので)、すべてのユーザを情報が取得できるSQLを投げなければならないことが想像できます。

こんな感じです。

SELECT * FROM accounts WHERE username='test' AND password='test' OR 'a'='a'

試してみます(ブラウザからのリクエストを改ざん)

f:id:jiranyan:20190305120844p:plain

全ユーザの情報がとれました。

f:id:jiranyan:20190305121107p:plain