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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
php5 图片验证码实现代码
Dec 11 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php预定义常量
2006/12/25 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python获得图片base64编码示例
2014/01/16 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python中的句柄操作的方法示例
2019/06/20 Python
django做form表单的数据验证过程详解
2019/07/26 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
教师考核评语
2014/04/28 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
市场营销计划书
2015/01/17 职场文书
Python加密与解密模块hashlib与hmac
2022/06/05 Python