【Security】常見信息安全漏洞的類型與規避方法


信息安全漏洞的類型

  按照產生缺陷的不同階段,漏洞可划分為設計類、實施類和運營類這三大類。

  • 設計類漏洞:在軟件設計階段,因軟件規格指標設計不當而產生的安全弱點;
  • 實施類漏洞:位於系統代碼中的技術安全缺陷;
  • 運營類漏洞:由於系統的配置或部署不當而導致的安全;

安全廠商收集的漏洞主要有:HTTP參數污染;后門;Cookie驗證錯誤;跨站請求;偽造ShellCode;SQL注入;任意文件下載;任意文件創建;任意文件刪除;任意文件讀取;其他類型;變量覆蓋;命令執行;嵌入惡意代碼;弱密碼;拒絕服務;數據庫發現;文件上傳;遠程文件包含;本地溢出;權限提升;信息泄漏;登錄繞過;目錄穿越;解析錯誤;越權訪問;跨站腳本;路徑泄漏;代碼執行;遠程密碼修改;遠程溢出;目錄遍歷;空字節注入;中間人攻擊;格式化字符;串緩沖區溢出;HTTP請求拆分;CRLF 注入;XML 注入;本地文件包含;證書預測;HTTP 響應拆分;SSI 注入;內存溢出;整數溢出;HTTP 響應偽造;HTTP 請求偽造;內容欺騙;XQuery 注入;緩存區過讀;暴力破解;LDAP 注入;安全模式繞過;備份文件發現;XPath 注入;URL 重定向;代碼泄漏;釋放后重用;DNS 劫持;錯誤的輸入驗證;通用跨站腳本;服務器端請求偽造;跨域漏洞;錯誤的證書驗證。。。。。

以下是當前比較常見的一些漏洞類型:

  1. SQL 注入漏洞

  SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL 注入,被廣泛用於非法獲取網站控制權, 是發生在應用程序的數據庫層上的安全漏洞。在設計程序,忽略了對輸入字符串中夾帶的SQL 指令的檢查,被數據庫誤認為是正常的SQL 指令而運行,從而使數據庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入后門程序等危害。
通常情況下,SQL 注入的位置包括:

  • 表單提交,主要是POST 請求,也包括GET 請求;
  • URL 參數提交,主要為GET 請求參數;
  • Cookie 參數提交;
  • HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;
  • 一些邊緣的輸入點,比如.mp3 文件的一些文件信息等。

  SQL 注入的危害不僅體現在數據庫層面上, 還有可能危及承載數據庫的操作系統;如果SQL 注入被用來掛馬,還可能用來傳播惡意軟件等,這些危害包括但不局限於:

  • 數據庫信息泄漏:數據庫中存放的用戶的隱私信息的泄露。作為數據的存儲中心,數據庫里往往保存着各類的隱私信息, SQL 注入攻擊能導致這些隱私信息透明於攻擊者。
  • 網頁篡改:通過操作數據庫對特定網頁進行篡改。
  • 網站被掛馬,傳播惡意軟件:修改數據庫一些字段的值,嵌入網馬鏈接,進行掛馬攻擊。
  • 數據庫被惡意操作:數據庫服務器被攻擊,數據庫的系統管理員帳戶被篡改。
  • 服務器被遠程控制,被安裝后門。經由數據庫服務器提供的操作系統支持,讓黑客得以修改或控制操作系統。
  • 破壞硬盤數據,癱瘓全系統。

解決SQL注入問題的關鍵是對所有可能來自用戶輸入的數據進行嚴格的檢查、對數據庫配置使用最小權限原則。通常使用的方案有:
(1)所有的查詢語句都使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL 語句中。當前幾乎所有的數據庫系統都提供了參數化SQL 語句執行接口,使用此接口可以非常有效的防止SQL注入攻擊。
(2)對進入數據庫的特殊字符( '"<>&*; 等)進行轉義處理,或編碼轉換。
(3)確認每種數據的類型,比如數字型的數據就必須是數字,數據庫中的存儲字段必須對應為int 型。
(4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL 注入語句無法正確執行。
(5)網站每個數據層的編碼統一,建議全部使用UTF-8 編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
(6)嚴格限制網站用戶的數據庫的操作權限,給此用戶提供僅僅能夠滿足其工作的權限,從而最大限度的減少注入攻擊對數據庫的危害。
(7)避免網站顯示SQL 錯誤信息,比如類型錯誤、字段不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(8)在網站發布之前建議使用一些專業的SQL 注入檢測工具進行檢測,及時修補這些SQL 注入漏洞。

  1. 跨站腳本漏洞

  跨站腳本攻擊( Cross-site scripting ,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。XSS 攻擊使用到的技術主要為HTML 和Javascript ,也包括VBScript和ActionScript 等。XSS 攻擊對WEB 服務器雖無直接危害,但是它借助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS 類型包括:

  • 非持久型跨站: 即反射型跨站腳本漏洞, 是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如數據庫中)。上面章節所舉的例子就是這類情況。
  • 持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如數據庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript 代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。
  • DOM 跨站(DOM XSS ):是一種發生在客戶端DOM (DocumentObject Model 文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。

XSS 的危害包括:

  • 釣魚欺騙:最典型的就是利用目標網站的反射型跨站腳本漏洞將目標網站重定向到釣魚網站,或者注入釣魚JavaScript 以監控目標網站的表單輸入,甚至發起基於DHTML 更高級的釣魚攻擊方式。
  • 網站掛馬:跨站時利用IFrame 嵌入隱藏的惡意網站或者將被攻擊者定向到惡意網站上,或者彈出惡意網站窗口等方式都可以進行掛馬攻擊。
  • 身份盜用: Cookie 是用戶對於特定網站的身份驗證標志, XSS 可以盜取到用戶的Cookie ,從而利用該Cookie 盜取用戶對該網站的操作權限。如果一個網站管理員用戶Cookie 被竊取,將會對網站引發巨大的危害。
  • 盜取網站用戶信息:當能夠竊取到用戶Cookie 從而獲取到用戶身份使,攻擊者可以獲取到用戶對網站的操作權限,從而查看用戶隱私信息。
  • 垃圾信息發送:比如在SNS 社區中,利用XSS 漏洞借用被攻擊者的身份發送大量的垃圾信息給特定的目標群。
  • 劫持用戶Web 行為:一些高級的XSS 攻擊甚至可以劫持用戶的Web 行為,監視用戶的瀏覽歷史,發送與接收的數據等等。
  • XSS 蠕蟲:XSS 蠕蟲可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上數據、實施DDoS 攻擊等。

常用的防止XSS技術包括:
(1)與SQL 注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script 、iframe 等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入接口,也包括HTTP 請求中的Cookie 中的變量,HTTP 請求頭部中的變量等。
(2)不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。
(3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
(4)對輸出的數據也要檢查, 數據庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(5)在發布應用程序之前測試所有已知的威脅。

  1. 弱口令漏洞

  弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。

建議設置密碼時盡量遵循以下原則:
(1)不使用空口令或系統缺省的口令,這些口令眾所周之,為典型的弱口令。
(2)口令長度不小於8 個字符。
(3)口令不應該為連續的某個字符(例如: AAAAAAAA )或重復某些字符的組合(例如: tzf.tzf. )。
(4)口令應該為以下四類字符的組合,大寫字母(A-Z) 、小寫字母(a-z) 、數字(0-9) 和特殊字符。每類字符至少包含一個。如果某類字符只包含一個,那么該字符不應為首字符或尾字符。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail 地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身后很容易看到你的輸入。
(8)至少90 天內更換一次口令,防止未被發現的入侵者繼續使用該口令。

  1. HTTP 報頭追蹤漏洞

  HTTP/1.1 (RFC2616 )規范定義了HTTP TRACE 方法,主要是用於客戶端通過向Web 服務器提交TRACE 請求來進行測試或獲得診斷信息。當Web 服務器啟用TRACE 時,提交的請求頭會在服務器響應的內容(Body )中完整的返回,其中HTTP 頭很可能包括Session Token 、Cookies 或其它認證信息。攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE 請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest ),並可以通過DOM 接口來訪問,因此很容易被攻擊者利用。

防御HTTP 報頭追蹤漏洞的方法通常禁用HTTP TRACE方法。

  1. Struts2 遠程命令執行漏洞

  Apache Struts 是一款建立Java web 應用程序的開放源代碼架構。Apache Struts 存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java 代碼。網站存在遠程代碼執行漏洞的大部分原因是由於網站采用了ApacheStruts Xwork 作為網站應用框架,由於該軟件存在遠程代碼執高危漏洞,導致網站面臨安全風險。CNVD 處置過諸多此類漏洞,例如:“ GPS 車載衛星定位系統”網站存在遠程命令執行漏洞(CNVD-2012-13934) ;Aspcms 留言本遠程代碼執行漏洞( CNVD-2012-11590 )等。

修復此類漏洞,只需到Apache 官網升級Apache Struts 到最新版本:http://struts.apache.org

  1. 框架釣魚漏洞(框架注入漏洞)

  框架注入攻擊是針對Internet Explorer 5 、Internet Explorer 6 、與Internet Explorer 7 攻擊的一種。這種攻擊導致Internet Explorer 不檢查結果框架的目的網站,因而允許任意代碼像Javascript 或者VBScript 跨框架存取。這種攻擊也發生在代碼透過多框架注入,肇因於腳本並不確認來自多框架的輸入。這種其他形式的框架注入會影響所有的不確認不受信任輸入的各廠商瀏覽器和腳本。如果應用程序不要求不同的框架互相通信,就可以通過完全刪除框架名稱、使用匿名框架防止框架注入。但是,因為應用程序通常都要求框架之間相互通信,因此這種方法並不可行。因此,通常使用命名框架,但在每個會話中使用不同的框架,並且使用無法預測的名稱。一種可行的方法是在每個基本的框架名稱后附加用戶的會話令牌,如main_display 。

  1. 文件上傳漏洞

  文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變量過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件后綴以及文件類型,攻擊者可通過Web 訪問的目錄上傳任意文件,包括網站后門文件( webshell ),進而遠程控制網站服務器。

解決該類漏洞的方法主要是在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行權限,從而防范webshell 攻擊。

  1. 應用程序測試腳本泄露

  由於測試腳本對提交的參數數據缺少充分過濾,遠程攻擊者可以利用洞以WEB 進程權限在系統上查看任意文件內容。

防御此類漏洞通常需嚴格過濾提交的數據,有效檢測攻擊。

  1. 私有IP 地址泄露漏洞

  IP 地址是網絡用戶的重要標示,是攻擊者進行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網絡情況采取不同的方法,如:在局域網內使用Ping 指令, Ping 對方在網絡中的名稱而獲得IP;在Internet 上使用IP 版的QQ直接顯示。最有效的辦法是截獲並分析對方的網絡數據包。攻擊者可以找到並直接通過軟件解析截獲后的數據包的IP 包頭信息,再根據這些信息了解具體的IP。

解決這類漏洞通常我們使用VPN或者代理等技術來隱藏真實IP地址。

  1. 未加密登錄請求

  由於Web 配置不安全, 登陸請求把諸如用戶名和密碼等敏感字段未加密進行傳輸, 攻擊者可以竊聽網絡以劫獲這些敏感信息。

建議進行例如SSH 等的加密后再傳輸。

  1. 敏感信息泄露漏洞

  SQL 注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。

針對這類漏洞需根據具體情況,制定相應的策略,主要目的就是防止敏感信息泄露。

  如果對WEB漏洞感興趣的話,可以針對OWASP TOP10詳細關注一下,也可以訂閱官方的信息。這里送上OWASP中文項目的傳送門:OWASP-CHINA
騰訊微博:http://t.qq.com/OWASP_China 新浪微博: http://weibo.com/owaspchina
更多漏洞分類信息可以關注國家信息安全漏洞庫


免責聲明!

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



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