漏洞描述
2024年1月11日,Gitlab官方披露CVE-2023-7028 GitLab 任意用户密码重置漏洞,官方评级严重。攻击者可利用忘记密码功能,构造恶意请求获取密码重置链接从而重置密码。官方已发布安全更新,建议升级至最新版本,若无法升级,建议利用安全组功能设置Gitlab仅对可信地址开放。
获取gitlab版本信息
访问/assets/webpack/manifest.json
访问https://github.com/righel/gitlab-version-nse/blob/main/gitlab_hashes.json 比较hash值
漏洞利用条件
1、需获取系统已有用户注册邮箱地址 2、满足影响版本
16.1 <=GitLab CE<16.1.6 16.2 <=GitLab CE<16.2.8 16.3 <=GitLab CE<16.3.6 16.4 <=GitLab CE<16.4.4 16.5 <=GitLab CE<16.5.6 16.6 <=GitLab CE<16.6.4 16.7 <=GitLab CE<16.7.2 16.1 <=GitLab EE<16.1.6 16.2 <=GitLab EE<16.2.8 16.3 <=GitLab EE<16.3.6 16.4 <=GitLab EE<16.4.4 16.5 <=GitLab EE<16.5.6 16.6 <=GitLab EE<16.6.4 16.7 <=GitLab EE<16.7.2
复现过程
这里被找回邮箱为个人注册邮箱地址,真实环境中需先获取目标邮箱地址
访问找回密码页面:/users/password/new
填写被找回邮箱地址,然后点击抓包
修改请求包为:user[email][]=目标邮箱地址&user[email][]=攻击者邮箱地址
user%5Bemail%5D%5B%5D=目标邮箱&user%5Bemail%5D%5B%5D=各位大佬们的邮箱 注意,在bp中符号需要自己编码
成功复现,只要看收信人是两个人,就证明漏洞利用成功,点击重置密码,就可以接管别人账户。
补充
在真实环境中,这个条件必须要有别人邮箱(可以用其他历史漏洞来获取),防御办法很多,比如升级版本,比如二次验证,这个就是二次验证的页面,如果出行这个页面,那就没办法了,这个是动态的验证码,目前还没有什么漏洞暴出来可以利用。
参考链接:https://mp.weixin.qq.com/s/gAU7I2b1fXt0YzNvSxILzQ
感谢大佬提供的无需权限就可以看gitlab的方法。
****************
尽量每天都能复现一个最想的漏洞复现,请持续关注
****************