查看: 113|回复: 0

[Web] CVE-2020-7245(CTFd账户接管漏洞)复现

[复制链接]
发表于 2020-6-9 00:42:21 | 显示全部楼层 |阅读模式

0x01 漏洞描述
在CTFd v2.0.0-v2.2.2的注册过程中,错误的用户名验证方式会允许攻击者接管任意帐户,前提是用户名已知并且在CTFd平台上启用了电子邮件功能。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  0x02 漏洞分析
  CTFd v2.0.0版本注册部分的代码
  CTFd/CTFd/auth.py#159
  CTFd/CTFd/auth.py#207

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
可以看到用户注册时name参数并未经过任何处理,判断用户名是否重复时使用的就是没有经过任何处理的name值,然而存入数据库时却将这个name值做了 strip处理,去掉name值首尾的空字符。
这就意味着只要注册一个首尾添加空格的用户名即可绕过用户名不能重复的限制。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  CTFd v2.0.0版本找回密码部分的代码
CTFd/CTFd/auth.py#95

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
大致可以理解为找回密码时从链接参数中取data值,将其反序列化后获得用户名,即可重置任意用户的密码。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  利用该漏洞需要以下几步:
  • 利用首尾添加空格绕过限制,注册一个与受害者用户名相同的账号
  • 找回密码链接发送到自己的邮箱
  • 修改自己账号的用户名(与受害者不同)
  • 点击重置密码链接,设置新密码

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  0x03 漏洞复现
V&N 2020公开赛HappyCTFd原题,buuoj有对应的环境。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  具体操作主要分为以下几步:
  • 先在buuoj注册个邮箱
  • 利用首尾添加空格绕过限制来注册一个与受害者用户名相同的账号
  • 找回密码链接发送到自己的邮箱
  • 修改自己账号的用户名(与受害者不同)
  • 点击重置密码链接,设置新密码

  由于buuoj靶机无法访问外网,所以需要在buuoj的邮件系统注册邮箱。
  http://mail.buuoj.cn/admin/ui/user/signup/mail.buuoj.cn

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
然后我们访问靶机地址,发现该ctfd平台有一个admin账号,所以我们尝试重置admin账号的密码。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  首先注册一个首或者尾带空格的admin账号,邮箱需要设置正确。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
注册成功可以发现自己后台的用户名首尾并没有空格。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
然后尝试重置admin密码,浏览器另外开一个页面,输入自己注册账号的邮箱,获取重置密码链接。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
在收件箱中收到重置密码链接后,先不要操作,需要去用户后台页面修改用户名(任意)。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  修改完自己的用户名直接点击邮箱里的重置密码链接,对admin账号进行密码重置,设置一个你想要的密码。
  再次用admin和你设置的密码登录,就成功拿到了超级管理员权限。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  flag在challenges里面找一下,发现有个"flagflag你在哪"的挑战,打开后找到一个"miaoflag.txt"的附件,即flag。

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现

CVE-2020-7245(CTFd账户接管漏洞)复现
  0x04 漏洞修补
更新CTFd为最新版即可。
  参考链接:
  https://www.colabug.com/2020/0204/6940556/amp/


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表