這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

隨著互聯網技術的飛速發展,業務的開展方式更加靈活,應用系統更加複雜,也因此面臨著更多的安全性挑戰。安全測試是在應用系統投產發佈之前,驗證應用系統的安全性並識別潛在安全缺陷的過程,目的是防範安全風險,滿足保密性、完整性、可用性等要求。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  日常測試過程中經常遇到開發同事來詢問一些常見的配置型漏洞應該如何去修復,為了幫助開發同事快速識別並解決問題,通過總結項目的安全測試工作經驗,筆者彙總、分析了應用系統的一些常見配置型漏洞並給出相應的修復建議,在這裡給大家進行簡單的分享。

  一、Cookie缺少HttpOnly屬性

  漏洞描述

  Cookie中的HttpOnly屬性值規定了Cookie是否可以通過客戶端腳本進行訪問,能起到保護Cookie安全的作用,如果在Cookie中沒有將HttpOnly屬性設置為true,那麼攻擊者就可以通過程序(JS腳本、Applet等)竊取用戶Cookie信息,增加攻擊者的跨站腳本攻擊威脅。竊取的Cookie中可能包含標識用戶的敏感信息,如ASP.NET會話標識等,攻擊者藉助竊取的Cookie達到偽裝用戶身份或獲取敏感信息的目的,進行跨站腳本攻擊等。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  向所有會話Cookie中添加"HttpOnly"屬性。

  1)Java語言示例:

  HttpServletResponse response2 = (HttpServletResponse)response;

  response2.setHeader( "Set-Cookie", "name=value; HttpOnly");

  2)C#語言示例:

  HttpCookie myCookie = new HttpCookie("myCookie");

  myCookie.HttpOnly = true;

  Response.AppendCookie(myCookie);

  3)VB.NET語言示例:

  Dim myCookie As HttpCookie = new HttpCookie("myCookie")

  myCookie.HttpOnly = True

  Response.AppendCookie(myCookie)

  二、加密會話(SSL)Cookie缺少secure屬性

  漏洞描述

  對於敏感業務,如登錄、轉賬、支付等,需要使用HTTPS來保證傳輸安全性,如果會話Cookie缺少secure屬性,Web應用程序通過SSL向服務器端發送不安全的Cookie,可能會導致發送到服務器的Cookie被非HTTPS頁面獲取,造成用戶Cookie信息的洩露。如果啟用了secure屬性,瀏覽器將僅在HTTPS請求中向服務端發送cookie內容。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  向所有敏感的Cookie添加"secure"屬性。

  1)服務器配置為HTTPS SSL方式;

2)Servlet 3.0環境下對web.xml文件進行如下配置:

    

     true

    

  3)ASP.NET中對Web.config進行如下配置:

  

php.ini中進行如下配置:

 session.cookie_secure = True

  或者

  void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure= false [, bool $HttpOnly= false ]]]] )

  或者

  bool setcookie ( string $name [, string $value? [, int $expire= 0 [, string $path [, string $domain [, bool $secure= false [, bool $HttpOnly= false ]]]]]] )

在weblogic中進行如下配置:

  

   true

   true

  

  三、缺少"Content-Security-Policy"頭

  漏洞描述

  因Web應用程序編程或配置不安全,導致HTTP響應缺少"Content-Security-Policy"頭,可能產生跨站腳本攻擊等隱患,可能會收集有關Web應用程序的敏感信息,如用戶名、密碼、卡號或敏感文件位置等。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  將服務器配置為使用安全策略的"Content-Security-Policy"頭。

在web.config 配置文件中添加如下HTTP響應頭:

 

    ?

      

  

      

    

  

使用meta標籤:

 

  四、缺少"X-Content-Type-Options"頭

  漏洞描述

  因Web應用程序編程或配置不安全,導致缺少"Content-Security-Policy"頭,可能產生偷渡式下載攻擊等隱患。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  將服務器配置為使用值為"nosniff"的"X-Content-Type-Options"頭。

在web.config 配置文件中添加如下響應頭:

  

使用meta標籤

  

  五、缺少"X-XSS-Protection"頭

  漏洞描述

  因Web應用程序編程或配置不安全,導致缺少"Content-Security-Policy"頭,可能產生跨站腳本攻擊等隱患。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  將服務器配置為使用值為"1"(已啟用)的"X-XSS-Protection"頭。

  1)在web.config 配置文件中添加如下響應頭:

 

使用meta標籤

 

  六、缺少"HTTP Strict-Transport-Security"頭

  漏洞描述

  因Web應用程序編程或配置不安全,導致缺少 HTTP Strict-Transport-Security 頭。為了用戶體驗,有些網站允許使用HTTPS和HTTP訪問,當用戶使用HTTP訪問時,網站會返回給用戶一個302重定向到HTTPS地址,後續訪問都使用HTTPS協議傳輸,但這個302重定向地址可能會被劫持篡改,被改成一個惡意的或者釣魚HTTPS站點,導致敏感信息如用戶名、密碼、卡號或敏感文件位置洩露等風險。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  通過向 web 應用程序響應添加"Strict-Transport-Security"響應頭來實施 HTTP 嚴格傳輸安全策略,或實施具有足夠長"max-age"的 HTTP Strict-Transport-Security 策略,強制客戶端(如瀏覽器)使用HTTPS與服務器創建連接。

  七、容易出現點擊劫持(Clickjacking)

  漏洞描述

  頁面未能設置適當的X-Frame-Options或Content-Security-Policy HTTP頭,則攻擊者控制的頁面可能將其加載到iframe中,導致點擊劫持攻擊,此類攻擊屬於一種視覺欺騙手段,主要實現方式有兩種:一是攻擊者將一個透明的iframe覆蓋在一個網頁上,誘使用戶在該頁面上進行操作,那麼用戶就在不知情的情況下點擊透明的iframe頁面;二是攻擊者使用一張圖片覆蓋在網頁,遮擋網頁原有位置的含義。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  應用程序應該返回名稱為X-Frame-Options、值DENY以完全防止成幀的響應頭,或者返回值SAMEORIGIN以允許僅通過與響應本身相同的來源上的頁進行成幀,或者通過ALLOW-FROM origin設置白名單來限制允許加載的頁面地址。

  1)修改中間件配置:

  a)IIS:

web.config 配置文件中添加如下響應頭:

 

  b)Apache:

  Header always append X-Frame-Options SAMEORIGIN

  c)Nginx:

  add_header X-Frame-Options SAMEORIGIN;

使用meta標籤

 

  八、啟用了不安全的HTTP方法

  漏洞描述

  Web服務器或應用服務器以不安全的方式進行配置,導致啟用了WebDAV和不安全的HTTP方法,不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等,可能會造成攻擊者在Web服務器上上傳、修改或刪除Web頁面、腳本和文件的隱患。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  禁用WebDAV。禁止不需要的HTTP方法(建議只使用GET和POST方法)。

  1)Apache:

使用Apache的重寫規則來禁用Options方法和Trace方法。在Apache配置文件httpd-conf中【vhosts-conf】添加以下代碼:

  #單獨禁用Trace方法:

  RewriteEngine On

  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

  RewriteRule .* - [F]

  單獨禁用Options方法:

  RewriteEngine On

  RewriteCond %{REQUEST_METHOD} ^(OPTIONS)

  RewriteRule .* - [F]

  同時禁用Trace方法和Options方法:

  RewriteEngine On

  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)

  RewriteRule .* - [F]

   DocumentRoot "D:\wwwroot"

   ServerName www.abc.com

   ServerAlias abc.com

  

   Options FollowSymLinks ExecCGI

   AllowOverride All

   Order allow,deny

   Allow from all

   Require all granted

   RewriteEngine on

   RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)

   RewriteRule .* - [F]

  

  2)Nginx:

在server段里加入下面代碼:

 if ($request_method !~* GET|POST) {

   return 403;

   }

  重啟Nginx,就可以屏蔽GET、POST之外的HTTP方法。

  3)Tomcat:

修改web.xml配置文件。

  

  

   /*

   PUT

   DELETE

   HEAD

   OPTIONS

   TRACE

  

  

  

  

  4)IIS:

  a)禁用WebDAV功能;

  b)在web.config的【configuration】下添加如下代碼:

  

  

  

  

  

  

  九、"X-Powered-By"字段洩露服務器信息

  漏洞描述

  因Web服務器、應用服務器配置不安全,導致響應報文的響應頭中"X-Powered-By"字段洩露服務器信息,攻擊者可以通過獲取服務器版本信息,收集相關漏洞,進行特定的攻擊。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

  隱藏響應頭中"X-Powered-By"字段。

  1)IIS:

修改web.config配置文件。

  

  

  

  

  

  

  

  

  

  

  

  2)Nginx:

需要加上proxy_hide_header。

  location / {

   proxy_hide_header X-Powered-By;

  }

  3)WAS:

  修改websphere相應配置,將


com.ibm.ws.webcontainer.disabledxPoweredBy配置更改為true。

  十、"Server"字段洩露服務器信息

  漏洞描述

  因Web服務器、應用服務器配置不安全,導致響應報文的響應頭中"Server"字段洩露服務器信息,攻擊者可以通過獲取服務器版本信息,收集相關漏洞,進行特定的攻擊。

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議

  修復建議

隱藏HTTP響應頭中"Server"字段,在web.config添加以下配置:

  

  

  以上就是筆者在實際項目測試過程中經常遇見的十類常見應用配置型漏洞描述及針對常見中間件的修復建議,希望能夠幫助開發同事快速理解各類漏洞並找到對應的修復方式!

這些bug你遇到過幾個?盤點10個常見安全測試漏洞及修復建議


分享到:


相關文章: