【TryHackMe】Advent of Cyber3 (2021)を続けてみた Day7
Welcome to Advent of Cyber 2021
クリスマスまでの25日間、毎日基本的な知識を学び、初心者向けの新しいセキュリティ演習を行うことで、サイバーセキュリティを始めることができます。
day7
今回は、NoSQLに関してです。
NoSQLとは
NoSQLデータベースは、高速なクエリ、開発者にとっての使いやすさ、容易なスケール、柔軟なデータ構造といった強力な機能を備えているため、最近ではビッグデータやIoTデバイスによく使われています。
NoSQLデータベースには、MongoDB、Couchbase、RavenDBなど、さまざまなタイプのものが対象となります。しかし、このタスクでは、無料で人気のあるドキュメントストア型NoSQLデータベースであるMongoDBデータベースに焦点を当てます。
リレーショナルデータベース(MySQLやMSSQLなど)と同様に、MongoDBはデータベース、テーブル、フィールドで構成されていますが、以下のように名前が異なります。
- Collections : MySQLやMSSQLのテーブルやビューに似ています。
- Documents : MySQLやMSSQLの行やレコードに似ています。
- Fields : MySQLやMSSQLのカラムに似ています。
対象へssh接続する。thm:tryhackme
┌──(kali㉿kali)-[~]
└─$ ssh [email protected] -p 2222
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-1059-aws x86_64)
...(略)
thm@mongo-server:~$
Mongoデータベースに接続します。
thm@mongo-server:~$ mongo
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c98de9c0-c849-46ce-873a-d03a7e1685f8") }
MongoDB server version: 5.0.3
================
...(略)
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
show databases
コマンドを使用し、すべてのデータベースを表示します。
> show databases
admin 0.000GB
config 0.000GB
flagdb 0.000GB
local 0.000GB
flagdb
が怪しい。。データベースに接続する場合は、use
コマンドを使用します。
flagColl
というcollectionsが見つかった。
> use flagdb
switched to db flagdb
> show collections
flagColl
ここにアクセスする。flagを発見。
> db.flagColl.find()
{ "_id" : ObjectId("618806af0afbc09bdf42bd6a"), "flag" : "THM{8814a5e6662a9763f7df23ee59d944f9}" }
続いて、http://10.10.158.73/login
へアクセス。
NoSQLインジェクションを利用する前に、インジェクションで多用されるMongoDBの演算子について知っておく必要があります。
$eq - 特定の値に等しいレコードにマッチします。
$ne - 特定の値に一致しないレコードにマッチします。
$gt - 特定の値よりも大きいレコードにマッチします。
$where - Javascriptの条件に基づいてレコードにマッチします
$exists - 特定のフィールドを持つレコードにマッチします。
$regex - 特定の正規表現を満たすレコードにマッチします。
使用例としては次のようになります。
例1)username
=admin
で、全role
を表示
http://example.thm.labs/search?username=admin&role[$ne]=user
例2)全username
で、role
=user
を表示
http://example.thm.labs/search?username[$ne]=admin&role=user
さて、この知識を基にBurpにて管理者ログインの試行します。
http://10.10.158.73/login
username
=admin
のpassword
が分からないので$ne
を使用します。
ログイン成功。Flag!
を発見。
(Flag: THM{b6b304f5d5834a4d089b570840b467a8}
)
次に、Search
にてユーザーを検索する。
http://10.10.158.73/search?username=admin&role=user
このURLを次の様に変更します。
10.10.158.73/search?username[$ne]=admin&role=guest
同じ方法で、mcskidy
のデータを取得します。
10.10.158.73/search?username=mcskidy&role[$ne]=guest
Answer
Interact with the MongoDB server to find the flag. What is the flag?
THM{8814a5e6662a9763f7df23ee59d944f9}
We discussed how to bypass login pages as an admin. Can you log into the application that Grinch Enterprise controls as admin and retrieve the flag? Use the knowledge given in AoC3 day 4 to setup and run Burp Suite proxy to intercept the HTTP request for the login page. Then modify the POST parameter.
THM{b6b304f5d5834a4d089b570840b467a8}
Once you are logged in, use the gift search page to list all usernames that have guest roles. What is the flag?
THM{2ec099f2d602cc4968c5267970be1326}
Use the gift search page to perform NoSQL injection and retrieve the mcskidy record. What is the details record?
ID:6184f516ef6da50433f100f4:mcskidy:admin
Author And Source
この問題について(【TryHackMe】Advent of Cyber3 (2021)を続けてみた Day7), 我々は、より多くの情報をここで見つけました https://qiita.com/hoglet/items/2012ca1c14b865172680著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .