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 05 PHP
PHP 图像尺寸调整代码
May 26 PHP
php中长文章分页显示实现代码
Sep 29 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
学习PHP Cookie处理函数
Aug 09 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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/12/28 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
python写日志封装类实例
2015/06/28 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python 正确保留多位小数的实例
2018/07/16 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
法国体育用品商店:GO Sport
2019/10/23 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
大学生村官演讲稿
2014/04/25 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
2014年保管员工作总结
2014/11/18 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL