php木馬webshell掃描器代碼
<?php
/*
+--------------------------------------------------------------------------+
| Codz by indexphp Version:0.01 |
| (c) 2009 indexphp |
| http://www.indexphp.org |
+--------------------------------------------------------------------------+
*/
/*===================== 程序配置 =====================*/
$dir='cms'; //設(shè)置要掃描的目錄
$jumpoff=false;//設(shè)置要跳過(guò)檢查的文件
$jump='safe.php|g'; //設(shè)置要跳過(guò)檢查的文件或者文件夾 $jumpoff=false 時(shí)此設(shè)置有效
$danger='eval|cmd|passthru';//設(shè)置要查找的危險(xiǎn)的函數(shù) 以確定是否木馬文件
$suffix='php|inc';//設(shè)置要掃描文件的后綴
$dir_num=0;
$file_num=0;
$danger_num=0;
/*===================== 配置結(jié)束 =====================*/
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= " 文件數(shù):".$file_num;
$message.= " 文件夾數(shù):".$dir_num;
$message.= " 可疑文件數(shù):".$danger_num;
$message.= " 執(zhí)行時(shí)間:".$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('沒有權(quán)限');
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('沒有權(quán)限');
$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)?'刪除成功':'刪除失敗 查看權(quán)限'):'';
echo $mes;
exit();
}
function Jump($file)//跳過(guò)文件
{
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="開始檢測(cè)" />
<input type="hidden" name="check" value="check"/>
</form>
相關(guān)文章
PHP中empty和isset對(duì)于參數(shù)結(jié)構(gòu)的判斷及empty()和isset()的區(qū)別
這篇文章主要介紹了PHP中empty和isset對(duì)于參數(shù)結(jié)構(gòu)的判斷及empty()和isset()的區(qū)別的相關(guān)資料,需要的朋友可以參考下2015-11-11laravel 實(shí)現(xiàn)劃分admin和home 模塊分組
今天小編就為大家分享一篇laravel 實(shí)現(xiàn)劃分admin和home 模塊分組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10用 Composer構(gòu)建自己的 PHP 框架之使用 ORM
經(jīng)過(guò)前三篇文章 基礎(chǔ)準(zhǔn)備 、 構(gòu)建路由 和 設(shè)計(jì) MVC ,我們已經(jīng)得到了一個(gè)結(jié)構(gòu)比較完整的 MVC 架構(gòu)的 PHP 微框架,但是距離一個(gè)真正能夠上手使用的框架還差一樣?xùn)|西: 數(shù)據(jù)庫(kù)封裝 ,本篇就將講述如何集成一個(gè) ORM Composer 包2014-10-10php 將bmp圖片轉(zhuǎn)為jpg等其他任意格式的圖片
有時(shí)候我們需要將bmp格式的圖片轉(zhuǎn)換為jpg或gif等格式,大家就可以參考下下面的代碼。2009-06-06PHP將字符串首字母大小寫轉(zhuǎn)換的實(shí)例
下面小編就為大家?guī)?lái)一篇PHP將字符串首字母大小寫轉(zhuǎn)換的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01ajax在joomla中的原生態(tài)應(yīng)用代碼
一般很少看到j(luò)oomla中使用ajax,筆者以前說(shuō)到過(guò)用jquery來(lái)實(shí)現(xiàn),對(duì)于那些驗(yàn)證用戶名不能重復(fù),郵箱不能重復(fù),以及聯(lián)動(dòng)菜單,等等的應(yīng)用,使用ajax是免不了的2012-07-07Laravel5.4簡(jiǎn)單實(shí)現(xiàn)app接口Api Token認(rèn)證方法
這篇文章主要介紹了Laravel5.4簡(jiǎn)單實(shí)現(xiàn)app接口Api Token認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Yii中CGridView實(shí)現(xiàn)批量刪除的方法
這篇文章主要介紹了Yii中CGridView實(shí)現(xiàn)批量刪除的方法,實(shí)例分析了CGridView的相關(guān)設(shè)置,前臺(tái)JS調(diào)用與后臺(tái)Action具體功能實(shí)現(xiàn)的技巧,需要的朋友可以參考下2015-12-12