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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
深入理解PHP中的count函数
2016/05/31 PHP
php 猴子摘桃的算法
2017/06/20 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
Python单例模式实例详解
2017/03/01 Python
python构建自定义回调函数详解
2017/06/20 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
Python __slots__的使用方法
2020/11/15 Python
Python排序函数的使用方法详解
2020/12/11 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
六一儿童节主持词
2014/03/21 职场文书
篮球赛口号
2014/06/18 职场文书
公司活动总结怎么写
2014/06/25 职场文书
公司股东出资证明书
2014/11/01 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
手残删除python之后的补救方法
2021/06/26 Python