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+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
php 操作excel文件的方法小结
Dec 31 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
php开启openssl的方法
May 15 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
php实现删除空目录的方法
Mar 16 PHP
php + nginx项目中的权限详解
May 23 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
python实现控制台打印的方法
2019/01/12 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
基于Django统计博客文章阅读量
2019/10/29 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
文案策划求职信
2014/04/14 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
java调用Restful接口的三种方法
2021/08/23 Java/Android