shell find命令
shell md5sum命令
shell diff命令
生成md5基准参考find ./ -name '*.php' -type f |xargs md5sum >aa.log
修改其中的一个文件1)echo 'adad'>>setting.php2)md5sum校验文件的改变 /usr/bin/md5sum -c aa.log |grep FAILED
新建立一个文件aaa.php1)echo 'daadfafdad'>aaa.php2)find ./ -name '*.php' -type f |xargs md5sum >a2.log3)比较2次md5的变化
find命令查找 新增的文件echo -ne '---新增文件----$Mulu-- {$EXT}---' >> $logFile#find $Mulu -ctime -$Nday -type f >/datatest/hstlog/hst_newfile$Sitefind $Mulu -name '$EXT' -ctime -$Nday -type f >> $logFileecho -ne '\n\n\n\n\n' >> $logFile
自定义配置下面的目录 #指定目录 Mulu=目录位置 Dat=`date +%Y%m%d%H` EXT='*.php' Nday=2 Site='test.com' hstlog=/datatest/hstlog注:不仅仅检查php,还能检测所有的文本文件
源码```shell#!/bin/bash# find webshell 需要uninx 文档编码格式 换行用 echo -ne '\n'# ./findwebshell [扩展名 [天数 [目录]]]# 如果是* 需要用引号引起来 ./findwebshell '*' 2 # 如./findwebshell php 2# 如./findwebshell php# 如./findewebshll * 2# 参数用 '$1', '$2'# 原理 # 1)对源程序做md5基准,2)定期校验md5是否发生变化 # ######配置###################指定目录Mulu=目录位置Dat=`date +%Y%m%d%H`EXT='*.php'Nday=2Site='test.com'hstlog=/datatest/hstlog# #############################LogMul=${hstlog}findmkdir -p ${LogMul}if [ -n '$1' ] #如果$1即参数1不为空,又即存在参数1 then EXT='*.$1' # 使用引号来使#被转义fiif [ -n '$2' ] #如果$2即参数1不为空,又即存在参数1 then Nday='$2' # 使用引号来使#被转义fiif [ -n '$3' ] #如果$3即参数1不为空,又即存在参数1 then Mulu='$3' # 使用引号来使#被转义fiif [ -n '$4' ] #如果$3即参数1不为空,又即存在参数1 then Site='$4' # 使用引号来使#被转义fi#md5 fileif [ ! -f ${hstlog}/hst$Site ] then mkdir -p ${hstlog} find $Mulu -name '*.php' -type f|xargs md5sum >${hstlog}/hst$SitefilogFile=$LogMul/${Site}_findwebshell_$Dat.logecho '---查找时间$Dat----' > $logFileecho -ne '\n\n\n\n#=begin\n' >> $logFile# ------------md5 file 修改echo -ne '---md5fiel检测 ----$Mulu-- {$EXT}---' >> $logFile/usr/bin/md5sum -c ${hstlog}/hst$Site|grep FAILED >> $logFileecho -ne '\n\n\n\n\n' >> $logFile# ------ 新增的文件echo -ne '---新增文件----$Mulu-- {$EXT}---' >> $logFilefind $Mulu -name '$EXT' -ctime -$Nday -type f >> $logFileecho -ne '\n\n\n\n\n' >> $logFile# ------ 仅修改的文件echo -ne '---仅修改的文件----$Mulu-- {$EXT}---' >> $logFilefind $Mulu -name '$EXT' -mtime -$Nday -ctime +$Nday -type f >> $logFileecho -ne '\n\n\n\n\n' >> $logFile# 2天内修改的文件echo -ne '---最近{$Nday}天修改的 ----$Mulu-- {$EXT}---' >> $logFile#echo -ne '\n---$(pwd) === $path---\n' >> $logFilefind $Mulu -name '$EXT' -mtime -$Nday >> $logFileecho -ne '\n\n\n\n\n' >> $logFileecho '---eval----' >> $logFilefind $Mulu -name '$EXT' |xargs grep 'eval' >> $logFile#增加一句话木马的变形查找echo '---eval 一句话木马 变形查找----' >> $logFilefind $Mulu -name '$EXT' |xargs grep '$\w*();' >> $logFileecho -ne '\n\n\n\n\n' >> $logFileecho '---shell_exec----' >> $logFilefind $Mulu -name '$EXT' |xargs grep 'shell_exec' >> $logFileecho -ne '\n\n\n\n\n' >> $logFileecho '---base64_decode----' >> $logFilefind $Mulu -name '$EXT' |xargs grep 'base64_decode' >> $logFileecho -ne '\n#=end\n\n\n\n' >> $logFile############## 发邮件:#如果开启sendmail,/etc/init.d/sendmail help 可以使用下面的代码# 测试 echo “hello world' | mail -s 'Subject' 邮箱地址echo -ne '\n\n\n\n\n 发邮件ok\n\n\n\n\n ' >> $logFilefrom_name='邮箱地址' from='邮箱地址' to='邮箱地址' email_title='Test Mail' #email_content='$(pwd)/$logFile' email_content='$logFile' email_subject='Log($Dat) $Site -webshellfinder ' echo -e 'To: \'${email_title}\' <${to}>\nFrom: \'${from_name}\' <${from}>\nSubject: ${email_subject}\n\n`cat ${email_content}`' | /usr/sbin/sendmail -t ```
使用前请多次测试