suidgidc.sh
Publicado por Fábio Berbert de Paula 13/11/2002
[ Hits: 5.741 ]
Homepage: https://fabio.automatizando.dev
Script usado para localizar arquivos com bit suid/gid no sistema.
#!/bin/bash
#Wed Aug 14 2002
#
# suidgidcheck.sh v1.1
#
# Localiza arquivos com permissoes suid/sgid.
# Alguns arquivos suid/sgid podem ser perigosos simplismente
# pelo motivo de que rodam com permissoes especiais. Varios desses
# arquivos podem conter "bugs", e kiddies podem esplora-los para
# obter acesso nao autorizado ou apenas afetar servicos
# nos sistemas vulneraveis.
# Consulte paginas web sobre seguranca de sistemas para verificar
# a necessidade desses arquivos, se caso negativo use o
# comando do script: ./suidgidcheck -nosuid "arquivo" para
# remover o bit suid/sgid do mesmo.
#
# Voce precisa ser root para utilizar esse programa.
#
# Coded by Carlos Carvalho
# h4sh@uol.com.br
# brasirc: #root #coders #linuxhelp #rockz
# www.linuxfiles.com.br
#
# Binario necessario: /usr/bin/find
#
# Adicionado na v1.1: Opcao de remocao do bit suid/sgid.
#
# ADICIONADO Fr Aug 2 02:03:58 GMT 2002 : Opcao de remocao do bit SUID/SGID.
# ADICIONADO Wed Aug 21 02:05:10 GMT 2002 : AutoRemocao do bit SUID
#Verificando /usr/bin/find
if [ -f /usr/bin/find ]; then
FIND=/usr/bin/find
else
echo "/usr/bin/find NAO foi encontrado."
echo "SAINDO DO PROGRAMA!"
exit 1
fi
#Criando os arquivos SUID.txt SGID.txt. Voce pode mudar a localizacao
#editando as duas linhas abaixo
SUID=~/SUID.txt
SGID=~/SGID.txt
#Localizando os arquivos suid
check_perm_suid ()
{
echo "A localizacao podera levar alguns minutos..."
> $SUID
$FIND / -perm +4000 -exec echo >> $SUID {} \;
TOTAL2=$(wc -l $SUID)
echo "Existem: $TOTAL2"
echo "Para visualizar: ./suidgidcheck.sh -readsuid"
exit 0
}
#Localizando os arquivos sgid
check_perm_sgid ()
{
echo "A localizacao podera levar alguns minutos..."
> $SGID
$FIND / -perm +2000 -exec echo >> $SGID {} \;
TOTAL=$(wc -l $SGID)
echo "Existem: $TOTAL"
echo "Para visualizar: ./suidgidcheck.sh -readsgid"
}
#Deletando os arquivos de database
delete ()
{
if [ -f $SUID ] || [ -f $SGID ]; then
rm -rf $SUID
rm -rf $SGID
echo "Database removida!"
echo "Done!"
exit 0
else
echo "Aqruivos NAO encontrados!"
echo "Done!"
exit 1
fi
}
#Mostrando suid database
readS ()
{
if [ -f $SUID ]; then
less $SUID
else
echo "Arquivo $SUID NOT existe"
echo "digite \"./suidgidcheck.sh -suid\" primeiro!"
fi
}
#Mostrando sgid database
readG ()
{
if [ -f $SGID ]; then
less $SGID
else
echo "Arquivo $SGID NOT existe"
echo "digite \"./suidgidcheck.sh -sgid\" primeiro!"
fi
}
#Removendo bit suid/sgid do arquivo
noSG ()
{
if [ ! -z "$FILE" ]; then
chmod -s "$FILE" 2> /dev/null
echo "Arquivo "$FILE" nao e mais suid/sgid file"
echo "Done!"
else
echo "usage: ./suidgidcheck.sh -nosuid \"caminho_completo_do_arquivo\""
fi
}
#Removendo bit suid dos arquivos contidos em (for file in * ; do)
#Se um arquivo nao existir no sistema, ele sera ignorado.
#Voce pode adicionar ou remover arquivos da lista, mas lembre-se: Eles devem
#respeitar a linha continua, NAO pressione "ENTER"!
autormSUID ()
{
echo "Bit SUID removido dos seguintes arquivos:"
sleep 1
for file in /bin/ping /bin/mount /bin/umount /sbin/cardctl /usr/bin/rcp /usr/bin/rlogin /usr/bin/rsh /usr/bin/at /usr/bin/lpq /usr/bin/lpr /usr/bin/lprm /usr/bin/mh/inc /usr/bin/mh/msgchk /usr/bin/suidperl /usr/bin/sperl5.003 /usr/bin/chfn /usr/bin/chsh /usr/bin/newgrp /usr/bin/crontab /usr/X11R6/bin/dga /usr/X11R6/bin/xterm /usr/X11R6/bin/XF86_SVGA /usr/sbin/usernetctl /usr/sbin/traceroute ; do
if [ -u $file ] ; then
chmod -s $file 2> /dev/null
echo "$file cleaned"
sleep 1
else
echo "$file untouched!"
sleep 1
fi
done
echo
echo "Sistema mais seguro agora!"
echo
exit 0
}
#Mostrando help (obvio Duh! :))
info ()
{
echo "
Usage:
./suidgidcheck.sh: mostra essa ajuda
./suidgidcheck.sh -suid: procura por suid
./suidgidcheck.sh -sgid: procura por sgid
./suidgidcheck.sh -readsuid: mostra database suid
./suidgidcheck.sh -readsgid: mostra database sgid
./suidgidcheck.sh -nosuid \"fullpathfile\": remove suid/sgid bit do arquivo
./suidgidcheck.sh -autorm: auto remocao SUID
./suidgidcheck.sh -del: remove database"
}
#Lendo os comandos
case $1
in
-suid)
check_perm_suid
;;
-sgid)
check_perm_sgid
;;
-readsuid)
readS
;;
-readsgid)
readG
;;
-nosuid)
FILE="$2"
noSG
;;
-autorm)
autormSUID
;;
-del)
delete
;;
*)
info
;;
esac
#EOF
Renomeie vários aquivos de uma vez
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









