一、什么是http host 标头攻击
HTTP Host 标头攻击是一种网络安全攻击技术,利用了 HTTP 协议中的 Host 标头字段的漏洞。Host 标头字段用于指定客户端请求的目标主机名或域名。
攻击者可以通过构造恶意的 HTTP 请求,伪造或篡改 Host 标头字段的值,从而欺骗服务器,让服务器误以为请求是针对其他主机或域名的。
二、 http host 标头攻击导致那些安全问题、
资源访问控制绕过:攻击者可以通过伪造 Host 标头来绕过服务器的访问控制策略。
例如,如果服务器配置了特定的访问控制规则,仅允许特定的主机或域名访问敏感资源,但攻击者可以伪造 Host 标头,使服务器误以为请求来自受信任的主机,从而绕过访问控制。
跨站请求伪造 (CSRF):攻击者可以伪造 Host 标头来欺骗用户浏览器发送恶意请求。如果目标网站没有适当的 CSRF 防护措施,攻击者可以利用这种漏洞进行 CSRF 攻击,以用户的名义执行未经授权的操作。
服务器端缓存污染:攻击者可以通过伪造 Host 标头来污染服务器端的缓存。如果服务器根据 Host 标头字段来缓存响应内容,攻击者可以伪造 Host 标头发送恶意请求,将恶意响应缓存到服务器上,从而导致其他用户受到影响。
三、常见利用方式
1、通过模棱两可的请求导致 Web 缓存中毒
2、主机标头身份验证绕过
思路:查看robots.txt发现后台地址,将host改为localhost 进行绕过利用。
3、基于路由的 SSRF
思路:根据提示使用Intruder进行暴力尝试host,由于暴力破解使用/login访问的,返回了404,觉得这个机器有问题,使用/admin,成功返回管理界面。
4、通过有缺陷的请求解析进行 SSRF
思路:发现绝对路径地址可以被服务器识别,而host 改成其他地址时,没被服务器阻拦,报504 (网关超时),原因是服务器作为网关或代理,没有及时从上游服务器收到请求。使用Intruder进行暴力破解,找到上游内网服务器ip,进行利用。
四、常见的防御措施
1、验证和过滤输入:在服务器端应用程序中,对HTTP请求中的Host头进行验证和过滤,确保它符合预期的格式和内容。拒绝包含非法字符或异常情况的Host头。
2、配置服务器:确保服务器的配置正确,阻止未经授权的Host头请求。可以使用服务器配置文件(如Apache的httpd.conf或Nginx的nginx.conf)中的相关指令来限制请求中的Host头。
3、设置安全响应头:使用安全响应头,如HTTP Strict Transport Security(HSTS)和Content Security Policy(CSP),以增加安全性并减少攻击面。
4、使用Web应用防火墙(WAF):部署Web应用防火墙来检测和阻止恶意的Host头攻击,它可以根据事先定义的规则集来识别和拦截潜在的攻击。
5、安全编程实践:在开发Web应用程序时,采用安全编程实践,如输入验证、输出编码和参数化查询等,以减少攻击的风险。