-
- 1. Apache HTTP Server "httpOnly" Cookie信息泄露漏洞(CVE-2012-0053))
- 2. 检测到目标web应用表单存在口令猜测攻击
- 3. X-Content-Type-Options响应头缺失
- 4. X-XSS-Protection响应头缺失
- 5. Content-Security-Policy响应头缺失
- 6. Referrer-Policy响应头缺失
- 7. X-Permitted-Cross-Domain-Policies响应头缺失
- 8. X-Download-Options响应头缺失
- 9. X-Frame-Options未配置
- 10. Strict-Transport-Security响应头缺失
- 11. 会话cookie中缺少HttpOnly属性
- 12. 服务器版本信息泄露
- 13. 备份文件或敏感目录泄露
等保检测风险处理方案
- 该方案仅针对 PHP 相关业务,其他服务端语言未实践,可作为参考。
- 关于请求头漏洞风险相关的配置,都写在 index.php 入口文件中(由于写在 nginx 配置文件中无作用),后续有新增漏洞风险会持续补充。
- 请求头相关配置如下(目录1-11)
header("X-Content-Type-Options: nosniff"); header("X-XSS-Protection: 1"); header("Content-Security-Policy: script-src '*', unsafe-inline, unsafe-eval"); header("Referrer-Policy: origin"); header("X-Permitted-Cross-Domain-Policies: none"); header("X-Download-Options: noopen"); header("X-Frame-Options: SAMEORIGIN"); header("Strict-Transport-Security: max-age=15552000"); header("Set-Cookie: Path=/, HttpOnly, Secure"); apache站点配置文件
Header always append X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options "nosniff" Header set X-XSS-Protection "1; mode=block" Header set Content-Security-Policy "script-src 'self', unsafe-inline, unsafe-eval" Header set Referrer-Policy "no-referrer" Header set X-Download-Options "noopen" Header set Strict-Transport-Security "max-age=15552000" Header set Set-Cookie "Path=/, HttpOnly, Secure" Header set X-Permitted-Cross-Domain-Policies "none" 禁用option方法 .htaccess文件中 RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) RewriteRule .* - [F]
1. Apache HTTP Server “httpOnly” Cookie信息泄露漏洞(CVE-2012-0053))
- 风险等级:中危
- 漏洞建议:目前厂商已发布升级补丁以修复漏洞,详情请关注厂商主页:http://svn.apache.org/viewvc?view=revision&revision=1235454
- 处理方案:升级apache/卸载apache
- 说 明:升级服务器上安装的apache版本到最新版本后,依然有此问题,怀疑检测机制有问题,直接卸载了apache(未用到该服务),对方依然表示能检测到该问题,无解,遂告知他们已卸载,协商后,检测机构通过了该风险检测。
2. 检测到目标web应用表单存在口令猜测攻击
- 风险等级:低危
- 漏洞建议:在登录界面添加验证码防止口令猜测,或添加ip锁定
- 处理方案:登录页面新增图形验证码或其他验证码验证方式(目的是增加密码猜测复杂度)
- 说 明:无
3. X-Content-Type-Options响应头缺失
- 风险等级:低危
- 漏洞建议:将您的服务器配置为在所有传出请求上发送值为“nosniff”的“X-Content-Type-Options”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\r\n
- 处理方案:header(“X-Content-Type-Options: nosniff”);
- 说 明:无
4. X-XSS-Protection响应头缺失
- 风险等级:低危
- 漏洞建议:将您的服务器配置为在所有传出请求上发送值为“1”(例如已启用)的“X-XSS-Protection”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\r\n
- 处理方案:header(“X-XSS-Protection: 1”);
- 说 明:无
5. Content-Security-Policy响应头缺失
- 风险等级:低危
- 漏洞建议:将您的服务器配置为发送“Content-Security-Policy”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\r\n
- 处理方案:header(“Content-Security-Policy: script-src ‘*’, unsafe-inline, unsafe-eval”);
- 说 明:无
6. Referrer-Policy响应头缺失
- 风险等级:低危
- 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 Referrer-Policy 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“Referrer-Policy”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“Referrer-Policy: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “Referrer-Policy”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“Referrer-Policy”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“Referrer-Policy”] = “value”; 2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 Referrer-Policy 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header Referrer-Policy value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add Referrer-Policy “value”。\r\n
- 处理方案:header(“Referrer-Policy: origin”);
- 说明:无
7. X-Permitted-Cross-Domain-Policies响应头缺失
- 风险等级:低危
- 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“X-Permitted-Cross-Domain-Policies”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“X-Permitted-Cross-Domain-Policies: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “X-Permitted-Cross-Domain-Policies”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“X-Permitted-Cross-Domain-Policies”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“X-Permitted-Cross-Domain-Policies”] = “value”; 2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Permitted-Cross-Domain-Policies value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Permitted-Cross-Domain-Policies “value”。\r\n
- 处理方案:header(“X-Permitted-Cross-Domain-Policies: none”);
- 说 明:无
8. X-Download-Options响应头缺失
- 风险等级:低危
- 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 X-Download-Options 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(““X-Download-Options””, ““value””) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(““X-Download-Options: value””) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader ““X-Download-Options””, ““value”” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[““X-Download-Options””] = ““value”” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[““X-Download-Options””] = ““value””;\n2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Download-Options 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Download-Options value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Download-Options ““value””。
- 处理方案:header(“X-Download-Options: noopen”);
- 说 明:无
9. X-Frame-Options未配置
- 风险等级:低危
- 漏洞建议:" 修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:\n1、DENY:不能被嵌入到任何iframe或者frame中。\n2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。\n3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。\n例如:\napache可配置http.conf如下:\n\n Header always append X-Frame-Options ““DENY””\n\n\nIIS可配置相关网站的Web.config如下:\n
\n …\n\n \n \n "\r\n\n \n \n\n …\n - 处理方案:header(“X-Frame-Options: SAMEORIGIN”);
- 说 明:无
10. Strict-Transport-Security响应头缺失
- 风险等级:低危
- 漏洞建议:“1)修改服务端程序,给 HTTP 响应头加上 Strict-Transport-Security 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(”“Strict-Transport-Security”“, ““value””) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(”“Strict-Transport-Security: value”“) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader ““Strict-Transport-Security””, ““value”” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[”“Strict-Transport-Security”“] = ““value”” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[”“Strict-Transport-Security”“] = ““value””;\n2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 Strict-Transport-Security 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header Strict-Transport-Security value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add Strict-Transport-Security ““value””。”\r\n
- 处理方案:header(“Strict-Transport-Security: max-age=15552000”);
- 说 明:无
11. 会话cookie中缺少HttpOnly属性
- 风险等级:低危
- 漏洞建议:向所有会话cookie中添加“HttpOnly”属性。 Java示例: HttpServletResponse response2 = (HttpServletResponse)response; response2.setHeader( “Set-Cookie”, “name=value; HttpOnly”); C#示例: HttpCookie myCookie = new HttpCookie(“myCookie”); myCookie.HttpOnly = true; Response.AppendCookie(myCookie); VB.NET示例: Dim myCookie As HttpCookie = new HttpCookie(“myCookie”) myCookie.HttpOnly = True Response.AppendCookie(myCookie)\r\n
- 处理方案:header(“Set-Cookie: Path=/, HttpOnly, Secure”);
- 说 明:无
12. 服务器版本信息泄露
- 风险等级:低危
- 漏洞建议:1.隐藏响应的server版本信息\n2.隐藏响应的X-Powered-By版本信息
- 处理方案:
- 服务端语言为PHP时,隐藏 PHP 版本
编辑PHP配置文件php.ini,找到 expose_php On 改成 expose_php Off,保存并退出,重启php-fpm。 - Web服务器为NGINX时,隐藏NGINX版本
编辑NGINX配置文件nginx.conf,加入以下一行配置server_tokens off;
- Web服务器为apache时,隐藏apache版本
编辑apache配置文件httpd.conf或apache2.conf,加入以下两行配置:ServerTokens Prod ServerSignature Off
- 服务端语言为PHP时,隐藏 PHP 版本
- 说 明:无
13. 备份文件或敏感目录泄露
- 风险等级:低危
- 漏洞建议:1、禁止在网站目录下存放网站备份文件或包含敏感信息的文件。\n2、如需存放该类文件,对文件名、目录进行鉴权处理。
- 处理方案:针对域名对应的nginx配置文件,在server{}内加入如下内容(根据检测出的文件名称进行配置,不一定是composer.json和LICENSE):
#composer.json文件 location ^~ /composer.json {return 404; } #LICENSE文件 location ^~ /vendor/composer/LICENSE {return 404; }
上一篇:为什么不同设备访问您的网站看到的会不同?
已经是最后一篇:下一篇