关于一次上传密钥泄露引发的网站奔溃…

某天,雪碧正准备下班回家,心想哎呀呀,还有几天就可以回家过年了。这时,突然来了个电话:雪碧,雪碧,网页突然打不开了,快看看,用户要炸锅了。

雪碧内心一惊,这么吓人,打开了刚放进包里的电脑,打开公司业务网站一看image-20240318205435268

嗯?找不到服务器 ip 地址,那是 DNS 解析出现问题了,雪碧细品下就抓起电话开始摇人。

联系到运维查看 DNS 解析,发现所有 DNS 解析都是空的,又查看 WHOIS 后,发现 Domain 状态被 clientHold了,这是为啥呢?

image-20240318210128721

登录云厂商网站一看,发现云厂商发了封公告【违规域名暂停解析并禁止转移通知】。这是为啥,俺们可都是21世纪好公民。

通知里提供了违规的 URL,是个上传到 cos 的 pdf 文件,打开一看,嘿,不是个pdf文件,是个欺诈网页。有人利用漏洞上传文件,篡改成 html 网页 到处散播。

同时看到在 cos 图床中还发现不止这一个文件,这怎么行,流传出去可要祸害不少人呐,赶紧先采取了紧急措施,将所有关联文件写设置了私有读写先,并关闭上传源头的 cos 上传,然后加急联系云厂商同事,帮忙解封域名。

事后复盘

原因

不知道大家有没有疑问,为什么上传的 pdf 文件变成了 html 网页?

雪碧那是打开pdf 一看,header 头被篡改了,正常来说Content-type 是 pdf

正常来说Content-type 是 pdf

但被篡改成了 text/html

被篡改成了 text/html

这是上传流程中密钥泄露了! 正好雪碧在重构上传模块,但泄露这个地方的上传还没全部接入,中招了。

DNS 解析过程

借此机会,雪碧又重新复习了遍 DNS 解析
以百度为例,DNS 解析过程如下:

image-20240318220512257

经过这次事件后,对 DNS 解析又清晰了,密钥安全也是是重中之重,接下来会出篇文章记录如何重构上传。