• 检测到目标URL存在http host头攻击漏洞


    1.添加java过滤器

    1. import com.xx.sys.core.util.ResourceUtil;
    2. import org.springframework.http.HttpStatus;
    3. import javax.servlet.*;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.IOException;
    7. import java.util.Arrays;
    8. import java.util.List;
    9. import java.util.stream.Collectors;
    10. /**
    11. * @Description: 检测到目标URL存在http host头攻击漏洞
    12. * @Author: t
    13. * @Createtime: 2022/9/28 11:30
    14. */
    15. public class HostCheckFilter implements Filter {
    16. @Override
    17. public void init(FilterConfig filterConfig) throws ServletException {
    18. }
    19. @Override
    20. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    21. //从配置文件或其他地方获取 正确的值 例:public.cnemc.cn,192.168.1.1
    22. String hostName = ResourceUtil.getConfigByName("127.0.0.1");
    23. String[] split = hostName.split(",");
    24. List hostNameList = Arrays.stream(split).collect(Collectors.toList());
    25. HttpServletRequest request = (HttpServletRequest) servletRequest;
    26. String host = request.getHeader("Host");
    27. if(host.contains(":")){
    28. host = host.substring(0, host.indexOf(":"));
    29. }
    30. if (hostNameList.contains(host)){
    31. filterChain.doFilter(servletRequest, servletResponse);
    32. }else{
    33. HttpServletResponse response = (HttpServletResponse) servletResponse;
    34. response.setStatus(HttpStatus.BAD_REQUEST.value());
    35. return;
    36. }
    37. }
    38. @Override
    39. public void destroy() {
    40. }
    41. }

    2.web.xml文件添加配置

    1. <filter>
    2. <filter-name>hostCheckFilterfilter-name>
    3. <filter-class>com.xxxx.HostCheckFilterfilter-class>
    4. filter>
    5. <filter-mapping>
    6. <filter-name>hostCheckFilterfilter-name>
    7. <url-pattern>/*url-pattern>
    8. filter-mapping>

    3.验证是否成功

            例如hostName配置为127.0.0.1,在浏览器中使用localhost无法访问即为成功。

  • 相关阅读:
    中国替代方案探索:替代谷歌企业邮箱的选择
    Node.js的Web后端开发调研
    sip服务器 国标gb28181
    A+轮融资近2亿元,本土线控制动「TOP 1」按下“加速键”
    Linux 系统服务日志查询 journalctl:查询 systemd 日记
    Python小知识点
    Deep Residual Learning for Image Recognition浅读与实现
    SSM框架学习
    卷妹带你回顾Java基础(一)每日更新Day10
    OutOfMemoryError 内存溢出问题排查
  • 原文地址:https://blog.csdn.net/UD_World/article/details/127104404