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基础知识:控制结构
Dec 13 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
Symfony2函数用法实例分析
Mar 18 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 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中的curl_multi系列函数使用例子
2014/07/29 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
详解Node 定时器
2018/02/26 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Python requests库用法实例详解
2018/08/14 Python
python+opencv实现阈值分割
2018/12/26 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
新闻专业推荐信范文
2013/11/20 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
马智宇结婚主持词
2014/04/01 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
经理岗位职责范本
2015/04/15 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL