路由器参数查询网 mao.fan 疑似爆了个极其严重的 P0 级别的漏洞。
前天我在访问该网站时,在完全未登录的情况下,被系统强行塞了另一个陌生人的账号。我一开始没意识到,以为是自己的账号,甚至顺手给人家改了个名字,然后一想不对啊,我哪有账号,这什么永久 VIP,我什么时候充过几十块钱给这个网站?
看了一下 Cookies,用 curl 抓了网络链路研究了一下,应该是站长在后端犯了个极其低级的配置错误。
站长在 EdgeOne 或者源站 Nginx 开启了页面强缓存,但不知道是怎么回事,忘记了过滤 Set-Cookie 响应头以及添加 Cache-Control: no-store 兜底。这导致了极其可怕的 P0 级别的会话劫持漏洞:CDN 或反向代理全局缓存了包含真实用户 Flask Session 的 Set-Cookie 响应头,并将其错误地下发给了其他多个访客!
虽然那个陌生人是广州移动,我是上海电信,按理说 CDN 边缘节点有物理隔离,但我挂着 Fake-IP 走代理出海,极其凑巧地和这位广州老哥撞上了同一个海外落地机。老哥走了这条路拿自己账号登录了网站,Cookies 错误地传递给了 CDN 缓存。在那个带有 Flask Session 的 TTL 缓存还没过期的几分钟内,我发起了请求,CDN 节点把我看成了同一个人,直接把本应该是广州老哥的极其私密的凭证复制了一份给我,强行让我白嫖了 VIP 账号!这概率我真想去买张彩票了。
昨天已经联系了站长,但是到刚刚我撞了几次还是极其轻易地成功复现了,有点难绷,所以我打算公开曝光。 如果你知道这个网站并访问过,你的账号可能正在互联网上裸奔,最好近期绝对不要访问此网站。