天天看點

附件四常見漏洞危害及定義(先知計劃)

一、Web服務端安全

1.SQL注入攻擊

名詞解釋:

SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用于非法擷取網站控制權,是發生在應用程式的資料庫層上的安全漏洞。由于在設計程式時,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運作,進而使資料庫受到攻擊,可能導緻資料被竊取、更改、删除,甚至執行系統指令等,以及進一步導緻網站被嵌入惡意代碼、被植入後門程式等危害。

常見發生位置:

1) URL參數送出,主要為GET請求參數;

2) 表單送出,主要是POST請求,也包括GET請求;

3) Cookie參數送出;

4) HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;

5) 一些邊緣的輸入點,比如.mp3、圖檔檔案的一些檔案資訊等。

防禦措施:

1) 使用預編譯語句。一般來說,防禦SQL注入的最佳方式,就是使用預編譯語句,綁定變量,但對現有代碼的改動量較大;

2) 使用存儲過程。使用安全的存儲過程可在一定程度上對抗SQL注入,但要注意此種方法并不是100%安全;

3) 嚴格檢查使用者資料。對使用者傳入的資料類型及内容進行嚴格的檢查。對資料類型檢查,如利用ID查詢時判斷是否為整型,輸入郵箱時判斷郵箱格式,輸入時間、日期等必須嚴格按照時間、時期格式等;對資料内容進行檢查,如嚴格檢測使用者送出資料中是否包含敏感字元或字元串,是否比對某種注入規則,嚴格轉義特殊字元等。注意此種方法雖然便于實施,但容易産生誤報和漏報,且容易被繞過;

4) 其他。使用安全的編碼函數、統一各資料層編碼格式(如統一使用UTF-8等)、嚴格限制資料庫使用者權限、定期進行代碼黑盒白盒掃描、避免将錯誤資訊顯示到頁面等。

2.檔案上傳

檔案上傳漏洞是指由于程式代碼未對使用者送出的檔案進行嚴格的分析和檢查,導緻攻擊者可以上傳可執行的代碼檔案,進而擷取Web應用的控制權限(Getshell)。

1) 所有使用到上傳功能的位置;

2) 使用者可自定義的頭像、背景圖檔等;

3) 富文本編輯器中的檔案上傳功能。

1) 上傳目錄設定為不可執行;

2) 嚴格判斷檔案類型,使用白名單而不是黑名單(注意大小寫問題)。需要注意的是一些與Web Server相關的漏洞所造成的問題,如Apache、IIS、Nginx等的檔案解析漏洞;

3) 使用随機數改寫上傳後的檔案名和檔案路徑;

4) 單獨設定檔案伺服器及域名。

3.權限漏洞

通路控制是指使用者對系統所有通路的權限控制,通常包括水準權限和垂直權限。通路控制問題是所有業務系統都可能産生的邏輯類漏洞,很難通過日常的安全工具掃描或防護,通常會造成大量使用者資料洩露事件。

水準越權:同一權限(角色)級别的使用者之間所産生的問題,如A使用者可以未授權通路B使用者的資料等;

垂直越權:不同權限(角色)級别的使用者之間所産生的問題,如普通使用者可未授權進行管理操作,未登入使用者可以通路需授權應用和

了解産品更多知識

等等。

1) 所有涉及到與使用者相關資料的位置,如使用者資料、位址、訂單等;

2) 所有涉及到登入及權限控制的位置,如背景登入、目前使用者權限校驗等。

1) 對于所有涉及到使用者資料的操作,嚴格判斷目前使用者的身份;

2) 對于所有需要權限控制的位置,嚴格校驗使用者權限級别。

4.暴力破解

暴力破解是指攻擊者通過周遊或字典的方式,向目标發起大量請求,通過判斷傳回資料包的特征來找出正确的驗證資訊,進而繞過驗證機制。随着網際網路衆多網站的資料庫被洩露,攻擊者選擇的樣本可以更具針對性,暴力破解的成功率也在不斷上升。

1) 使用者登入處的賬号密碼暴力破解;

2) 人機驗證機制容易繞過,如使用較易識别的驗證碼;

3) 找回密碼或二次身份驗證等可能用到的手機短信驗證碼;

1) 強制使用強密碼,并定期修改;

2) 限制密碼錯誤嘗試次數;

3) 使用強人機驗證機制;

4) 限制一定時間内的高頻通路次數。

5.拒絕服務攻擊

拒絕服務攻擊(DoS,Denial of Service)是利用合理的請求造成資源過載,進而導緻服務不可用的一種攻擊方式。分為針對Web應用層的攻擊、用戶端/APP的攻擊。

1) Web層常見于會大量消耗資源的位置,如查找功能等;

2) 用戶端/APP常見于異常輸入資料造成的程度崩潰。

針對Web層DoS:

1) 限制每個用戶端的請求頻率;

2) 使用驗證碼過濾自動攻擊者;

3) 做好應用代碼的性能優化,網絡架構優化等;

針對用戶端/APP拒絕服務攻擊:

1) 删除不必要的元件;

2) 對使用者輸入資料進行過濾和檢查。

6.敏感資訊洩露

敏感資訊洩露是指包括使用者資訊、企業員工資訊、内部資料等不應當被外部通路到的資料通過網站、接口、外部存儲等途徑被未授權洩露到外部的漏洞。資訊洩露漏洞會導緻大量使用者或企業資訊被惡意利用,進行詐騙、賬戶竊取等,給使用者和企業帶來嚴重的不良影響。并且資訊一旦資訊被洩露,影響會很難消除。

1) 擷取使用者、企業資訊等資料的

網站

或用戶端接口;

2) 企業可通路到的外部存儲,如網盤、郵箱等;

3) 其他一切可能洩露資料的途徑。

1) 對資料接口進行嚴格的權限檢查和通路限制;

2) 劃分企業安全邊界,限制内部資料外流,如禁止通路外部存儲應用等;

3) 提高員工

資料

安全意識。

7.業務邏輯漏洞

業務邏輯漏洞是指由于業務在設計時考慮不全所産生的流程或邏輯上的漏洞,如使用者找回密碼缺陷,攻擊者可重置任意使用者密碼;如短信炸彈漏洞,攻擊者可無限制利用接口發送短信,惡意消耗企業短信資費,騷擾使用者等。由于業務邏輯漏洞跟業務問題貼合緊密,正常的安全裝置無法有效檢測出,多數需要人工根據業務場景及特點進行分析檢測。

所有涉及到使用者互動的位置。

針對業務場景進行全面的檢測。

8.安全配置缺陷

包括:檔案周遊、源碼洩露、配置檔案洩露等。

檔案周遊:可以浏覽伺服器Web目錄下的檔案清單,可能會洩露重要檔案;

源碼洩露:可以查到的Web程式的源代碼;

配置檔案洩露:Web伺服器及程度代碼的配置檔案洩露等。

1) 檢查所有可能存在安全配置問題的點,在滿足業務需求的情況下,最大化安全配置。

二、Web用戶端安全

1.跨站腳本攻擊(XSS)

跨站腳本攻擊(XSS, Cross Site Script)通常指黑客通過“HTML注入”篡改了網頁,插入惡意腳本,進而在使用者浏覽網頁時,控制使用者浏覽器的一種攻擊。XSS漏洞可被用于使用者身份竊取(特别是管理者)、行為劫持、挂馬、蠕蟲、釣魚等。XSS是目前用戶端Web安全中最重要的漏洞。

XSS按效果的不同可以分為3種:

  1. 反射XSS:頁面僅把使用者輸入直接回顯在頁面或源碼中,需要誘使使用者點選才能成功;
  2. 存儲XSS:XSS攻擊代碼會被存儲在伺服器中,由于使用者可能會主動浏覽被攻擊頁面,此種方法危害較大;
  3. DOM XSS:通過修改頁面的DOM節點形成XSS,嚴格來講也可劃為反射型XSS。

1) 所有涉及到使用者可控的輸入輸出點,如個人資訊、文章、留言等。

1) 對重要的Cookie字段使用HTTPOnly參數;

2) 檢查所有使用者可控輸入。對所有的輸入點進行嚴格的檢查,過濾或攔截所有不符合目前語境的輸入。由于無法預期所有可能的輸出點語境,此種方法效果較差;

3) 檢查所有使用者輸入的輸出點。因為XSS最終攻擊是發生在輸出點,是以需要分析出使用者輸入資料的所有輸出點的環境,是輸入在HTML标簽中,還是HTML屬性、

4) 處理富文本。在文章、論壇等需要用到富文本的地方,需要特别注意富文本與XSS的區分,嚴格禁止所有的危險标簽及“事件”,原則上應當使用白名單過濾标簽、事件及屬性。

2.跨站點請求僞造(CSRF)

跨站點請求僞造(CSRF, Cross Site Request Forgery)。由于重要操作的所有參數都是可以被攻擊者猜到,攻擊者即可僞造請求,利用使用者身份完成攻擊操作,如釋出文章、購買商品、轉賬、修改資料甚至密碼等。

1) 所有由使用者(包括管理者)發起的操作處。

1) 使用驗證碼。驗證碼是對抗CSRF攻擊最簡潔有效的方法,但會影響使用者的使用體驗,并且不是所有的操作都可以添加驗證碼防護。是以,驗證碼隻能作為輔助驗證方法;

2) 添加足夠随機的csrf_token并每次更新,以防止參數被猜解到。使用CSRF_token是目前通用的防護方法;

3) 驗證HTTP Referer,拒絕不安全的來源。但伺服器并非在任何情況下都能擷取到Referer;

4)

建議配合使用上述方法