VulnHubでSickOs: 1.2をやってみたよ~!
VulnHubのSickOs: 1.2をやってみたよ~!ということでやっていく。
https://www.vulnhub.com/entry/sickos-12,144/
まずは対象ホストのアドレスを取得する。
/etc/hostsに[address] [name]の形でIPと名前の対応を登録しておくと、勝手に名前解決してくれるから便利。アドレスを取得できたら稼働中のサービスを確認する。Nmapでポートスキャン。
22番ポートでssh、80番ポートでhttpが可動している事がわかる。
早速アクセスしてみる。
う~ん?なにもない…?名前解決されてない…?
アドレスを直打ちして再度アクセスしてみる。
おっ、何か表示された。これは若かりしキアヌ・リーブスですな。ちなみにソースに有意な情報はなかった。他にページや脆弱性がないかdirbとniktoでスキャンする。
/test/というページがあるらしい。アクセス結果は以下。
サーバーのディレクトリが見えてしまっている。ここからどうすればいいのだろうか。
ここでつまってしまい結局writeupをみた。どうもこのページではPUTメソッドが有効になっているらしくそれを利用してサーバーにリソースを作成するらしい。
次の画像ではcurlコマンドでページ情報を取得している。Allow項目にPUTメソッドがたしかに確認できる。
実際にPUTメソッドを使ってサーバーにコマンドを実行させるリソースをアップロードする。
URLの引数にcmd=[command]を与えてやればコマンドが実行できる。
次の画像はidコマンドとlsコマンド、unameコマンドを実行させた様子。
さて、URLからコマンドが実行できるのならリモートシェルも張れるはずだ。
次のコマンドのアドレスとポートを調整して実行させてみる。
まずはURLエンコードする。
次にKali側で予め待ち受けておく。
最後にエンコードした文字列をcmd=のあとに続けて入力し、Enter!
OK!接続できた!
よし、内部を探索してみよう。
ざっとみてヒントになりそうなものは見当たらない。
また、OSの脆弱性情報を照会しても刺さりそうなものはなかった。
ここで再びつまった。こういうときはroot権限で動作中のデーモンをみつけて権限昇格を狙ったりするのだが、どうしたものか。
結局writeupをみた。root権限で定期実行されているChrootkitに脆弱性があるらしい。
これは/tmp内にupdateというファイルを設置するとChrootkitの権限で実行されてしまうというものだ。
次のコマンドは、ユーザー:www-dataかつ実行時にパスワードを求めない形で、sudo suを実行できるようにupdateというファイルを/tmpに追加するというもの。
echo 'echo“ www-data ALL = NOPASSWD:ALL” >> / etc / sudoers && chmod 440 / etc / sudoers'> / tmp / update
しばらくしてこのupdateファイルが実行されていれば、sudo suでrootに昇格できる。
その前にフルシェルを得ておく。
sudo suを試してみると見事権限昇格できている。やったね!
フラッグゲット!
Thanks to D4rk for this CTF!
システム侵入前と侵入後で2度詰まった。
curlでリソースをPUTする方法は単純に知らなかったが、Chrootkitの脆弱性を利用する部分はもうすこし粘れば自力で導けた感はある。いずれにせよ経験値不足が目立つのでもうちょっとVulnHubの問題を解いていきたい。