Небольшой bash сценарий для сбора информации на сервере. Бывает забываем проверить что либо, тот же shadow на чтение при кривых правах (бывает когда админ )) в таких случаях автоматизация рулит. 🙂
Возможности:
Аргумент #2 —with-color немного красок для вывода информации.
Аргумент #2 —for-help выводит информацию в блоках [codе]*[/codе] для «запостить на форуме».
Первый аргумент из личных соображений не документируется =) just say: Please Work to script (25-35)
Информация об:
/usr/bin/sudo /usr/bin/staprun exim /proc/sys/vm/mmap_min_addr /etc/shadow /proc/sys/net/rds /usr/bin/pkexec /etc/crontab mount df -h uname -a /etc/issue /proc/version GLIBC .bash_history SUID bit files
Код:
#!/usr/bin/env bash
# (c) b3, 02/2012
# https://rdot.org/forum/
####################
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binLANG=C
COLOR_ENABLED=0
CODE_BEGIN=»»
CODE_END=»»if [ «$2» = «—with-color» ]
then
COLOR_ENABLED=1
else
if [ «$2» = «—for-help» ]
then
CODE_BEGIN=»echo [code]»
CODE_END=»echo [/code]»
fi;
fi;function posible_vuln {
if [ «$COLOR_ENABLED» = «1» ]
then
COLOR_BEGIN=»e[1;31m»
COLOR_END=»e[0m»
fi;
echo -ne $COLOR_BEGIN»[+] «$1 $COLOR_END «n»;
};if [ «$1» != «-pw» ]; then echo «Se»»gment»»ation fa»»ult» 1>&2; exit; fi;
function info {
if [ «$COLOR_ENABLED» = «1» ]
then
COLOR_BEGIN=»e[1;36m»
COLOR_END=»e[0m»
fi;
echo -ne $COLOR_BEGIN»[i] «$1 $COLOR_END «n»;
}
echo -e «nHello %username% id:»;$CODE_BEGIN;id;$CODE_END
#####
#
# Sudo version
#
if [ -x «/usr/bin/sudo» ]
then
info «SUDO:»
$CODE_BEGIN;/usr/bin/sudo -V | grep -i version;$CODE_END;
fi;
#####
#
# /usr/bin/staprun
#
if [ -x «/usr/bin/staprun» ]
then
posible_vuln «/usr/bin/staprun exist and executable»;
info «http://www.exploit-db.com/exploits/15620/»;
fi;
#####
#
# EXIM version
#
if [ -x «`which exim 2>/dev/null`» ]
then
info «EXIM info:»
$CODE_BEGIN;exim -bV 2>/dev/null | grep -i version;$CODE_END;
fi;
#####
#
# /proc/sys/vm/mmap_min_addr
#
if [ -r «/proc/sys/vm/mmap_min_addr» ]
then
if [ «`cat /proc/sys/vm/mmap_min_addr`» -eq «0» ]
then
posible_vuln «/proc/sys/vm/mmap_min_addr = 0»;
info «http://www.grsecurity.net/~spender/exploits/enlightenment.tgz»
fi;
fi;
#####
#
# /etc/shadow -r
#
if [ -r «/etc/shadow» ]
then
posible_vuln «/etc/shadow R permission»
$CODE_BEGIN;head -n1 /etc/shadow | awk -F ‘:’ ‘{print $1″:»$2}’;$CODE_END;
fi;
#####
#
# /proc/sys/net/rds exist
#
if [ -d «/proc/sys/net/rds» ]
then
posible_vuln «/proc/sys/net/rds»;
info «http://www.vsecurity.com/resources/advisory/20101019-1/»
fi;
#####
#
# /usr/bin/pkexec date < 2011.04.01
#
if [ -x «/usr/bin/pkexec» ]
then
filed=»`ls -l /usr/bin/pkexec —full-time | awk ‘{print $6}’ | tr -d ‘-‘`»
if [ «20110401» -gt «$filed» ]
then
posible_vuln «/usr/bin/pkexec date < 2011.04.01»;
info «http://git.zx2c4.com/CVE-2011-1485/tree/polkit-pwnage.c»;
fi;
fi;
#####
#
# /etc/crontab read
#
if [ -r «/etc/crontab» ]
then
if [ -w «/etc/crontab» ]
then
posible_vuln «/etc/crontab RW permission»;
else
posible_vuln «/etc/crontab R permission»;
fi;
$CODE_BEGIN;cat /etc/crontab | grep -v ‘^#’ | grep -v ‘^$’;$CODE_END;
fi;
#####
#
# mount, df -h, uname -a, cat /proc/version, cat /etc/issue
#
info «mount:»;$CODE_BEGIN;mount;$CODE_END;
info «df -h:»;$CODE_BEGIN;df -h;$CODE_END;
info «uname -a:»;$CODE_BEGIN;uname -a;$CODE_END;
info «cat /etc/issue:»;$CODE_BEGIN;cat /etc/issue;$CODE_END;
info «cat /proc/version:»;$CODE_BEGIN;cat /proc/version;$CODE_END;
if [ «`uname -s`» = «Linux» ]
then
info «GLIBC:»;
$CODE_BEGIN;ls -lha /lib/libc-* /lib/libmem* /lib/libcpr* /usr/lib/liblftp-tasks* —full-time 2>/dev/null | awk ‘{print $6″ «$9}’;$CODE_END;
fi;
#####
#
# check all .bash_history
#
info «check all .bash_history»;
for x in `cat /etc/passwd | awk -F’:’ ‘{print $6}’`;
do
if [ -r «$x/.bash_history» ]
then
$CODE_BEGIN;ls -lha «$x»/.bash_history 2>/dev/null;$CODE_END;
fi;
done;
#####
#
# find SUID files
#
info «SUID bit files:»;
$CODE_BEGIN;find / -type f -perm -4000 -user root 2>/dev/null;$CODE_END;
Скачать :
P.S. Комментарии и критика приветствуются.
Автор: b3