总有人间一两风,填我十万八千梦

接上文,我是怎么怼垃圾营销服务器的故事

杂谈 Zero、J 684℃ 0评论

上文中,我们已经完成了对WordPress的搜索参数的修改了,此时垃圾营销的s搜索就没什么意义了,顶多增加一点服务器的访问,并不会进行实际的搜索操作。

但是!作为一个人中哈士奇 狗中***的博主来说,我直接在s参数的搜索中返回一个503是不是太没有意思了?搞点儿事情吧,想了想这垃圾营销的策略应该和爬虫类似,作为一个正经的爬虫,其肯定会跟随301重定向,以便获取到最终的响应结果。于是乎,我可不可以构造一个301重定向的死循环来玩玩这个垃圾营销的服务器呢?经过一番测试,发现,确实可以。为了防止这垃圾营销的访问对我的现运营的服务器照成压力,我使用了另外一个域名fk.youranshare.com(如果你当前服务器性能不高,你可以尝试百度搜索 “三丰云免费服务器”用他们家的免费PHP服务器,关于三丰云的问题,参见最后的说明),我们在这个服务器下创建了一个php文件,用于循环发送301重定向,文件的代码如下,因为我要记录垃圾营销具体的参数信息,这里代码多了一个简单的日志处理操作,代码如下:

<?php
date_default_timezone_set('Asia/Shanghai');
//这个函数就是获取了一下实际访问者的IP地址
function getIp() { 
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); 
    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); 
    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); 
    else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; 
    else $ip = "unknown"; 
    return ($ip); 
}
//拿到参数track,这个参数是我们通过301定向的时候发送的,后面会说
$data = @$_GET['track']."";
//解析数据的实际查询参数结果
$detata = '';
//原始base64的参数信息
$b64 =  '';
$ip = getIp();//收集到IP

//如果没有参数,那就是 循环 301过来的,无需记录,直接显示一个____LOOP______作为标记
if(empty($data)){
    $b64 = '_____LOOP______';
    $detata = '_____LOOP______';
    //直接goto到写入日志的操作
    goto __WRITE_LOG;
}
 
//这一步你可以不要,我只是用于单独记录一下垃圾营销的服务器IP地址而已
$ipfile = __DIR__."/".$ip;
if(!file_exists($ipfile)){
    file_put_contents($ipfile,"",FILE_APPEND);//就只创建文件就行了,其他不管
}
//解析一下传入的参数,因为我们的参数是301通过base64编码传入的,因此你需要解base64,然后urldecode才能看到实际的信息
try{
    $b64 = base64_decode( $data ) ;//区域b64
    $detata = @urldecode( $b64 );  //还原
}catch(\Exception $e){

}

################################日志写入的操作
__WRITE_LOG:
//单独保存到一个文件夹,文件件用 年/月/日/
//文件使用  年-月-日-时.txt 记录
$dir = __DIR__.date('/Y/m/d');
if(!is_dir($dir)){
    mkdir($dir,0777,true);//递归创建
}
//实际的日志文件
$logfile = $dir.'/'.date('Y-m-d-H').'.txt';

//要写入的内容,这里是追加写入的形式
$wdata = '';
//如果是进入了301循环了,就没有track参数,此时我们只需要____LOOP_____标记,否则我们记录原始的查询参数信息,以及解析的参数信息
if(!empty($data)){ //都写入
    $wdata = '['. date('H:i:s')."]        ".$ip."\n".$b64."\n".$detata."\n\n";//原始记录,和解析的记录都写上
}else{  //记录个循环信息
    $wdata = '['. date('H:i:s')."]        ".$ip."\n".$b64."\n\n";
}
//OK,写入到日志文件中吧
@file_put_contents($logfile,$wdata, FILE_APPEND);

//发送301,当然这里不会直接立即发送,等个几秒钟吧
header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://fk.youranshare.com/loop.php?_t=".time());
Header("SB: Ni_Ma_Si_Le,CNMLGB");
//等待3秒,此时垃圾营销的服务器才能接收到301
sleep(3);

上面的代码只是,我们301循环定向的操作,其中还有一个track参数,这个参数使我们在WordPress中进行301重定向的时候给定的。我们来修改一下WordPress来处理s参数搜索的操作,代码如下:

define('SELF_FRONT_QUERY_PARAMTER','sk'); 
define('DEFAULT_QUERY_PARAMTER','s');//默认搜索关键字,区分大小写的

//这个filter是我们前文中所写的代码,我们略作修改
add_filter('request', function($search_vars){
	//请求从前台发出,后台使用s直接放行3
	if(!is_admin()){
		if(isset($search_vars[DEFAULT_QUERY_PARAMTER])){
    		    @ob_get_clean();//清空其他意外的输出
                    //就先等待3秒再说吧
    		    sleep(3);
                    //发送301
    		    header("HTTP/1.1 301 Moved Permanently");
                    //注意这里我们的301地址中,使用了track参数,这个参数记录了实际WordPress的查询参数信息,以便我们的收集
    		    header("Location: http://fk.youranshare.com/loop.php?_t=".time()."&track=".base64_encode( $_SERVER['QUERY_STRING'] ));
		    die();
		}
		//如果存在自定义的搜索,接管,直接替换为WordPress需要的s参数
		if(isset($search_vars[SELF_FRONT_QUERY_PARAMTER])){
			$search_vars[DEFAULT_QUERY_PARAMTER] = $search_vars[SELF_FRONT_QUERY_PARAMTER];
		}
	}
	return $search_vars;
});

完成上述操作之后,当垃圾营销的服务器自以为我们还是s参数搜索的时候,就会发送/?s=xxxx的搜索请求,此时我们经过处理,将这个请求定向到了http://fk.youranshare.com这个域名,如果垃圾营销的服务器跟随了这个定向,就会进入到一个无限301的循环中,当然这个至于会出现多少次循环,这个得看垃圾营销服务器的处理了,我这里的日志看到的是最多出现了6次重定向跟随。整个流程,我们用图可以描述如下(不要在意图的质量,我这个电脑没装Visio):

通过上面的操作之后,我们在fk.youranshare.com这个服务器上可以看到对应的日志信息,如图所示。

每一个___LOOP___就是表示垃圾营销服务器跟随了我们的301循环,从记录中可以看到最多也就跟随了 6 次。

当然,你竟然拿到了这个IP地址,你可以使用PortScan工具扫描一下,后续你想怎么做,我就不多说了。注意,IP地址解析后可能对应的是*.search.msn.com,这是垃圾营销想通过搜索引擎进行推广索引的操作,如果你要对垃圾营销的服务器进行诸如DDOS之类的操作,就要注意一下。例如这里,博主对144.76.38.X疯狂进行了22端口(PortScan发现这个端口开着) TCP方式 DDOS之后,日志中就没有了这个IP的记录,这个可以说明,垃圾营销的服务器负载其实也很大,100Mb的DDOS就挂了。

防御方式

你可以通过云加速的服务器开启WAF防火墙,对访问进行人机验证,当然我们修改了s参数之后,这一个可以不进行处理了。或者你在request过滤器中,对搜索关键字进行过滤操作,这都是可以的,或者你修改s搜索参数之后,直接返回503或者404,这些垃圾服务器就不会在进行恶意SEO操作了。

推荐DDOS工具以及端口扫描工具

  • 对于那些希望反怼垃圾营销服务器的人,推荐使用端口扫描工具PortScan( 下载地址 https://www.lanzous.com/iarxgja 密码:4ay3 )。
  • 如果你的上传带宽比较大(比如你使用了路由器的宽带多拨功能之后),你想要对垃圾营销服务器进行攻击,推荐使用工具LOIC(下载地址 https://www.lanzous.com/iarxmkh
    密码:8j0x
  • 注意,如果你进行了特殊的操作,请不要针对国内大陆地区的IP地址 。

关于三丰云的问题

三丰云的免费主机原来是主机屋,你在申请免费主机之后,需要绑定已经备案的域名才可以访问,如果提示需要实名认证,你就充值1块钱,然后随便填写,博主发现,其并没有调用实名认证的接口。

除此之外,其FTP似乎有点问题,很容易失败,你需要多次重复提交才会成功,如果你上传了程序,请使用压缩包,然后写一个PHP解压的程序进行解压处理。

结束语

由于是周末又下雨,博主就一直盯着日志,只要出现垃圾营销的服务器,就进行100Mb的DDOS攻击(我的路由器就支持100Mb,多拨最多也是100Mb),这些服务器都是国外的IP地址,后来….我发现,这些服务器每次被搞之后,就好大一会儿没反应,然后个把小时候就换了一个新的IP进行攻击。循环往复,最后这些垃圾营销的服务器,端口都关闭了,哈哈哈。

所以,如果你不是 人中哈士奇 狗中*** 这种跟博主一样的人,还是在s参数的处理中就直接404或者503吧。哈哈哈。

转载请注明:悠然品鉴 » 接上文,我是怎么怼垃圾营销服务器的故事

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址