displayfileinfo.php_PHP一句话木马及查杀

常见的木马基本上有如下特征

1.接收外部变量

常见如:$_GET,$_POST

更加隐蔽的$_FILES,$_REQUEST…

2.执行函数

获取数据后还需执行它

常见如:eval,assert,preg_replace

隐藏变种:

include($_POST['a']);

$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";

$hh("/[discuz]/e",$_POST['h'],"Access");

@preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add'); 使用urldecode,gzinflate,base64_decode等加密函数

3.写入文件

获取更多的权限

如:copy,file_get_contents,exec

一般的建议是打开safe_mode 或使用disable_functions 等来提升安全性;

可能有些程序无法正常运行,基本的安全设置

php.ini中

expose_php = OFF

register_globals = Off

display_errors = Off

cgi.fix_pathinfo=0

magic_quotes_gpc = On

allow_url_fopen = Off

allow_url_include = Off

配置open_basedir 查找木马脚本

查找隐藏特征码及入口可以找出大部分的木马.

#!/bin/bash

findpath=./

logfile=findtrojan.log

echo -e $(date +%Y-%m-%d_%H:%M:%S)" start\r" >>$logfile

echo -e '============changetime list==========\r\n' >> ${logfile}

find ${findpath} -name "*.php" -ctime -3 -type f -exec ls -l {} \; >> ${logfile}

echo -e '============nouser file list==========\r\n' >> ${logfile}

find ${findpath} -nouser -nogroup -type f -exec ls -l {} \; >> ${logfile}

echo -e '============php one word trojan ==========\r\n' >> ${logfile}

find ${findpath} -name "*.php" -exec egrep -I -i -C1 -H 'exec\(|eval\(|assert\(|system\(|passthru\(|shell_exec\(|escapeshellcmd\(|pcntl_exec\(|gzuncompress\(|gzinflate\(|unserialize\(|base64_decode\(|file_get_contents\(|urldecode\(|str_rot13\(|\$_GET|\$_POST|\$_REQUEST|\$_FILES|\$GLOBALS' {} \; >> ${logfile}

#使用使用-l 代替-C1 -H 可以只打印文件名

echo -e $(date +%Y-%m-%d_%H:%M:%S)" end\r" >>$logfile

more $logfile  /bin/bash^M: bad interpreter: 没有那个文件或目录

运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容。。。

具体细节不管,如果验证:

vim test.sh

:set ff?

如果出现fileforma=dos那么就基本可以确定是这个问题了。

:set fileformat=unix

:wq

OK了。。。。。。。

/bin/bash^M: bad interpreter: 没有那个文件或目录

错误分析:

因为操作系统是windows,我在windows下编辑的脚本,所以有可能有不可见字符。

脚本文件是DOS格式的, 即每一行的行尾以 来标识, 其ASCII码分别是0x0D, 0x0A.

可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的

解决方法:

vim filename

然后用命令

:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的。

然后用

:set ff=unix #把它强制为unix格式的, 然后存盘退出。

再次运行脚本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值