日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

注入攻擊(Injection Flaws)

 shawnsun007 2016-04-10
 
注入攻擊Injection Flaws)
From OWASP
http://www./index.php/Injection_Flaws
Contents
  • 1 簡介
  • 2 受影響的環(huán)境
  • 3 示例
  • 4 找到你系統的漏洞
  • 5 保護你的系統

簡介

注入攻擊是攻擊者通過Web應用傳播惡意的代碼到其他的系統上。這些攻擊包括系統調用(通過shell命令調用外部程序)和后臺數據庫調用(通過SQL注入)一些設計上有缺陷的Web應用中的Perl,python和其他語言寫的腳本(script)可能被惡意代碼注入和執(zhí)行。任何使用解釋執(zhí)行的Web應用都有被攻擊的危險。 Any time a web application uses an interpreter of any type there is a danger of an injection attack.
很多Web應用使用操作系統的特性和外部程序來完成他們的某些功能。發(fā)送郵件或許是最常用的外部程序,很多其他程序也一同被使用。當一個Web應用通過Http請求把外部請求的信息傳遞給應用后臺時,必須非常小心。否則攻擊這可以把某些特殊字符、惡意代碼或者命令改變器注入這些信息中,你的Web應用可能會把這些攻擊代碼傳遞給后臺執(zhí)行。
SQL注入是一種廣泛使用的危險度極高的注入攻擊方式。要使用這種攻擊方式,攻擊者必須找到Web應用傳遞給數據庫的參數。通過把惡意的SQL命令嵌入參數中,攻擊者可以讓Web應用把這些查詢發(fā)送到數據庫中。發(fā)現這些攻擊和系統漏洞并不難。但是攻擊產生的后果卻相當致命,攻擊者可以得到,破壞或者摧毀你所有數據庫的內容。
注入攻擊的系統漏洞可以很容易的被發(fā)現和攻擊,但是他們在系統中也是相當的隱蔽。攻擊的結果也會很嚴重,從小的錯誤到危及整個系統,甚至是系統被破壞。在任何情況下,外部調用的使用是非常廣泛的,所以Web應用的注入漏洞必須高度重視。
影響的系統
每個Web應用系統都允許外部命令,比如系統調用、shell調用和SQL請求。注入攻擊依賴于這些系統如何使用這些調用和系統的哪些部分使用這些調用。但是如果Web應用沒有很好的設計和編碼,所有的外部調用(external calls)都會受到攻擊。
案例
·         Examples: 一個惡意的參數修改可以使系統訪問其他用戶的文件(比如文件請求加上文件追溯符“../” characters as part of a filename request). 另外一些命令也可以附加到參數中使得腳本運行 (如., “; rm –r *”). SQL查詢可以通過在SQL語句中增加一些限制條件,比如”where”子句中增加“OR 1=1”)來獲得對數據請求的訪問的權限.
·         OWASP 的創(chuàng)建安全的Web應用和Web服務指南。第八章: 數據驗證 http://www./documentation/guide.html
·         如何創(chuàng)建HTTP驗證引擎(通過Stinger驗證J2EE) http://www./columns/jeffwilliams/jeffwilliams2
·         Have Your Cake and Eat it Too (.NET validation) http://www./columns/jpoteet/jpoteet2
·         SQL注入白皮書: http://www./papers/SQLInjectionWhitePaper.pdf
如何找到你系統的漏洞
最好的方法是搜索你所有的源代碼,找到使用外部資源的命令(比如system,exec,fork,Runtime.exec,SQL queries,或者在你系統里面使用解釋器interpreters的任何創(chuàng)建請求的的語法)注意很多語言通過多種方式來運行外部命令。開發(fā)者應檢查他們的代碼,找到所有的可以通過HTTP請求注入的漏洞。檢查過代碼之后,注意采用如下的步驟來保護你的應用。
保護你的系統
最簡單的防護措施是盡可能避免執(zhí)行外部解釋器。對于腳本命令和系統調用,有很多特點的類庫來執(zhí)行他們。使用這些類庫但不引入系統腳本解釋器,通過這種方式可以避免腳本命令導致的大量問題。
對于你仍然要是用的系統命令,比如對后臺數據庫的訪問,你必須仔細檢查確保其中不包含任何惡意內容。你也可以結構化你的請求代碼使得參數傳入的都是數據而不是可執(zhí)行的語句。使用存儲過程和Prepared statement會提供很好的保護,確保提供的輸入都作為數據. 這些方法會減少,但不是完全減少外部調用的風險。你仍然必須驗證這些輸入來確保它滿足安全的要求。
另外一個提供對命令注入很好的預防方法是通過系統權限配置,只允許Web應用使用某些特定的命令. 因此你不能以root用戶來啟動Web服務器或者以DBADMIN用戶來訪問數據庫。否則攻擊者可以利用這些權限很高的用戶攻擊系統。某些J2EE系統可以允許使用JAVA沙箱(java sand box),這種方式也可以防止某些系統命令的執(zhí)行。
如果一個外部命令必須執(zhí)行,任何插入到命令的用戶信息都必須強制檢查。要提供處理錯誤的機制,比如處理請求時的超時處理和阻塞處理。所有的輸出,返回代碼錯誤代碼都必須檢查來確保所有的處理過程沒有受到攻擊。這樣至少可以讓你檢查是否系統運行中是否出現了問題。否則攻擊永遠不能被檢測到。
“OWASP Filters project“ 是一個可重用的防止注入攻擊的組件。OWASP 發(fā)布的CodeSeeker是一個應用級別的防火墻。
如果您需要這樣的安全服務,可以找我聯系li.woohoo@gmail.com
 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多