フューチャー技術ブログ

Hack The Box Oopsie を解いてみた

はじめに

金融グループ所属、2022年4月入社の藤戸四恩です。春の入門ブログ連載の7本目です。

2022年のアドベントカレンダーでHack The Boxのstarting pointを解いてみたの記事を書きました。今回も「Hack The Box」のStarting PointのTIER2のOopsieを解いてみたので感想を書きたいと思います。

Hack The Boxとは

Hack The Boxとは、サイバーセキュリティスキルの向上トレーニングができるオンラインプラットフォームです。

仮想の環境が用意されており、脆弱性をついてflagの取得を目的としています。

Starting Pointとは

Starting Pointとは、Hack The Boxを行う上での基礎的なことを学ぶことができる、チュートリアルです。Starting Pointには、TIER0、TIER1、TIER2の3つあります。各問題にTASKが複数あり、最後にflagを取るための誘導になっています。

Oopsie

TIER2の問題からroot.txtuser.txtの2つフラグを取得する必要があります。

問題はTASK1 ~ TASK10とroot.txtuser.txtの中身を提出する12問から構成されています。

TASK1

With what kind of tool can intercept web traffic?

どのようなツールでWebトラフィックを傍受できるか? と問われています。
こちらは、proxyと回答すればよいです。

TASK2

What is the path to the directory on the webserver that returns a login page?

ログインページを返す Web サーバー上のディレクトリへのパスは何ですか? と問われています。

http://{IPアドレス} にアクセスしBurp Suiteを使用しながらリクエストを眺めます。

内容は下図のようになります。

cdn-cgi/login ディレクトリが存在しているのがわかるので、http://{IPアドレス}/cdn-cgi/login にアクセスしてみます。

Loginページを見つけることができました。

よって、cdn-cgi/loginと回答すればよいです。

TASK3, 4

TASK3の問題

What can be modified in Firefox to get access to the upload page?

TASK4の問題

What is the access ID of the admin user?`

TASK3は、アップロードページにアクセスするには、Firefoxで何を変更できますか?と問われており、TASK4は、admin ユーザーのアクセスIDを問われています。TASK2のログインページでLogin as Guestのリンクがあるのでクリックしてみます。

ヘッダーのAccountをクリックしてみます。

URLがhttp://{IPアドレス}/cdn-cgi/login/admin.php?content=accounts&id=2とguestの時idが2となっています。そこでid=1にしてURLを叩いてみます。

adminユーザのIDがわかりました。

よって、TASK3の回答がcookieで、TASK4の回答が34322となります。

TASK5

On uploading a file, what directory does that file appear in on the server?

ファイルをアップロードすると、そのファイルはサーバー上のどのディレクトリに表示されますか?と問われています。

TASK3,4でadminユーザはID34322と分かったので、Cookieのuserを34322、roleをadminに変更し、uploadsをクリックします。

ファイルをアップロードするとThe file {ファイル名} has been uploaded.と表示されます。

gobusterをつかって、探索してみます。

uploadsがありました。よって、回答はuploadsです。また、ファイルをアップロードするとuploads配下にファイルが格納されそうと推測できます。

TASK6

What is the file that contains the password that is shared with the robert user?

robert ユーザーと共有されているパスワードを含むファイルは何ですか?と問われています。

実際にアクセスしてみます。

image.png

権限がないと怒られます。

php-reverse-shellをファイルアップロードして、reverse-shellを試みます。

lsコマンドで色々探してると、/var/www/html/cdn-cgi/login配下にdb.phpファイルが存在します。
db.phpファイルをcatしてみます。

$ cat db.php
<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>

MySQLへの接続情報が記載されています。よって、設問の解答はdb.phpになります。

TASK7

What executible is run with the option "-group bugtracker" to identify all files owned by the bugtracker group?

bugtrackerグループが所有するすべてのファイルを特定するために、オプション “-group bugtracker” を付けて実行される実行ファイルは何か? と問われています。

whoamiコマンドを実行すると www-dataと表示されます。

$ whoami
www-data

robertに切り替えたいと考えたのですが、ここで詰まってしまい、walkthroughを確認してしまいました。

  • Hack The Box は Starting Pointの問題は、walkthroughという回答が用意されています。

walkthroughを確認すると、どうやらPythonの実行環境があるらしいので、上図のように実行します。

※なぜptyをimportしているかはこちらの記事が参考になりました。1

robertにユーザを変更します。

su robert

パスワードはMySQLの接続情報に記載されていたM3g4C0rpUs3r!を入力するとユーザを切り替えできました。
bugtrackerに属するファイルを探します。

$ find / -group bugtracker 2>/dev/null
> /usr/bin/bugtracker

何やら怪しげなファイルがありました。設問の回答としては、findです。

TASK8

Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?

どのユーザーがbugtracker実行ファイルを実行し始めたかに関わらず、実行するために使用するユーザー権限は何ですか? と問われています。こちらの回答はrootになります。

TASK9

What SUID stands for?

SUIDは何を表すかを問われています。SUIDについて知らなかったため調べてみました。2

SUIDとは、Set owner User IDの略で、セットしたUserIDでファイルが実行されるそうです。

よって回答としては、Set owner User IDになります。

TASK10

What is the name of the executable being called in an insecure manner?

安全でない方法で呼び出されている実行ファイルの名前は何ですか? と問われています。

TASK7でbugtracker グループに属しているファイルを実行してみます。

$ /usr/bin/bugtracker

------------------
: EV Bug Tracker :
------------------

Provide Bug ID: hoge
---------------

cat: /root/reports/hoge: No such file or directory

実行するとidを聞かれ、hogeと入力すると出力結果には、cat: /root/reports/hoge: No such file or directory と表示されていることがわかります。

つまり、このファイルは /root/reports/ 入力値のファイルを cat していることがわかります。

設問の解答としては、catになります。

user.txtの取得

user.txt は既に /home/robert/ 配下に存在しているのでその中身を取得すればよいです。

root.txtの取得

/usr/bin/bugtranckerroot ユーザとして実行される。
cat を自分の作成したファイルを呼び出したい。
そこで、 /tmp 配下に cat ファイルを作成し、

cd /tmp
touch cat
chmod +x cat

また、 cat ファイルの中身に /bin/bash を書き込みます。

echo "/bin/bash" > cat
export PATH="/tmp:$PATH"

これにより、/usr/bin/bugtrackerを実行し、 whoami を実行すると root ユーザでシェルが立ち上がっているのが確認できます。

あとは /root 配下のフラグを提出すれば完了です。

まとめ

今回は権限昇格がポイントでした。

権限昇格の部分で非常に詰まりました。

TIER2以降では権限昇格は必要な知識なので、しっかり使えるようになることが大切だと感じました。

明日の記事は、渡邉さんのPulumiで始めるIaC入門です。