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实现var_export的详细介绍
Jun 20 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
PHP解析RSS的方法
Mar 05 PHP
PHP魔术方法的使用示例
Jun 23 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 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之sprintf函数用法详解
2014/11/12 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
纯javascript版日历控件
2016/11/24 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
浅谈python函数之作用域(python3.5)
2017/10/27 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python Process多进程实现过程
2019/10/22 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
简约控的天堂:The Undone
2016/12/21 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
施工资料员岗位职责
2014/01/06 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL