通过X-Forwarded-Host密码重置令牌泄露
0x01 前言
看到国外老哥挖洞思路挺骚的,这里记录一下。原文连接
0x02 详情
在某个网站上,发现密码重置功能

通过抓包分析

每当输入电子邮件并单击重置密码时,我们都会收到一封带有密码重置令牌链接更改密码的电子邮件
拦截密码重置请求,小哥也启动了ngrok服务器
原始请求中用ngrok服务器域添加了另一个标头“X-Forwarded-Host”

这次收到了一封更改密码的电子邮件,并且使用ngrok服务器域名。密码重置令牌链接如下所示:
https://95saf4ct71g.ngrok.io/action-token?key=wia2lkIiA6ICciOiJIUzI1NiIsInR5cCIgODU2ZeyJhbGiA
可以看到,只需在密码重置请求中添加标题“X-Forwarded-Host”,即可成功更改host
然后小哥注意到,如果在密码重置页面中输入受害者的电子邮件,并拦截该请求,如果我请求包中添加“X-Forwarded-Host”为恶意的域名。然后,受害者将收到一封带有我的恶意域的密码重置令牌链接的电子邮件。当受害者点击该链接时,他将重定向到我的网站,他的所有令牌都会泄露给我。然后,我可以使用受害者泄露的令牌更改他的密码。是的,这个漏洞的影响是完全的帐户接管。
0x03 实现
在服务器上安装nginx
1 | apt install nginx -y |

Nginx配置文件存储在/etc/nginx
目录中。
主要的Nginx配置文件为/etc/nginx/nginx.conf
访问日志在:/var/log/nginx/access.log

通过nginx的访问日志,获取重置密码的令牌