Lista de executáveis suid / sgid válidos?

2

Alguém pode me dizer onde encontrar uma lista de programas suid / guid válidos no Ubuntu (14.04)?

Note que eu posso usar find para obter uma lista de programas suid / sgid na minha máquina, mas eu quero saber se eles são programas reais válidos; existe uma lista que eu possa compará-los ou outros meios para determinar se eles são válidos?

    
por markjames 07.11.2014 / 14:29

2 respostas

0

Uma ideia - mas vai precisar de um pouco de trabalho no script - seja meu convidado; -)

  1. Encontre um arquivo suid / sgid; vamos chamá-lo de scommand

  2. Verifique a partir de qual pacote foi instalado:

    dpkg -S /full/path/to/scommand 
    
  3. Compare sua permissão com o pacote deb original, baixando primeiro o pacote:

    apt-get download package
    
  4. Verifique se o comando deve ter o suid definido no pacote com

    dpkg -c package*deb | grep /full/path/to/scommand
    
  5. limpeza, enxague, repita.

Exemplo:

[romano:~/tmp] % ls -l /bin/passwd
ls: cannot access /bin/passwd: No such file or directory
[romano:~/tmp] 2 % ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 Feb 17  2014 /usr/bin/passwd
[romano:~/tmp] % dpkg -S /usr/bin/passwd
passwd: /usr/bin/passwd
[romano:~/tmp] % apt-get download passwd
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main passwd amd64 1:4.1.5.1-1ubuntu9 [755 kB]
Fetched 755 kB in 1s (487 kB/s)
[romano:~/tmp] % dpkg -c passwd*.deb| grep /usr/bin/passwd
-rwsr-xr-x root/root     47032 2014-02-17 03:42 ./usr/bin/passwd

caveat : pode acontecer de um arquivo não ser suid / sgid no pacote .deb e ser alterado pelos scripts de instalação / pós-instalação. Nesse caso, você tem que encontrar outras maneiras de verificar, talvez comparando com uma nova instalação.

    
por Rmano 07.11.2014 / 19:37
0

Isso parece funcionar: Primeiro ele faz uma busca no apt-cache para cada pacote que o sistema pode baixar, então faz o download de todos eles (compactados no .deb), então faz um loop sobre cada arquivo executando o dpkg -c para obter o caminho e permissões dos arquivos no .deb arquivos cortando os três primeiros caracteres e procurando que o bit suid seja definido no início da linha e, em seguida, imprime todos os caminhos que possuem atributos suid.

PKG=$(apt-cache search . | cut -f 1 -d ' ');
echo $PKG | xargs apt-get download;
F=('find *.deb'); for i in ${F[@]};
do dpkg -c $i | cut -c 4- | grep ^s | cut -c 4- | cut -f 2 -d '.'  | tee > suid_root;
done

Nota: isso leva um lote de espaço em disco para ser executado, e não é muito otimizado para velocidade ou qualquer coisa.

    
por Marshall Whittaker 29.09.2017 / 07:58