Estoy trabajando en un exploit para un curso de seguridad. El objetivo es obtener un shell raíz en una máquina virtual Linux. Hasta ahora, puedo escribir en /etc/passwd y cambiar la contraseña de root a una cadena arbitraria.
Ahora quiero usar su para obtener el shell raíz. Dado que mi exploit debe automatizarse, no puede solicitar una contraseña y la máquina virtual no tiene expect instalado. ¿Alguien tiene alguna idea de cómo puedo pasar la contraseña al comando su? ¿O hay un mejor camino?
Respuesta1
La mejor forma de automatizar este tipo de entrada es utilizando expect
o mejor pexpect
. la mayoría de los servidores vienen con Python, al menos con una distribución moderna.
En primer lugar, ¿dijiste que tu VM no está expect
instalada? No estoy seguro de por qué eso importa. ¿Hay alguna razón por la que no puede instalar/ejecutar algo en su cuenta local?
Siguiente consideración, ¿por qué deberías usar passwd
??? También puede cambiar una contraseña reemplazando el hash especificado en /etc/shadow
. Obviamente, primero necesitarás pregenerar correctamente un hash, pero siempre que utilices uno compatible, debería funcionar como se espera. Ahora bien, cómo escribirías un guión para tal acción es un ejercicio que debes resolver.
También quiero mencionar que passwd
no lee la entrada de STDIN. Si no me equivoco, se lee en un tty. Así que ninguna combinación elegante de solo echo
y sleep
funcionaría. Sin embargo, es posible utilizar un HEREDOC, pero se supone que el sistema responde lo suficiente. Es posible que pueda dividirlo en sleep
partes enteras. Acabo de probar esto, funcionó en mi estación de trabajo Ubuntu.
#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF
Respuesta2
Su exploit también podría escribir en el archivo de grupos y hacer que el usuario actual forme parte del grupo 'rueda' (o cualquier grupo que pueda ejecutar sudo
comandos sin contraseña). Entonces usted podrá sudo su root
(o cualquier otro usuario) sin contraseña.
Correr visudo
debería darle alguna orientación sobre la configuración del grupo de "ruedas" en su máquina.
Para aclarar: una vez que un usuario pasa a formar parte del grupo de ruedas, puede ejecutar comandos sudo sin necesidad de contraseña.