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 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP代码优化技巧小结
Sep 29 PHP
PHP6新特性分析
Mar 03 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 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中MVC的开发经验分享
2012/05/17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
Seajs源码详解分析
2019/04/02 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中range()与xrange()用法分析
2016/09/21 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
解决python 找不到module的问题
2020/02/12 Python
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
数控专业推荐信范文
2013/12/02 职场文书
户外宣传策划方案
2014/05/25 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
小浪底导游词
2015/02/12 职场文书