0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

QNAP上で動いているMultimediaConsole用のMariaDBにログインする話

Last updated at Posted at 2023-09-18

QNAP上で動作しているMariaDBをハックしたくなった。

QNAPでは、「App Center」からインストールするMariaDBとは別に、Multimedia Consoleなどを動かすとデータ格納用MariaDBが動作する。
私のQNAP TS-453Beでは以下のようなプロセスが動いている。

admin@qnap:/share/CACHEDEV1_DATA/$ ps aux | grep mariadb
 4739 admin      2372 S   grep mariadb
13340 admin      2328 S   /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my-mariadb.cnf --basedir=/usr/local/mariadb --datadir=/share/CACHEDEV1_DATA/.system/data --user=admin --default-storage-engine=MyISAM --wait_timeout=2628000 --pid-file=/var/lock/mariadb.pid --tmpdir=/share/CACHEDEV1_DATA/.system/tmp
21149 admin      2484 S   /bin/sh /share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/mariadb10/bin/mysqld_safe --defaults-file=/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/my.cnf --basedir=/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/mariadb10 --datadir=/share/CACHEDEV1_DATA/.system/data.m10 --tmpdir=/share/CACHEDEV1_DATA/.system/tmp.m10 --user=admin --default-storage-engine=InnoDB --wait_timeout=2628000 --pid-file=/var/lock/mariadb10_mmc.pid
21900 admin    2181748  S   /share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/mariadb10/bin/mariadbd --defaults-file=/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/my.cnf --basedir=/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/mariadb10 --datadir=/share/CACHEDEV1_DATA/.system/data.m10 --plugin-dir=/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole/mariadb10/lib/plugin --user=admin --tmpdir=/share/CACHEDEV1_DATA/.system/tmp.m10 --default-storage-engine=InnoDB --wait_timeout=2628000 --log-error=/share/CACHEDEV1_DATA/.system/data.m10/qnap.err --pid-file=/var/lock/mariadb10_mmc.pid --socket=/tmp/mariadb10_mmc.sock --port=3310

mysql--port 3310 で動作していることが上記PS結果からわかる。

じゃあ、このMariaDBにアクセスできればMultimedia Consoleが保存しているデータを直接いじれちゃうよね?という話。

なんでこんなことやろうと思った?

共有フォルダ名をもとのディレクトリ名ごと変更したら、MultimediaConsoleで画像解析がゼロから再実行することになってめちゃくちゃ大変なことになってしまい、もしMultimediaConsoleのもとのデータベースをいじれればそういうこともなくなるのかな、という後学のためにハックしておくか、というのが事の発端。

ログインID/PWを調べるには?

QNAPの持ち主ということもあり、sudoもできるのでいったんmysqldを停止してパスワード不要モードで起動しなおしてもいいが、動作がどうなるか不安なのでMultimedia ConsoleがDB作成するときのスクリプトをのぞき込んでみる。

どのような設定でインストールされている?

App Centerでインストールしたアプリは基本的に下記ディレクトリ配下にインストールされる。

admin@qnap:/share/CACHEDEV1_DATA/.qpkg$ ls -la
total 96
drwxrwxrwx 24 admin administrators 4096 2023-09-15 18:56 ./
drwxrwxrwx 41 admin administrators 4096 2023-09-18 13:32 ../
drwxr-xr-x 18 admin administrators 4096 2023-09-13 21:20 container-station/
drwxr-xr-x  2 admin administrators 4096 2023-09-15 18:57 .installation/
drwxrwxr-x 10 admin administrators 4096 2023-09-16 18:57 MalwareRemover/
drwxrwxrwx  9 admin administrators 4096 2023-09-07 18:32 MultimediaConsole/
drwxr-xr-x 13 admin administrators 4096 2023-09-06 00:53 QKVM/
drwxrwxrwx  8 admin administrators 4096 2023-07-09 11:29 .QKVM/
drwxrwxrwx  2 admin administrators 4096 2023-07-11 08:18 .@qRPlayCenter/
drwxrwxr-x 15 admin administrators 4096 2023-09-14 17:54 Qsirch/
drwxrwxrwx  5 admin administrators 4096 2023-09-13 21:18 qumagie/
drwxr-xr-x  7 admin administrators 4096 2023-09-06 00:35 QuMagieCore/
drwxrwxrwx  4 admin administrators 4096 2023-09-07 18:37 VideoStationPro/

MultimediaConsole 配下にインストールされていることは一目瞭然(ps結果のmariadbの実行ファイルの場所でもわかるけどね)
この配下に入り込んでごちゃごちゃとある怪しげなファイルを読んでみると以下のファイルが見事に怪しい。

admin@qnap:/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole$ cat my_mariadb.sh 
#!/bin/bash
#
# Manages MariaDB
#
set -u

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
~~snip~~

このファイルを読み進めると setup_user() というファンクションがあり、その中の変数とかを見ているとROOTアカウントのID/PWがわかる。暗号化されていないので、普通に読み解ける。いいのかよこれ。
念のためIDPWは書かないでおくので自分で調べてみてください。

MariaDBにログイン

ということで、ここまで分かったIDPWおよびPortを使ってMultimediaConsole用に起動しているMySQLにログインができる準備が整った。
mariadbのクライアントプログラムはQNAP全体にインストールされていないので、MultimediaConsoleのbinディレクトリ配下にあるものを使う必要がある。

admin@qnap:/share/CACHEDEV1_DATA/.qpkg/MultimediaConsole$ mariadb10/bin/mariadb -u <ROOTID> -p<ROOTPW> -P 3310
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 725257
Server version: 10.11.3-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| s00                |
| s01                |
| sys                |
| test               |
+--------------------+
7 rows in set (0.001 sec)

MariaDB [(none)]>

ということで、MultimediaConsole用Mariadbにログインできた。
ROOT権限なのでいじり放題、見放題。

MultimediaConsole用MariaDBの中身は?

レコードが格納されているテーブル一覧を見てみる。

MariaDB [(none)]>  select table_schema ,table_name, table_rows from information_schema.TABLES where table_schema not in ('mysql','performance_schema') and table_rows > 0 ;
+--------------+--------------------------+------------+
| table_schema | table_name               | table_rows |
+--------------+--------------------------+------------+
| s00          | subtypeTable             |          6 |
| s01          | ACL2Table                |         74 |
| s01          | artistTable              |         22 |
| s01          | genreTable               |          8 |
| s01          | pictureKeyWordTable      |          1 |
| s01          | pictureTable             |     368680 |
| s01          | videoTable               |      16156 |
| s01          | playHistoryTable         |          3 |
| s01          | faceGroupTable           |          6 |
| s01          | faceGroupClusterMapping  |         34 |
| s01          | faceFeatureTable         |     249430 |
| s01          | pictureImageClassSummary |       1000 |
| s01          | placeAddress             |       2274 |
| s01          | placeAddressUnit         |     312455 |
| s01          | pictureImgClassSynonym   |       5620 |
| s01          | pictureImgClassCategory  |         16 |
| s01          | albumViewHistory         |         31 |
| s01          | pictureViewHistory       |        452 |
| s01          | pictureColorMapping      |     247985 |
| s01          | StorageTable             |          3 |
| s01          | pictureKeyWordMapping    |         21 |
| s01          | dirTable                 |      17225 |
| s01          | songTable                |        210 |
| s01          | albumTable               |         17 |
| s01          | pictureAlbumMapping      |          4 |
| s01          | subtypeTable             |          7 |
| s01          | objDeletionTable         |          2 |
| s01          | faceTable                |     288965 |
| s01          | faceClusterTable         |       2457 |
| s01          | pictureImgClass          |        420 |
| s01          | pictureImgClassMapping   |     255895 |
| s01          | faceClusterSuggestion    |      15460 |
| s01          | pictureImgHash           |     332303 |
| s01          | flagSummary              |         19 |
| s01          | keySummary               |         11 |
| s01          | mediaPick_tmp            |     336239 |
| s01          | mediaPick_5_0            |     415817 |
| s01          | mediaPick_5_1000         |     397388 |
| sys          | sys_config               |          6 |
+--------------+--------------------------+------------+
39 rows in set (0.178 sec)

ファイル管理をしているのがpictureTableで、それ以外のテーブルはその他付加情報を管理しているのかな。
これからもっと研究してみよう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?