Interesting Groups - Linux Privesc
Last updated
Last updated
Aprende y practica Hacking en AWS: HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
A veces, por defecto (o porque algún software lo necesita) dentro del archivo /etc/sudoers puedes encontrar algunas de estas líneas:
Esto significa que cualquier usuario que pertenezca al grupo sudo o admin puede ejecutar cualquier cosa como sudo.
Si este es el caso, para convertirse en root solo tienes que ejecutar:
Encuentra todos los binarios suid y verifica si está el binario Pkexec:
Si descubres que el binario pkexec es un binario SUID y perteneces al grupo sudo o admin, probablemente podrías ejecutar binarios como sudo usando pkexec
.
Esto se debe a que normalmente esos son los grupos dentro de la política polkit. Esta política básicamente identifica qué grupos pueden usar pkexec
. Verifícalo con:
Allí encontrarás qué grupos tienen permiso para ejecutar pkexec y por defecto en algunas distribuciones de Linux los grupos sudo y admin aparecen.
Para convertirte en root puedes ejecutar:
Si intentas ejecutar pkexec y obtienes este error:
No es porque no tengas permisos, sino porque no estás conectado sin una GUI. Y hay una solución alternativa para este problema aquí: https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903. Necesitas 2 sesiones de ssh diferentes:
A veces, por defecto dentro del archivo /etc/sudoers puedes encontrar esta línea:
Esto significa que cualquier usuario que pertenezca al grupo wheel puede ejecutar cualquier cosa como sudo.
Si este es el caso, para convertirte en root solo necesitas ejecutar:
Los usuarios del grupo shadow pueden leer el archivo /etc/shadow:
staff: Permite a los usuarios agregar modificaciones locales al sistema (/usr/local
) sin necesidad de privilegios de root (tenga en cuenta que los ejecutables en /usr/local/bin
están en la variable PATH de cualquier usuario, y pueden "sobrescribir" los ejecutables en /bin
y /usr/bin
con el mismo nombre). Compare con el grupo "adm", que está más relacionado con monitoreo/seguridad. [fuente]
En las distribuciones de Debian, la variable $PATH
muestra que /usr/local/
se ejecutará con la mayor prioridad, ya sea que sea un usuario privilegiado o no.
Si podemos secuestrar algunos programas en /usr/local
, podemos obtener fácilmente acceso de root.
Secuestrar el programa run-parts
es una forma fácil de obtener acceso de root, ya que la mayoría de los programas ejecutarán un run-parts
(como crontab, al iniciar sesión por SSH).
o Cuando se inicia una nueva sesión de ssh.
Explotar
Este privilegio es casi equivalente al acceso de root ya que puedes acceder a todos los datos dentro de la máquina.
Archivos: /dev/sd[a-z][1-9]
Ten en cuenta que usando debugfs también puedes escribir archivos. Por ejemplo, para copiar /tmp/asd1.txt
a /tmp/asd2.txt
puedes hacer:
Sin embargo, si intentas escribir archivos propiedad de root (como /etc/shadow
o /etc/passwd
) obtendrás un error de "Permiso denegado".
Usando el comando w
puedes encontrar quién está conectado al sistema y mostrará una salida como la siguiente:
El grupo tty1 significa que el usuario yossi está conectado físicamente a un terminal en la máquina.
El grupo video tiene acceso para ver la salida de la pantalla. Básicamente puedes observar las pantallas. Para hacer eso, necesitas capturar la imagen actual en la pantalla en datos sin procesar y obtener la resolución que la pantalla está utilizando. Los datos de la pantalla se pueden guardar en /dev/fb0
y podrías encontrar la resolución de esta pantalla en /sys/class/graphics/fb0/virtual_size
.
Para abrir la imagen cruda puedes usar GIMP, selecciona el archivo **screen.raw
** y elige como tipo de archivo Datos de imagen cruda:
Luego modifica el Ancho y Alto a los utilizados en la pantalla y verifica diferentes Tipos de Imagen (y selecciona el que muestre mejor la pantalla):
Parece que por defecto los miembros del grupo root podrían tener acceso para modificar algunos archivos de configuración de servicios o algunos archivos de bibliotecas u otras cosas interesantes que podrían ser utilizadas para escalar privilegios...
Verifica qué archivos pueden modificar los miembros de root:
Puedes montar el sistema de archivos raíz de la máquina anfitriona en el volumen de una instancia, de modo que cuando la instancia se inicie, cargue inmediatamente un chroot
en ese volumen. Esto te otorga efectivamente permisos de root en la máquina.
Finalmente, si no te gustan ninguna de las sugerencias anteriores, o si no están funcionando por alguna razón (¿firewall de la API de Docker?), siempre puedes intentar ejecutar un contenedor privilegiado y escapar de él como se explica aquí:
Docker SecuritySi tienes permisos de escritura sobre el socket de Docker, lee este post sobre cómo escalar privilegios abusando del socket de Docker.
Normalmente, los miembros del grupo adm
tienen permisos para leer archivos de registro ubicados dentro de /var/log/.
Por lo tanto, si has comprometido a un usuario dentro de este grupo, definitivamente deberías revisar los registros.
Dentro de OpenBSD, el grupo auth generalmente puede escribir en las carpetas /etc/skey y /var/db/yubikey si se utilizan. Estos permisos pueden ser abusados con el siguiente exploit para escalar privilegios a root: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot