Web應用漏洞-NGINX各類請求頭缺失對應配置


前言

  隨着越來越多的網絡訪問通過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.nginx.cn/doc/index.html
   https://www.cnblogs.com/you-men/p/13387316.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM