0x00 漏洞简介

在CTFd v2.0.0-v2.2.2的注册过程中,错误的用户名验证会允许攻击者接管任意帐户,前提是用户名已知并且在CTFd实例上启用了电子邮件。要利用此漏洞,必须使用与受害者的用户名相同的用户名进行注册,但在用户名之前和/或之后插入空格。这将使用与受害者相同的用户名注册该帐户。在为新帐户启动密码重置后,由于用户名冲突,CTFd将重置受害者的帐户密码。

官方补丁:https://github.com/CTFd/CTFd/pull/1218/files

0x00 漏洞复现

  • 以BUUCTF上的[V&N2020 公开赛]HappyCTFd为例。因为无法访问外网,所以现在buuoj上注册一个邮箱。
  • 注册一个名为“admin”的账号,提示用户名已存在。
  • 为了绕过这个限制,可以在首尾添加空格,成功注册。
  • 点击忘记密码,邮箱写刚才注册的。
  • 收到邮箱后,点击重置连接:

发现了管理员控制面板,获得了admin权限,在布置题目这里找到了flag文件: