HTTP host头攻击的技术

本文介绍了一种常见的Web安全威胁——HTTPhost头攻击,详细解释了其工作原理,包括如何利用篡改HTTP请求中的HOST字段注入恶意代码,并提供了针对Nginx和Tomcat服务器的有效防御策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个有漏洞的JSP代码案例:
这里写图片描述

使用HTTP代理工具,如BurpSuite篡改HTTP报文头部中HOST字段时,加红框中变量即客户端提交的HOST值,该值可被注入恶意代码。

request.getServerName( )方法引用HTTP报文头部中HOST字段

如过上面的页面在base标签里用了 basePath
那么页面上js 或者 css 就会请求 被注入的恶意路劲

总结:
客户端篡改HTTP报文头部中HOST字段,然后我们后台又拿这个字段去使用,这就是 HTTP host头攻击

-----------------------------------------------分割线-----------------------------------------------

还有一种就是情况访问网站时如果访问路径中缺少/,大多数中间件都会自动将路径补全,返回302或301跳转如下图,Location位置的域名会使用Host头的值。
这里写图片描述

这种情况实际上风险较低,难以构成Host头攻击。但是由于大多漏洞扫描器会将这种情况检测为Host头攻击,为了通过上级检查或各种审核,大多数甲方单位会要求修复漏洞,彻底解决问题

修复方法:

Nginx:
方法一:
修改nginx.conf

添加一个默认server,nginx 会根据访问头(request head)中Host 的数据来确定使用哪个server来处理当前请求。如果请求没有匹配任何 server,或者访问头(request head)中没有包含Host的数据,那么nginx会将该请求路由给默认的 server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。

server {
    listen       8888 default_server;
    server_name  _;
    access_log   off;
    return       403;
}

方法二:
修改nginx.conf

在目标server添加检测规则,参考以下配置:(if部分)

server {

       server_name  192.168.0.171;

       listen       8888;

        if ($http_Host !~*^192.168.0.171:8888$)

        {

        return 403;

        }

       include /etc/nginx/default.d/*.conf;

       location / {

       root /www/dvwa;

       index index.php index.html index.htm;

       }

}

Tomcat:
修改tomcat\conf\server.xml

找到如下位置:
这里写图片描述
将Host里的name修改为静态的域名,如下:

这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值