Permisos #
A Linux, cada fitxer té un usuari propietari (u
) i un grup propietari (g
). Els permisos s'otorguen a aquest i als altres (o
).
Els permisos poden ser de lectura
, escriptura
o execució
que respectivament tindran els valors 4,2,1 si es té el permís o 0 sinó es té el permís. La suma dels valors et retorna el valor del permís.
Així si el fitxer 'A' té els permisos 764 l'usuari propietari tindrà permisos de lectura, escriptura i execució (7=4+2+1), el grup de lectura i escriptura (6=4+2) i els altres només de lectura (4).
Per a canviar el propietari s'utilitza la comanda chown
i els permisos chmod
- Exemple1: Per a que el fitxer 'A' tingui els permisos de l'exemple anterior fem
chmod 764 A
- Exemple2: Els permisos també es poden afegir(+) o treure(-) sobre el que ja tenim. Si li volguessim treure els permisos de lectura als others fariem
chmod o-r A
- Exemple3: Per canviar els propietaris
chown nouUsuari:nouGrup A
Bits suid, sgid i sticky #
Els permisos poden tenir un 4 bit, col·locat a l'esquerre del tot.
suid #
El 4 bit extra de l'esquerre val 4. Indica permís d'execució amb els mateixos privilegis del creador
sgid #
És el mateix funcionament però per al grup. El nou valor serà 2
sticky #
Al assignar-se sobre un directori els fitxers continguts tindran permisos d'escriptura per al propietari i root. Els altres tindran permisos de lectura. El bit s'ha de configurar amb un 1
Cercar fitxers amb permisos suid, sgid #
- El següent exemple cerca a tot l'ordinador (/) els fitxers amb permisos suid (4). Si volem sgid es tracta de canviar el 4000 pel 2000
find / -perm -4000 2>/dev/null
- alternativa
find / -perm -u=s -type f 2>/dev/null
Configurar un script per a que funcioni amb els permisos d'un altre usuari #
Editem /etc/sudoers amb
sudo visudo
i fem que l'usuari maria executi script com a root
maria ALL=(root) NOPASSWD: /home/roger/script
Comprovacions #
Per veure a quins grups pertanys i quin són els id
# id
uid=0(root) gid=0(root) groups=0(root),1(daemon),2(bin),3(sys),4(adm),6(disk),10(uucp),11,20(dialout),26(tape),27(sudo)
Comprovar que pot utilitzar el propi usuari com a sudo #
sudo -l
- per provar-ho
sudo -u USER programa
getcap #
- A Linux hi ha la comanda getcap que et permet trobar fitxers amb capabilities
roger@roger-HP-EliteBook-840-G2:~$ getcap -r / 2>/dev/null
/bin/ping = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
/usr/bin/slock = cap_dac_override,cap_sys_resource+ep
/usr/bin/arping = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
Demo #
i provem
roger@roger:~$ sudo tail -1 /etc/sudoers
maria ALL=(root) NOPASSWD: /home/roger/script
roger@roger:~$ cat script
whoami
roger@roger:~$ sudo chmod +x script
roger@roger:~$ su maria
Contrasenya:
maria@roger:/home/roger$ sudo -l
Entrades predeterminades concordants per a maria a roger:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
L'usuari maria pot executar les ordres següents a roger:
(root) NOPASSWD: /home/roger/script
maria@roger:/home/roger$ sudo ./script
root
maria@roger:/home/roger$ ./script
maria
maria@roger:/home/roger$ sudo ls
[sudo] contrasenya per a maria:
Ho sentim, l'usuari maria no pot executar '/usr/bin/ls' com a root a roger.
gtfobins #
A gtfobins manté una llista detallada de binaris que poden ser utilitzades per evadir les restriccions de seguretat.
Es tracta d'una guia imprescindible alhora d'afrontar l'escalada de privilegis. Algunes de les males configuracions que es proposen en realitat són bastant comuns. Per exemple docker