精华内容
下载资源
问答
  • 基于Nginx的修复方案#注意Nginx的配置文件格式,空格之类的会影响规则if ( $host !~* " 10.4.15.1| 10.9.4.9 " ) {return 403;}基于tocmat的修复方案经测试,最低支持Tomcat6.0.x以上版本的修复修复方式打开tomcat...

    基于Nginx的修复方案

    #注意Nginx的配置文件格式,空格之类的会影响规则

    if ( $host !~* " 10.4.15.1| 10.9.4.9 " ) {

    return 403;

    }

    基于tocmat的修复方案

    经测试,最低支持Tomcat6.0.x以上版本的修复。

    修复方式

    打开tomcat的conf目录中的server.xml文件,将Host节点做如下配置:

    unpackWARs="true" autoDeploy="true"

    xmlValidation="false" xmlNamespaceAware="false">

    10.1.8.158

    prefix="localhost_access_log." suffix=".txt" resolveHosts="false"

    pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />

    基于Filter的修复方案

    修复方式

    在工程的web.xml中配置下面代码中的拦截器,注意该拦截器一定要放在第一个执行。

    最低支持Tomcat7.0.x以上版本的修复

    范例代码

    import javax.servlet.*;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import java.io.IOException;

    /**

    * @author Shmily

    */

    public class HostCleanFilter implements Filter {

    /**

    * 自定义实现host白名单添加

    * @param filterConfig

    * @throws ServletException

    */

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest)servletRequest;

    HttpServletResponse response = (HttpServletResponse) servletResponse;

    String host=request.getHeader("Host");

    System.out.println("Host-debug:"+host);

    if(!isEmpty(host)){

    if(checkBlankList(host)){

    filterChain.doFilter(servletRequest,servletResponse);

    }else{

    System.out.println("[host deny access tips]->"+host);

    response.getWriter().print("host deny");

    response.flushBuffer();

    }

    }else{

    filterChain.doFilter(servletRequest,servletResponse);

    }

    }

    @Override

    public void destroy() {

    }

    /**

    * 校验当前host是否在白名单中

    * @param host

    * @return

    */

    private boolean checkBlankList(String host){

    if(host.contains(".baidu.cn")host.contains("10.19.1.")){

    return true;

    }

    return false;

    }

    public boolean isEmpty(Object str) {

    return str == null || "".equals(str);

    }

    }

    标题:URL存在http host头攻击漏洞-修复方案

    作者:TravelEngineers

    地址:https://www.mycitymemory.com/articles/2019/07/27/1564213062285.html

    版权声明:转载请注明博文地址,尊重作者劳动成果。

    作者简介:坐标魔都,一枚爱旅行爱摄影的攻城狮。愿攻城拔寨的路上,你不用996,也不再孤单,加油。

    展开全文
  • //String host = request.getHeader("host"); String serverName =request.getServerName(); System.out.println("serverName-debug:" +serverName);if (!isEmpty(serverName)) {if(checkBlankList(serverName)) { ...

    packagecom.cmcc.hy.mobile.config;importjava.io.IOException;importjava.util.Arrays;importjava.util.List;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.beans.factory.annotation.Value;/***@authorwangzhengrong

    * @date 2019/1/22 11:09*/@WebFilter(filterName= "otherFilter")public class HostFilter implementsFilter {/*** 自定义实现host白名单添加*/@Value("${ALLOWED_SERVERNAMES}")privateString ALLOWED_SERVERNAMES;

    @Overridepublic void init(FilterConfig filterConfig) throwsServletException {//System.out.println("Filter初始化中");

    }/*** host拦截*/@Overridepublic voiddoFilter(ServletRequest servletRequest, ServletResponse servletResponse,

    FilterChain filterChain)throwsIOException, ServletException {

    HttpServletRequest request=(HttpServletRequest) servletRequest;

    HttpServletResponse response=(HttpServletResponse) servletResponse;//String host = request.getHeader("host");

    String serverName =request.getServerName();

    System.out.println("serverName-debug:" +serverName);if (!isEmpty(serverName)) {if(checkBlankList(serverName)) {

    filterChain.doFilter(servletRequest, servletResponse);

    }else{

    System.out.println("[serverName deny access tips]->" +serverName);//response.getWriter().print("host deny");

    response.setStatus(403);

    response.flushBuffer();

    }

    }else{

    filterChain.doFilter(servletRequest, servletResponse);

    }

    }

    @Overridepublic voiddestroy() {//System.out.println("Filter销毁");

    }/*** 校验当前host是否在白名单中*/

    private booleancheckBlankList(String serverName) {

    String[] allowdServerName= ALLOWED_SERVERNAMES.split(",");

    List serverNameList =Arrays.asList(allowdServerName);for(String str : serverNameList){if(!isEmpty(str) &&str.equals(serverName)){return true;

    }

    }return false;

    }/*** 判空*/

    public booleanisEmpty(Object str) {return str == null || "".equals(str);

    }

    }

    展开全文
  • 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的...
    1. 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。

    2. 建议修复:web应用程序应该使用SERVER_NAME而不是host header。在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。

    3. 修复方法:加过滤器类。

    @SuppressWarnings(“serial”)
    public class HttpHostFilter extends HttpServlet implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
    
    
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        // 头攻击检测  过滤主机名
        String requestHost = request.getHeader("host");
        if (requestHost != null && !checkBlankList(requestHost)) {
            response.setStatus(403);
            return;
        }
        filterChain.doFilter(request, response);
    }
    
    // 判断主机是否存在白名单中
    private boolean checkBlankList(String host) {
        // 此处为自己网站的主机地址
        if (host.contains("127.0.0.1")) {
            return true;
        }
        // 返回true 无白名单限制
        return false;
    }
    

    }

    web.xml中的过滤器配置:

    <filter-name>HttpHostFilter</filter-name>
    
    <filter-class>
    
        com.xxx.webservice.interceptor.HttpHostFilter
    
    </filter-class>
    
    <filter-name>HttpHostFilter</filter-name>
    
    <url-pattern>/*</url-pattern>
    
    <dispatcher>REQUEST</dispatcher>
    
    <dispatcher>FORWARD</dispatcher>
    

    总结:由于最常用的web容器是tomcat,因此在尝试了一些配置之后,就决定用过滤器过滤主机地址的方法去实现,如果被恶意修改主机地址,该主机地址不存在我们写的地址白名单中,服务器就会返回403,就不会被监测到存在头攻击的漏洞。

    展开全文
  • 漏洞修复:检测到目标URL存在http host头攻击漏洞绿盟漏洞详细描述修复方案修复修复后 绿盟漏洞详细描述 修复方案 通过nginx设置server_name修复 server { listen 80 default; server_name _; ...

    绿盟漏洞详细描述

    在这里插入图片描述

    修复方案

    通过nginx设置server_name修复

    server {
    	listen 80 default;
    	server_name _;
    	location / {
    		return 403;
    		#return errors/403.html;
    	}
        }	
    
        server {
            listen       80;
    		server_name   42.123.72.129;
    		······
        }
    

    修复前

    正常请求头,Host: 42.123.72.129,修改Host返回200,存在host头攻击漏洞

    在这里插入图片描述

    修复后

    正常请求头,Host: 42.123.72.129, 修改Host,返回nginx指定错误码403,修复成功
    在这里插入图片描述

    验证过程涉及到的BurpSuite工具简要使用说明

    Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

    下载BurpSuite

    展开全文
  • 一、前言 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST...这种情况实际上风险较低,难以构成Host头攻击。但是由于大多漏洞扫描器会将这种情况检测为H
  • URL存在http host头攻击漏洞-修复方案 springboot使用注解的方式 -- 第一步:在自定义filter类上添加如下注释 package com.cmcc.hy.mobile.config; import java.io.IOException; import java.util.Arrays...
  • host头攻击漏洞修复方案

    千次阅读 2020-03-28 18:26:55
    绿盟科技扫描到网站存在http host头攻击漏洞,需要对该漏洞进行修复,网站后台是用java写的,对于这种host头攻击的方式,有很多种方式避免。 如从源头考虑的话,一般网站都配置了nginx或者部署在Apache上面,可以在...
  • 最近扫描发现很多系统web存在http host头攻击漏洞,报告里面的解决方案没有具体写tomcat如何操作,故记录一下整改方法。打开conf server.xml文件,完善&lt;Host/&gt;元素&lt;Host/&gt;属性:name:...
  • 0x00 概述漏洞名称:Host头攻击风险等级:低问题类型:管理员设置问题0x01 漏洞描述很多场景下,开发者都相信HTTP Host header传递的参数值用来更新链接导出脚本或者一些敏感操作。但该参数是可控的,若没有对其进行...
  • tomcat修复URL存在http host头攻击漏洞

    千次阅读 2018-04-09 17:56:32
    Host/&gt;元素&lt;Host/&gt;属性:name:主机域名============== &lt;Host name="abc" appBase="webapps" unpackWARs="true" autoDeploy="true" xml...
  • 近期在使用绿盟对线上项目进行安全扫描时,发现系统存在host头攻击漏洞。在此记录解决的过程以便后期回顾上述问题出现的原因为在项目中使用了 request.getServerName 导致漏洞的出现 不要使用request中的serverName...
  • 0x00 概述漏洞名称:Host头攻击风险等级:低问题类型:管理员设置问题0x01 漏洞描述很多场景下,开发者都相信HTTP Host header传递的参数值用来更新链接导出脚本或者一些敏感操作。但该参数是可控的,若没有对其进行...
  • 1.检测到目标URL存在http host头攻击漏洞 解决方法: 在nginx配置默认的虚拟主机,配置如下: 不是指定的host就会走default,返回403,就可以解决host攻击漏洞。   2.Zookeeper未授权访问漏洞修复 解决...
  • 一、漏洞描述: 为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段...
  • 研发修复完成后,使用公司的小安平台(http://sec.iflytek.com/#/portal)测试仍存在此漏洞,咨询了公司安全管理部门,我们公司的小安平台存在误报。 本着认真负责的态度,自己从网上找资料使用其他工具进行验证。 ...
  • 漏洞描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER[“HTTP_HOST”]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能...修复建议 w...
  • 常见漏洞扫描修复, 收纳项目上线常见漏洞
  • 修改tomcat下的conf/server.xml文件 将Host中的name修改为静态的域名,如下(原本为localhost)
  • 任意URL跳转漏洞漏洞简单介绍:服务端未对传入的跳转URL变量进行检查和控制,导致可恶意构造任意一个...修复漏洞最有效的方法之一就是校验传入的跳转URL参数值,判断是否为预期域名。在Java中可使用下列方法:Str...
  • 记录编写handler 来对此漏洞进行修复 编写handler 来对此漏洞进行修复 注:JFinal的 Handler是 AOP + 责任链 模式的一个变种,JFinal对action及interceptor处理自身也是一个Handler名叫ActionHandler,可见其功能之...
  • Nginx: 常见漏洞修复Host头攻击|不安全的Http方法|缺少X-XSS-Protection头部) Host头攻击 在server模块配置: if ($host !~* xxx.xxx.xxx|xxx.ddd.ddd.ddd) { return 403; } 或者 if ($http_Host !~* xxx.xxx...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

修复httphost头攻击漏洞