php木马webshell扫描器代码


Posted in PHP onJanuary 25, 2012
<?php 
/* 
+--------------------------------------------------------------------------+ 
| Codz by indexphp Version:0.01 | 
| (c) 2009 indexphp | 
| http://www.indexphp.org | 
+--------------------------------------------------------------------------+ 
*/ 
/*===================== 程序配置 =====================*/ 
$dir='cms'; //设置要扫描的目录 
$jumpoff=false;//设置要跳过检查的文件 
$jump='safe.php|g'; //设置要跳过检查的文件或者文件夹 $jumpoff=false 时此设置有效 
$danger='eval|cmd|passthru';//设置要查找的危险的函数 以确定是否木马文件 
$suffix='php|inc';//设置要扫描文件的后缀 
$dir_num=0; 
$file_num=0; 
$danger_num=0; 
/*===================== 配置结束 =====================*/ 
extract (GetHttpVars()); 
if ($m=="edit") Edit(); 
if ($m=="del") Delete(); 
if ($check=='check') 
{ $safearr = explode("|",$jump); 
$start_time=microtime(true); 
safe_check($dir); 
$end_time=microtime(true); 
$total=$end_time-$start_time; 
$file_num=$file_num-$dir_num; 
$message= " 文件数:".$file_num; 
$message.= " 文件夹数:".$dir_num; 
$message.= " 可疑文件数:".$danger_num; 
$message.= " 执行时间:".$total; 
echo $message; 
exit(); 
} 
function GetHttpVars() {//全局变量 
$superglobs = array( 
'_POST', 
'_GET', 
'HTTP_POST_VARS', 
'HTTP_GET_VARS'); 
$httpvars = array(); 
foreach ($superglobs as $glob) { 
global $$glob; 
if (isset($$glob) && is_array($$glob)) { 
$httpvars = $$glob; 
} 
if (count($httpvars) > 0) 
break; 
} 
return $httpvars; 
} 
function Safe_Check($dir)//遍历文件 
{ 
global $danger ,$suffix ,$dir_num ,$file_num ,$danger_num; 
$hand=@dir($dir) or die('文件夹不存在') ; 
while ($file=$hand->read() ) 
{ 
$filename=$dir.'/'.$file; 
if (!$jumpoff) { 
if(Jump($filename))continue; 
} 
if(@is_dir($filename) && $file != '.' && $file!= '..'&& $file!='./..') 
{ $dir_num++; 
Safe_Check($filename); 
} 
if (preg_match_all ("/\.($suffix)/i",$filename,$out)) 
{ 
$str=''; 
$fp = @fopen($filename,'r')or die('没有权限'); 
while(!feof($fp)) 
{ 
$str .= fgets($fp,1024); 
} 
fclose($fp); 
if( preg_match_all ("/($danger)[ \r\n\t]{0,}([\[\(])/i",$str,$out)) 
{ 
echo "<font color='green' style='font-size:14px'>可疑文件:{$filename}</font> 
<a href='?m=edit&filename=$filename' target='_blank'><u>查看代码</u></a> 
<a href='?m=del&filename=$filename' target='_blank'>删除</u></a><br>"; 
$danger_num++; 
} 
} 
$file_num++; 
} 
} 
function Edit()//查看可疑文件 
{ 
global $filename; 
$filename = str_replace("..","",$filename); 
$file = $filename; 
$content = ""; 
if(is_file($file)) 
{ 
$fp = fopen($file,"r")or die('没有权限'); 
$content = fread($fp,filesize($file)); 
fclose($fp); 
$content = htmlspecialchars($content); 
} 
echo "<textarea name='str' style='width:100%;height:450px;background:#cccccc;'>$content</textarea>\r\n"; 
exit(); 
} 
function Delete()//删除文件 
{ 
global $filename; 
(is_file($filename))?($mes=unlink($filename)?'删除成功':'删除失败 查看权限'):''; 
echo $mes; 
exit(); 
} 
function Jump($file)//跳过文件 
{ 
global $jump,$safearr; 
if($jump != '') 
{ 
foreach($safearr as $v) 
{ 
if($v=='') continue; 
if( eregi($v,$file) ) return true ; 
} 
} 
return false; 
} 
?> 
<form action="" > 
<input type="submit" value="开始检测" /> 
<input type="hidden" name="check" value="check"/> 
</form>
PHP 相关文章推荐
PHP中调用JAVA
Oct 09 PHP
多重?l件?合查?(一)
Oct 09 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
php 基础函数
Feb 10 PHP
PHP分享图片的生成方法
Apr 25 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 #PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 #PHP
php中将数组存到文件里的实现代码
Jan 19 #PHP
PHP取进制余数函数代码
Jan 19 #PHP
PHP采集腾讯微博的实现代码
Jan 19 #PHP
Php图像处理类代码分享
Jan 19 #PHP
调试一段PHP程序时遇到的三个问题
Jan 17 #PHP
You might like
php 过滤器实现代码
2010/08/09 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
javascript 写类方式之七
2009/07/05 Javascript
ext jquery 简单比较
2010/04/07 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
js 操作符汇总
2014/11/08 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
爱国卫生月实施方案
2014/02/21 职场文书
求职信怎么写范文
2014/05/26 职场文书
教师暑期培训感言
2014/08/15 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
安全学习心得体会范文
2016/01/18 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
python创建字典及相关管理操作
2022/04/13 Python