Shikata Ga Nai

Private? There is no such things.

Time-Based SQL Injection to Dumping the Databaseを訳してみた

Hello there, ('ω')ノ

 

データベースをダンプするための時間ベースのSQLインジェクションを。

 

脆弱性:

 SQLインジェクション

 Androidのバグ

 

記事:

 https://thevillagehacker.medium.com/time-based-sql-injection-to-dumping-the-database-da0e5bcaa9df

 

SQLインジェクションとは:

攻撃者がアプリケーションがデータベースに対して行うクエリを妨害することを。

可能にするWebセキュリティの脆弱性で。

通常、攻撃者は通常は取得できないデータを表示できて。

これには、他のユーザに属するデータ、またはアプリケーション自体が。

アクセスできる他のデータが含まれる場合があって。

多くの場合、攻撃者はこのデータを変更または削除して。

アプリケーションのコンテンツや動作に永続的な変更を加える可能性があって。

今回は、脆弱性を見つけるために資産追跡アプリケーションをテストしていて。

それは、アンドロイドのアプリケーションで。

アプリをインストールして、それをリバースエンジニアリングして。

ハードコードされた秘密をチェックしたものの何も見つからず。

 

次に、SSL証明書のピン留めをバイパスしたところ。

アプリケーションが、下記を使用していることに気付いて。

 Content-Type: application/json; charset=UTF-8

 

これは、JSONリクエストを使用してアクションを実行するアプリケーションを。

正確に意味しているので。

 

許可なくアクティビティをトリガできれば。

アプリケーションに大きな影響があるとすぐに思ったので。

MobSFからすべての活動を集めることに。

 https://github.com/MobSF/Mobile-Security-Framework-MobSF

 

f:id:ThisIsOne:20210923201144p:plain

 

そのアプリケーションには、2つのダッシュボードアクティビティが存在するという。

アクティビティの1つが注意を引いたので。

最初のアクティビティをトリガするために使用することに。

 com.abc.xyz.view.activity.DashboardActivity ⇨ activity  1com.abc.xyz.view.activity.DashboardActivitySecond ⇨ activity 2

 

アプリケーションのダッシュボードが開くとデフォルトのページが表示されるので。

次に、別のアクティビティを調べて何かを取得できるかどうかを確認すると。

下記のアクティビティが存在し、正常にトリガされて。

 com.abc.xyz.view.activity.SearchActivity

 

探している正確な情報を検索するには多くの情報が必要であったので。

それらすべてを入力すると。

下記のリクエストのJSON本文が注意を引いたので。

インジェクションの脆弱性をチェックすることに。

f:id:ThisIsOne:20210923194704p:plain

 

abc_serial_noオブジェクトが注意を引いたので。

そのオブジェクトにを追加して何が起こるかを確認すると。

500 INTERNAL SERVER ERRORが発生したので。

このオブジェクトはSQLインジェクションを実行することに対して脆弱で。

 

POSTリクエストをファイルにコピーして。

それをsqlmapに渡してプロセスを自動化して。

バックエンドデータベースを見つけることに。

 sqlmap -r example.txt banner

 

f:id:ThisIsOne:20210923194734p:plain

 

すると、バックエンドデータベースはPostgreSQLで。

データベースバナーを取得しようとしたとき、sqlmapはJSONオブジェクトの。

abc_serial_noが、時間ベースのSQLインジェクションに対して。

脆弱であることを示したので。

ペイロードを適用してサーバからの応答が、5,044ms遅延していることを確認して。

下記がペイロードで。

 ”abc_serial_no”: ”1' AND 9520=(SELECT 9520 FROM PG_SLEEP(5)) AND ‘GRTs’=’GRTs”

 

f:id:ThisIsOne:20210923194803p:plain

 

下記のようにsqlmapを使用してデータベースを取得して。

 sqlmap -r example.txt --dbs

 

f:id:ThisIsOne:20210923194829p:plain

 

データベースの取得:

 sqlmapは、プロセス全体を自動化してデータベース全体を提供してくれて。


参考文献:

    https://portswigger.net/web-security/sql-injection
    https://github.com/thevillagehacker/Bug-Hunting/tree/main/SQL-Payloads
    https://owasp.org/www-community/attacks/SQL_Injection
    https://www.w3schools.com/sql/sql_injection.asp

 

Best regards, (^^ゞ