shinobe179の日記

@shinobe179 の技術メモ・やらかし録

【Hack The Box二十五番勝負 Advent Calendar 2020】5日目 vs Valentine(●)

f:id:befs_anne:20201205235617p:plain

はじめに

これは、Hack The Box二十五番勝負 Advent Calendar 2020 5日目の記事です。

adventar.org

サマリ

  • 対戦相手:Valentine
  • 対戦日時:2020年12月4日 21:00 - 22:45
  • 結果:敗北
  • 主な敗因:
  • 通算成績:5戦1勝4敗

対戦相手

今回の対戦相手は「Valentine」です。 www.hackthebox.eu

Walkthrough

※以下、解法に関するネタバレです。

自分でやったこと

情報収集

  • nmap
    • 以下のポートが開いていることを確認した。
      • SSH(22)
      • HTTP(80)
        • ブラウザで見るとHeartbleedのロゴ画像が出てきた。
      • HTTPS(443)

上記の結果から、Heartbleedが侵入経路であると確信しました(してしまいました)。この判断が性急でした。

ちなみに、証明書のSubjectを見て valentine.htb であることを確認しました。どこかよそのWriteupで見たことがあったので、 /etc/hosts をいじって valentine.htb10.10.10.79 に解決されるようにして、ブラウザで valentine.htb へアクセスを試行しました。結果的にはIPアドレスでアクセスした時と同じコンテンツが表示されたので、この問題には全く関係ありませんでした。

侵入

  • Heartbleed
    • tcpdump -w でパケットを取得しつつ、Metasploitの auxiliary/scanner/ssl/openssl_heartbleed モジュールを実行した。
    • Wiresharkでパケットを見ると、サーバーからのHTTPレスポンスパケットに、メモリ上に残存していると思われるHTTPリクエスト情報が含まれていた。
  • http://127.0.0.1/decode.php に対して、Base64でハッシュ化された文字列をPOSTしているようだった。
  • 文字列をハッシュすると heartbleedbelievethehype という文字列が出現した。
  • 取得したパケットに他にも情報が含まれていないか調べてみたが、特段見つからなかった。時間を費やし過ぎた。
  • hypeというのが「誇大広告」という意味のようで、もしかしてフェイクということか?などと考えていた。

残りの手順

Writeupは公式のものを参考にしています。

侵入

  • Dirbusterを使って /dev を発見する。
    • hype_key というファイルがある。
  • Writeupによるとそれが hype というユーザーでSSHログインできる秘密鍵のようだが、そのままでは使えなかったので、Cyberchefで変換(from hex)すると、見慣れた秘密鍵ファイルになった。
  • パスフレーズがかかっていて、それが heartbleedbelievethehype だった。
  • ホームディレクトリに user.txt がなくてちょっと焦ったが、 find . -name "user.txt" してデスクトップにあることを確認した。own user。

権限昇格

  • ps aux すると、rootのtmuxセッションプロセスがあることが分かる。
  • tmux -S /.devs/dev_sess/ してセッションにアタッチする。 whoami すると、rootユーザーだった。own root。

KPT(Keep-Problem-Try)

Keep

  • Heartbleed→パケットを取りながらエクスプロイトする、が割にスムーズにできたのは良かったと思う。

Problem

  • またもディレクトブルートフォースが甘かった。列挙系はやはり心理的障壁があった(かかる時間の割に徒労に終わる経験が多かったので)が、これで勝ち星を取り落としているので、認識を改めなければいけない。

Try

  • 週末にもう1回チャレンジする。
  • 次はぜったいディレクトリ列挙を、Dirbusterでする。