多语言展示
当前在线:1363今日阅读:61今日分享:18

如何在linux的shell命令中使用find查找php木马

背景:服务器没有加入防篡改的功能,可能会被人恶意上传后门和木马需求:检测php文件是否被篡改,解决方法:编写shell脚本执行md5校验,结合find命令查找更新的文件提醒:如果需要定期检测,可以把这个检测脚本加入定时进行定时检测;md5的基准可能会需要更新可自行修正
工具/原料
1

shell find命令

2

shell md5sum命令

3

shell diff命令

方法/步骤
1

生成md5基准参考find ./ -name '*.php' -type f |xargs md5sum >aa.log

2

修改其中的一个文件1)echo 'adad'>>setting.php2)md5sum校验文件的改变    /usr/bin/md5sum -c aa.log |grep FAILED

3

新建立一个文件aaa.php1)echo 'daadfafdad'>aaa.php2)find ./ -name '*.php' -type f |xargs md5sum >a2.log3)比较2次md5的变化

4

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

find webshell 源码
1

自定义配置下面的目录    #指定目录    Mulu=目录位置    Dat=`date +%Y%m%d%H`    EXT='*.php'    Nday=2    Site='test.com'    hstlog=/datatest/hstlog注:不仅仅检查php,还能检测所有的文本文件

2

源码```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  ```

注意事项

使用前请多次测试

推荐信息