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文本操作类
Nov 25 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
php实现微信公众号无限群发
Oct 11 PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
点击文章内容处弹出页面代码
2009/10/01 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Django REST framework 分页的实现代码
2019/06/19 Python
django Admin文档生成器使用详解
2019/07/22 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
教师自我鉴定范文
2014/03/20 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
《打电话》教学反思
2016/02/22 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书