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 相关文章推荐
echo(),print(),print_r()之间的区别?
Nov 19 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 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 日期加减的类,很不错
2009/10/10 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
js表数据排序 sort table data
2009/02/18 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
Python中的True,False条件判断实例分析
2015/01/12 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
暑期实习鉴定
2013/12/16 职场文书
区三好学生主要事迹
2014/01/30 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
社区娱乐活动方案
2014/08/21 职场文书
企业授权委托书范本
2014/09/22 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏