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 include加载文件两种方式效率比较
Aug 08 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 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 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
python中ConfigParse模块的用法
2014/09/29 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
python excel转换csv代码实例
2019/08/26 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
基于python检查矩阵计算结果
2020/05/21 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
数据员岗位职责
2013/11/19 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
教师党员承诺书
2014/03/25 职场文书
财产保全担保书范文
2014/04/01 职场文书
三方合作协议书范本
2014/04/18 职场文书
爱国演讲稿400字
2014/05/07 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
2015年国庆节寄语
2015/08/17 职场文书
python绘制箱型图
2021/04/27 Python
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
教你一步步实现一个简易promise
2021/11/02 Javascript
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏