Web应用漏洞-NGINX各类请求头缺失对应配置

时间:2024-03-11 19:50:46

前言

  随着越来越多的网络访问通过WEB界面进行操作,WEB安全已经成为互联网安全的一个热点,基于WEB的攻击广为流行,SQL注入、跨站脚本等WEB应用层漏洞的存在使得网站沦陷、页面篡改、网页挂马等攻击行为困扰着网站管理者并威胁着网站以及直接用户的安全。配置一些http_header,不需要改代码,是一种惠而不费的操作,有没有效先配了再说吧。

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

详细描述:

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

解决办法:

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

# HTTP host头攻击的技术NGINX防护
        if ($http_Host != \'xxx.com\'){
          return 403;
        }

# 匹配多个域名/IP
        set $flag 0;
        if ($http_Host != "xxx.com") {
         set $flag "${flag} 1";
        }
        if ($http_Host != "10.0.0.100") {
         set $flag "${flag} 2";
        }
        if ($flag = "012") {
         return 403;
        }

 

2、 检测到目标X-Content-Type-Options响应头缺失

详细描述:

X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。 X-Content-Type-Options响应头的缺失使得目标URL更易遭受跨站脚本攻击

解决办法:

将您的服务器配置为在所有传出请求上发送值为“nosniff”的“X-Content-Type-Options”头。

# add_header X-Content-Type-Options: nosniff;
# 如果服务器发送响应头 “X-Content-Type-Options: nosniff”,则 script 和 styleSheet
# 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。

 

3、 检测到目标X-XSS-Protection响应头缺失

详细描述:

HTTP X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。 X-XSS-Protection响应头的缺失使得目标URL更易遭受跨站脚本攻击。

解决办法:

将您的服务器配置为在所有传出请求上发送值为“1”(例如已启用)的“X-XSS-Protection”头。

# 0:# 禁用XSS保护;
# 1:# 启用XSS保护;
# 1; # mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);
# 浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它。

# add_header X-Xss-Protection: 1;
# add_header X-Xss-Protection: mod=block;

 

4、 检测到目标Content-Security-Policy响应头缺失

详细描述:

HTTP 响应头Content-Security-Policy允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。 Content-Security-Policy响应头的缺失使得目标URL更易遭受跨站脚本攻击。

解决办法:

将您的服务器配置为发送“Content-Security-Policy”头。

# 要使用 CSP,只需要服务端输出类似这样的响应头就行了:

# Content-Security-Policy: default-src \'self\'

# default-src 是 CSP 指令,多个指令之间用英文分号分割;\'self\' 是指令值,多个指令值用英文空格分割。

 

5、 点击劫持:X-Frame-Options未配置

详细描述:

点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。 HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持.

解决办法:

修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

# add_header X-Frame-Options:ALLOW-FROM https://tongji.baidu.com;
# add_header X-Frame-Options:DENY;

 

6、 检测到目标URL启用了不安全的HTTP方法

详细描述:

检测到目标Web服务器配置成允许下列其中一个(或多个)HTTP 方法:DELETE, SEARCH,COPY,MOVE, PROPFIND, PROPPATCH, MKCOL ,LOCK ,UNLOCK 。 这些方法表示可能在服务器上使用了 WebDAV。由于dav方法允许客户端操纵服务器上的文件,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。

解决办法:

如果服务器不需要支持 WebDAV,请务必禁用它。 或者为允许webdav的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。

# dav_methods  off;

 

 

 

转载自:https://www.cnblogs.com/xidxi/p/14781383.html