suidgidc.sh

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

[ Hits: 5.502 ]

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

Email con adjunto

String split

Soma valores de uma lista (calculo notas, pontos, etc)

NMAP - Script que monitora portas que foram abertas e envia por email

Batalha dos Vingadores


  

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