suidgidc.sh

Publicado por Fábio Berbert de Paula 13/11/2002

[ Hits: 5.455 ]

Homepage: https://mestrefabio.com

Download suidgid.zip




Script usado para localizar arquivos com bit suid/gid no sistema.

  



Esconder código-fonte

#!/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    

Scripts recomendados

Gerenciamento do Usuario no SAMBA /

Limpar o histórico dos documentos recentes do Ubuntu 11.10

checa_servicos.sh

Criando um usuário em shell script

Mostrando informações sobre o sistema


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts