最近有朋友给我发来一个漏洞扫描报告,其中有一项是“Nginx头部***漏洞”

在绿盟的报告中,可以看到,头部***是指,http host header头中的HTTP_HOST不可靠,所以,如果后端开发代码中,通过类似PHP中的_SERVER["HTTP_HOST"]来获取host信息,那可能获取到的不是自己站点的host信息,这里简单做个复现


环境:

  • Nginx

  • PHP

  • Brupsuite


复现方法很简单,在Nginx中配置一个虚拟主机站点,用php-fpm处理php,在php中写一小段代码,通过_SERVER['HTTP_HOST']获取host并打印,用Brupsuite篡改host信息,环境搭建信息这里就不多说了,直接看Brupsuite过程,PHP代码如下:


接着启动Brupsuite,配置代理

浏览器设置代理到burp

接着通过浏览器请求上面nginx配置的server,在burp抓包,接着action——Send to Repeater,我们先看正常的返回


接着,通过burp改header中的host,模拟***,看结果

可以看到,php拿到的就不是我们自己的host信息,所以,这里会把恶意代码传过去


Nginx的server_name匹配规则,是通过HTTP请求头的host,去匹配配置文件中的server_name,去决定走哪个server配置,如果所有server_name都匹配不到,就使用默认的server,如果没有配置默认的server,就会请求第一个server


这也就是为什么,上面host随便写个域名,都可以访问到的原因


这里还有一个Nginx的安全配置相关的,叫“恶意域名解析漏洞”,同样的原理,别人知道你的IP,随便解析个域名,就可以访问你的网站


以上两种漏洞防范很简单,就是在nginx主配置文件中,写第一个server,server_name用默认default_server,让所有未匹配的server_name,都走这个server的配置,直接return对应的状态码,配置如下:

如果有https的网站,还需要配置443端口的默认server


或者nginx安装后,默认conf.d目录下有个default.conf,你可以在default配置中直接修改


配置完成后,通过上面的方法再模拟一次***


可以看到,已经无法访问


所以安装Nginx之后,一定要修改以上配置,防止恶意域名解析和HOST头部***


©著作权归作者所有:来自51CTO博客作者mb5ff980f81f3d8的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 02-K8s部署安装配置 Kuboard v2
  2. K8s手动方式搭建平台及问题汇总
  3. 将Hexo部署到自己的服务器上
  4. 9.Cisco 虚拟化vWLC+三层交换机+多SSID组网
  5. Hive3.1.0入门:安装部署详解
  6. 使用Operator部署Prometheus
  7. Prometheus配置企业微信告警
  8. MPLS系列之二:MPLS *** 静态路由、RIP、EIGRP【包括配置 分析控制
  9. 华为交换机配置基于IP地址划分VLAN

随机推荐

  1. Ubuntun下Android(安卓)SDK环境搭建
  2. android 工具类 DateUtil
  3. android自定义属性的使用
  4. Ubuntu 虚拟机android平台搭建总结
  5. Android(安卓)WebView 向上向下滑动监听
  6. Android基础 | 控件基础 | ImageView用法
  7. 如何将应用发布到市场上去
  8. 长按power键Android9.0关机耗时分析
  9. 关于android studio开发APP中,给单个Activ
  10. Android将byte数组写入文件