微信公众号

文章同步于微信公众号:苏雅图的雨

说明
从昨天下午开始,著名机场面板V2Board(覆盖市面80%以上的机场)疑似出现漏洞,
攻击者已将四份数据公布在某个平台,数据包含了邮箱、非明文密码、套餐信息、订阅链接等。

笔者自述
数据泄露对于安全圈来说早已不是新鲜事,但这次的数据泄露却让“很多人”咬牙切齿,原因是这些泄露的数据很有可能在网络这片深海中把一些利用匿名代理从事网络违法犯罪的人“揪出来”。
不但如此,攻击者还公开喊话国内的相关工作人员,声称愿意配合并接受一些建议。
下面是笔者记录的完整事件

攻击者在某个平台的发言:

【原文】关于v2board项目泄漏事件,我们会在此处公开手里所有数据,欢迎各位关注,涉事站点大约100+,数据约400余万(不完全统计),数据中包含注册邮箱,节点信息,及加密的密码等。

【原文】部分数据我们会进行公开,并且会打包给国内负责相关事宜的工作人员,涉及站点大约100+(群达到一定人数我会发布,谢谢)数据中包含注册邮箱/经过加密的密码及节点方式一些其他信息。

【攻击者陆续公布了四份数据的下载链接】 其中有两份是月流水为10w左右的数据

【原文】如果v2board开源作者在最新版本,认为解决了所有可能发生的问题(最新版本),并且能保证安全,我们拭目以待,将会重拳一击。

【原文】 刚才我们对现有数据进行最新统计,共计342万余条。

【原文】 如果有大陆的警方工作人员,可以与我联系,我很乐意配合并且保留一些社工的看法,与建议,邮箱xxxxxx@gmail.com 笔者已将邮箱做处理

【原文】如果你想知道是否安全,不在我们的范围,说明你的站点不值得我们花时间,如果要一个准确数字,那么低于月流水1w,我们将扫描范畴选择越过,那么你是安全的。

【原文】目前为止我们筛查,使用v2board最大流水(月)可达200万,群达一定人数,我们将公开一个(月)50万流水的机场表。

笔者处理过的原文:

在晚上22:40分攻击者宣布数据已被某**全部拷走,并说祝各位好运!

攻击者最后又补充说不用刻意猜疑,数据没有出售给任何人,除上述4份公开表外,权当公益排查。

当天下午V2Board官方发布v1.7.1版本。

官方公告:

由于1.6.1的安全问题我们表示非常抱歉, 在新版本中我们加入了诸多的安全方面的优化, 也感谢利用者的测试。

我们在1.7.1版本中加入了安全信息重置的方式。 受影响范围仅限定于1.6.1。

如果您在此次事件中存在安全问题, 我们建议您进行如下操作:

1. 排查系统中的密钥是否被篡改

2. 排查系统中是否有未知管理员

3. 在站点目录下执行 php artisan reset:user 对订阅安全信息进行重置

2022年12月16日09:43分更新

V2Board数据泄露漏洞复盘 作者:@AyagawaSeirin(Twitter)

通过review问题代码发现,问题在于鉴权中间件。

1.6.1版本的token存储方式从session改成了cache,导致作者重写了鉴权代码新的鉴权代码造成了严重的漏洞。

众所周知v2board的管理员信息和用户信息都在user表,仅用is_admin字段区分是否管理员,

管理员API的中间件鉴权代码和用户API中间件鉴权代码一模一样,只是多了个is_admin校验。

如图所示中间件首先会检查浏览器提交的token是否在服务器cache,也就是redis中。

如果有,直接通过鉴权。问题就在于这,普通用户在登录后生成的token已经在服务器redis表中,

所以将普通用户的token直接提交到管理员相关API接口,即可通过鉴权,没有任何权限校验。

也就是普通用户的token,可以随意调用管理员的API,相当于拥有了完整的管理员后台权限。

快速区分机场是否使用V2Board作为后台管理系统的方法

类似这种面板的机场是使用v2board的面板, 如果机场使用的是旧版面板, 是受到本次泄露风波影响的。

【方法一】

请求接口https://域名/api/v1/guest/plan/fetch 这个api不用登录就能获取套餐信息,有返回即是。

【方法二】

PC:浏览器打开机场页面,右键→“审查元素”或者单击F12,打开调试窗口,源码包含“v2board”字样的就是。
安卓:下载安装X浏览器 (https://www.xbext.com/),打开机场页面,右上角菜单栏,点击查看页面源码/查看页面资源,同理包含“v2board”字样的就是。或者可以通过安卓平台的WebView内核&Chromium内核&Gecko内核的特性查看源码,只需要在地址前面加上view-source:

更多:基本上所有使用v2board作为后台管理系统的机场源码都包含以下内容
<link rel="stylesheet" href="/theme/v2board/assets/
<script src="/theme/v2board/assets/

使用此方法识别比起直接看界面看个大概更准确。