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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP程序员基本要求和必备技能
May 09 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
PHP获取数组最大值下标的方法
May 12 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
通过php动态传数据到highcharts
Apr 05 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
设定php简写功能的方法
Nov 28 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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字符串的连接的简单实例
2013/12/30 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php服务器的系统详解
2019/10/12 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
移动节点的jquery代码
2014/01/13 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
Python实现在线音乐播放器
2017/03/03 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
导游词之神仙居景区
2019/11/15 职场文书