-
-
[原创]Host-Header-Injection
-
发表于: 2018-3-28 12:38 1731
-
前言:
遇到个Host-header-injection,简单的查查资料,总结一下这方面的知识。
目录:
0x01:漏洞原理
0x02:黑盒测试
0x03:漏洞危害
0x04:如何修复
漏洞原理
在互联网上,大部分情况下一个web服务器,有着一个IP和多个网站。那么当我们向web服务器做出请求时,web服务器是如何识别到底是访问其中的哪个网站呢?这就是HOST存在的理由。
而当服务器获取HOST的方式不当时,就会产生很多问题。
例如下面的代码。
1 | <a href= "http://<?php echo _SERVER['HOST'] ?>" >Redirect</a> |
SERVER['HOST']是可以通过抓包修改的。一切用户的输入都是不可相信的。
正常
Request:
1 2 | GET / HTTP/1.1 Host: example.com |
Response:
1 2 3 | HTTP/1.1 302 Object moved Location: http: //www.example.com <a href= "http://http://www.example.com" >Redirecting...</a> |
黑盒测试
三种修改方式
直接修改
Host: bywalks.com
参数污染
Host: google.com
Host: bywalks.com
伪造请求头
X-Forwarded-For: bywalks.com
漏洞危害
缓存投毒
1:用浏览器访问example.com
2:服务器返回302跳转到https://www.example.com/login
3:当我们访问example.com的时候,修改请求头,为bywalks.com
4:服务器返回302跳转到https://www.bywalks.com/login
5:当我们再一次访问example.com时,或许服务器没有经过验证,直接跳转到http://www.bywalks.com/login
Open Redirection
302跳转
CRLF
POC:
1 | %0d%0aset-cookie%20%3atest%3dtrue; |
密码重置
网站一般都存在这密码修改功能,直接输入email即可。账号绑定的email就会接收到邮件。
类似于这样。http://www.example.com/Token/
HOST可以修改,我们就可以修改HOST,email接受的邮件就变成了这样:http://www.bywalks.com/Token/
当用户点击这个URL之后,我们就可以从网站日记看到这个TOKEN,从而达到密码重置的目的。
如何修复
1:HOST白名单
2:获取真实HOST。
个人博客:http://www.bywalks.com
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
赞赏
- [原创]Host-Header-Injection 1732
- [原创]ClickJacking简介和防御 2019
- [原创]浅谈CORS可能产生的漏洞 4753
- [投稿]DNSLOG在渗透中的妙用 3964
- [原创]浅谈XXE漏洞 4943