【技术干货】偶遇飞客茶馆恶性漏洞(可提权/端站)

【技术干货】偶遇飞客茶馆恶性漏洞(可提权/端站)



1. 前言

曾经是论坛重度用户的我现在已经不怎么看各种论坛了。但是由于最近回国闲的无聊,准备搞搞国内信用卡玩,于是看了看国内著名常旅客/信用卡论坛——飞客茶馆。自己在2016年为了回复一个帖子注册过一个账户,然后三四年过去忘记了密码。想通过找回密码的方式找回密码,结果遇到了这个恶性漏洞,其严重性可以说是可以端掉整个论坛的……

2. bug描述

从各种方面来看,飞客茶馆已经放弃了邮箱作为主要登录方式。找回密码页面需要用户输入电话号(但实际上能够输入邮箱),前面还会有电话国家/地区码(邮箱哪儿来的电话国家/地区码一说?)。无论如何,我填写了我的邮箱并且点击了下一步,然后我收到的就是一个错误提示:

找回密码页面。
错误信息包含了整个调用栈!注意最下面直接提供了密码重置链接!
网易的退信通知,飞客茶馆的邮箱被163列入了发送人黑名单……

为什么会报错呢?点开了开头163提供的邮件bounce(退信)详情链接,我发现错误的导致原因是因为飞客茶馆用了这个邮箱发送了大量(疑似)垃圾邮件,被163给封了通过SMTP直接发送邮件的功能,且没有申诉,导致163邮箱禁止飞客茶馆发送任何邮件到任何用户,于是邮件发送程序报错。

要知道,做程序大忌就是报错信息直接dump给用户。绝大多数用户看不懂报错信息,能看懂的用户却很有可能就是有心人。我发现这一套信息中有一行非常有意思,也就是我在图片最下方处标出来的“具体的密码重置链接地址”。任何人,只要知道一个用户在飞客茶馆上所使用的邮箱地址,就可以在这个界面获取到重置该用户密码的链接。我个人成功通过该方法重置了我自己的密码——但是有心人就可以重置任何绑定了邮箱的用户的密码。假设说有人撞库呢?假设说有人知道管理员账户所用的邮箱呢?前者能获取到一堆傀儡小号,而后者可以对网站进行提权(我记得Discuz的论坛后台是可以运行任意SQL的)甚至端站(删库、荡库、乃至获取服务器最高权限等)。

3. 错误提交

发现了这个bug之后,由于这个bug的潜在严重性,我决定立刻将其提交给论坛管理人员。当时是个周六,我试图添加工作人员QQ,并无回复。提交了工单,也没收到回复。周二觉得这个问题实在等不及,于是咨询了可能有门路的好友北美票帝之后,他建议我直接打电话给飞客茶馆。打电话过去之后他们告诉我他们已经注意到我的工单,并且已经在周一下午进行了修复,且会给我在飞客茶馆论坛上进行奖励。

修复后不再显示调用栈,解决了安全性问题但是并没有解决无法收到密码找回邮件的问题。

我个人也是一个开发者,所以我很关注这方面的问题。在取得了对方的同意并确认问题已经修复后(其实邮件发送还是不好使,只是错误界面就提示错误,下方空白,不再输出调用栈),我写下来了这个小报告来提醒后来人们:千万不要随意向外输出网站的错误信息,更别说这么敏感的调用栈信息了。幸亏这是一个好心的开发者看到了给站点管理员提个醒(毕竟我也曾遇到过其它开发者给我网站提安全问题的提醒),若真的被别有用心的人利用了,那么网站的损失将会是巨大的——遇到个搞破坏的也就罢了,如果真的荡库并且把网站的个人信息全卖了,那就真的好玩了。网站的技术人员也应该提供一些在非工作日的公开联系方式,毕竟安全问题的修复需要争分夺秒,黑客可不会和你耗时间的。

权力越大,责任越大。要时时刻刻牢记程序安全,随时关注用户的问题提交并及时,且千万不要输出错误详情给用户看。

Leave a Reply

Your email address will not be published. Required fields are marked *