20189221 2018-2019-2 《密碼與安全新技術專題》第一週做業

20189221 2018-2019-2 《密碼與安全新技術專題》第一週做業

課程:《密碼與安全新技術專題》程序員

班級: 201892
姓名: 郭開世
學號:20189221
上課教師:謝四江
上課日期:2019年2月26日
必修/選修: 選修web

1.本次講座的學習總結

講座主題:web安全與內容安全

學科背景:
隨着信息技術的不斷髮展(通訊→計算機→網絡→網絡化社會),網絡安全技術一直在不斷進步(斯巴達加密榜→密碼技術、通訊保密、內容篡改)。算法

典型攻擊方式:sql

  • 高等持續性攻擊(APT):2010年6月震網(stuxnet)攻擊⇒物理隔離是不安全的
  • 第三方惡意代碼注入:2015年9月Xcode Ghost⇒底層開發軟件在編譯過程攻擊
  • 上帝攻擊模式(GPT):基於全球全網大數據能力對用戶進行用戶畫像

威脅方-防禦方的非對稱性shell

  • 攻防技術非對稱
  • 攻防成本非對稱
  • 攻防主體非對稱

常見的Web漏洞:數據庫

  • SQL注入:輸入驗證不足或Web應用程序中SQL語句構造不當
  • 跨站腳本攻擊漏洞
  • cookie欺騙
  • CSPF(跨站請求僞造)
  • web信息泄露
  • 權限問題
  • 邏輯漏洞
  • 第三方程序漏洞
  • web服務器解析漏洞
  • 弱口令
  • SSRF

2.學習中遇到的問題及解決

  • 問題1:對於SQL語言記憶模糊,對理解SQL注入攻擊形成阻礙
  • 問題1解決方案:查詢本科時的學習課件,從新安裝SQL server熟悉SQL語言。

3.本次講座的學習感悟、思考等)

張健毅老師講課節奏很好,聲音頗有磁性。以前本科時學習過一些web和數據庫相關的課程,當時的課程主要是功能上的實現,對於安全方面確實沒有進行很好的設計與考慮。既然已經進行安全、密碼方面的研究生學習,在從此的課程設計、項目實現等具體工做是要時刻保持安全的思惟。這學期我還選修了《網絡攻防實踐》,相信這次課程對於這門課也有很大的啓發。編程

4.SQL Injection最新研究現狀

因論文庫的限制,我找的論文都是IEEE中的,具體信息見參考文獻。安全

SQL注入攻擊對數據庫驅動的Web應用程序構成嚴重的安全威脅。這種攻擊使攻擊者能夠輕鬆訪問應用程序的底層數據庫以及這些數據庫包含的潛在敏感信息。黑客經過專門設計的輸入,能夠訪問數據庫的內容,不然沒法這樣作。這一般經過更改Web應用程序中使用的SQL語句來完成。服務器

常見的SQL注入攻擊:

重言式(tautology)

攻擊者的意圖是繞過身份驗證並從Web應用程序數據庫中提取信息。在這種類型的攻擊中,黑客將代碼注入一個或多個條件語句,以便這些語句的執行結果老是評估爲真[6]。若是攻擊成功,代碼將顯示全部返回的記錄或執行某些操做,前提是至少返回一條記錄。通常返回true的經常使用語句是1 = 1.這意味着經過在原始查詢語句中附加「或1 = 1」,查詢結果將始終爲true。cookie

非法/邏輯錯誤查詢(illegal/logically incorrect queries)

攻擊目的是識別可注射參數,執行數據庫指紋打印以及提取機密數據。此類攻擊基於編寫生成錯誤消息的查詢語句。拒絕查詢時,將從數據庫返回一條錯誤消息,其中包含有助於攻擊者的有用調試信息。

聯合查詢(union query)

繞過身份驗證過程並經過將union運算符插入到普通查詢中來提取數據。

堆疊查詢(Stacked Queries)

此攻擊插入惡意SQL查詢,這將致使在與數據庫的一個鏈接中執行一系列SQL語句。若是運算符能夠處理許多SQL查詢; 在每一個查詢結束後添加。
例:SELECT * FROM users WHERE user name = admin AND password = 3333; DROP TABLE用戶; - ;.

條件陳述

此攻擊經過使用IF語句完成,有三種類型:基於時間,基於錯誤和基於內容。
例:http://www.vulnerable.com/goods。a?id = 34; if +(system user = sa)+ WAITFOR + DELA Y +0:0:10。

存儲過程(stored procedures)

攻擊者試圖用惡意輸入執行數據庫中存在的存儲過程

相關研究


常見的SQL檢測與預防:

靜態分析(Static Analysis)

靜態分析是在到達執行階段以前在系統源代碼中找到弱點和惡意代碼,主要是語言特定的。
靜態分析缺點包括:

  • 開發人員須要手動更改易受攻擊的部分
  • 沒法識別存儲過程攻擊
  • 其結構直到運行時才被指定

動態分析(Dynamic Analysis)

動態方法技術可用於分析由Web應用程序使用用戶輸入數據生成的動態或運行時SQL查詢。
動態技術下在運行時生成的SQL注入檢測方法,在將查詢發佈到數據庫服務器以前執行查詢,查詢的異常性質致使它甚至不會傳遞到數據庫執行。
動態分析的主要缺點是在運行時生成模型所涉及的開銷。

組合方法(Combined Approach)

組合方法利用靜態分析和動態分析方法的優點來檢測和防止SQL注入。在靜態階段,識別熱點,以後建立模型,指示能夠在該熱點處進行的全部有效查詢。在運行時,將檢查運行時查詢以查看它們是否與其模型匹配。若是不是,則不會將查詢發送到數據庫以供執行。

sql注入披露和威懾的仿真

Padma N Joshi ; N. Ravishankar ; M. B. Raju ; N.CH. Ravi等提議開發一個用於身份驗證訪問的安全系統並應用SQL注入攻擊來檢查其安全性。換句話說,設想的系統不從文本框中得到任何狂野的字符。
算法設計以下:

  • 用n生成異常模式獲取用戶生成的查詢SPL []模式列表
  • 設置I等於1並在I中增長1,直到它在此循環期間不等於n次重複和後續步驟
  • 若是二者相同,則比較全部值查詢長度和模式值,而後計算異常值
  • 若是任何異常分數值異常大於或等於閾值,則查詢將被拒絕
  • 不然返回查詢6:中止

經過刪除SQL查詢的參數值來檢測SQL注入攻擊

Rajashree A. Katole ; Swati S. Sherekar ; Vilas M. Thakare等介紹了保護Web應用程序免受SQL注入攻擊的SQL注入檢測機制。他們提出了使Web應用程序可以在丟失任何數據以前檢測代碼注入(SQL注入)攻擊的新方法。該經過使用組合的靜態和動態分析來檢測注射攻擊。參數值在動態即運行時從SQL查詢中刪除,並與固定或靜態分析的SQL查詢進行比較,即提早進行比較。

一種二階SQL注入檢測方法

陳平提出的方法基於ISR(指令集隨機化)檢測二階SQL注入攻擊。該方法隨機化Web應用程序中包含的可信SQL關鍵字,以動態構建新的SQL指令集,並在DBMS以前添加代理服務器,代理檢測收到的SQL指令是否包含標準SQL關鍵字以查找攻擊行爲。

該方法採用在Web服務器和數據庫服務器之間構建代理服務器。代理服務器有兩個主要功能,一個是檢測SQL注入攻擊,另外一個是將無害指令去標準化爲標準SQL語句並將其轉發給DBMS。

使用SHA-1算法和語法感知防止SQL注入的新方法

Qais Temeiza ; Mohammad Temeiza ; Jamil Itmazi等提出了一種基於密碼學和語法感知來防止SQL注入的新方法。
使用兩種方法來防止SQL注入攻擊:

  • 嵌入式SQL語句的解決方案

使用了快速安全的SHA-l algorthim。這種方法是經過刪除查詢屬性值,而後散列查詢並將哈希值與先前生成和散列的普通查詢哈希值進行比較。實如今使用散列機制的嵌入式查詢中防止SQL注入。若是兩個哈希值相同則執行SQL查詢,若是不是SQL查詢將被拒絕。

  • 存儲過程的解決方案

使用語法感知(在易受攻擊的存儲過程當中阻止SQL注入)來經過搜索特定的SQL注入簽名,shell命令以及可用於執行攻擊的任何Unicode字符來阻止存儲過程當中的SQL注入攻擊。

檢測和預防SQL注入攻擊的混合方法

Ahmad Ghafarian等在An emulation of sql injection disclosure and deterrence中提出了一種新的混合方法來檢測和防止SQLIA,是靜態和動態方法的結合。該方法包括三個階段,即數據庫設計,實現和公共網關接口(CGI)。

  • 數據庫設計階段:擴充全部數據庫表,以包含且僅包含美圓符號等符號的記錄。
  • (CGI)階段:提出了一種算法其任務是動態地處理和監視全部傳入查詢的執行。任何用戶查詢在被授予執行權以前都應該經過該算法,不然它將被拒絕。
  • 第三階段(數據庫)使用該算法在收到的SQL查詢和先前預期的SQL查詢之間進行字符串匹配過程。此比較的結果將自動與預期的有效查詢匹配。此比較過程的輸出將肯定是否存在任何類型的SQLIA,若是存在,則查詢將被拒絕。

優勢:

  • 因爲在查詢時執行算法,所以程序員不須要進行防護性編程。這節省了大量的編程時間。
  • 該算法只編寫一次,並將針對每一個Web應用程序查詢執行。因此,沒有開銷。
  • 它能夠處理任何類型的查詢正常或可能的SQLIA
  • 該算法獨立於平臺,所以能夠在不一樣的平臺上使用,例如。NET,PHP等
  • 沒有數據輸入限制。

缺點:

  • 此方法僅防止重言式 SQL注入。
  • 因爲Table擴充,它有一些開銷。
  • 因爲在數據庫表上執行額外記錄,它有開銷。

參考資料

相關文章
相關標籤/搜索