自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

“SQL注入”的前世今生和防御思路

安全
“SQL1注入”流行之前,緩沖區(qū)溢出2是最有效的黑客滲透方法,但經(jīng)歷了一些嚴重事件后(如:Code Red、Nimda、SQL Slammer),現(xiàn)在很多網(wǎng)絡管理員的安全意識增強了,一般都能及時安裝系統(tǒng)補丁,而且軟、硬件廠商都針對溢出問題做了很多解決方案,可以說:緩沖區(qū)溢出在黑客攻擊中的路越來越窄。

“SQL1注入”流行之前,緩沖區(qū)溢出2是最有效的黑客滲透方法,但經(jīng)歷了一些嚴重事件后(如:Code Red、Nimda、SQL Slammer),現(xiàn)在很多網(wǎng)絡管理員的安全意識增強了,一般都能及時安裝系統(tǒng)補丁,而且軟、硬件廠商都針對溢出問題做了很多解決方案,可以說:緩沖區(qū)溢出在黑客攻擊中的路越來越窄。這時候,針對CGI3程序的滲透被黑客發(fā)現(xiàn)是更有效的辦法,因為CGI程序作為Web應用程序的一部分,通常開發(fā)周期很短,相應的測試環(huán)節(jié)很少,普遍存在缺陷,那么這些CGI程序就有可能成為突破點。下面我們就將介紹CGI攻擊的一大分支:SQL注入。

1、SQL即結構查詢語言(Structured Query Language),一種ANSI (美國國家標準學會) 標準語言,用于訪問、操作關系數(shù)據(jù)庫系統(tǒng)(Relational database systems)。

2、緩沖區(qū)溢出是指當計算機向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時超過了緩沖區(qū)本身的容量溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上。理想的情況是:程序檢查數(shù)據(jù)長度并不允許輸入超過緩沖區(qū)長度的字符,但是絕大多數(shù)程序都會假設數(shù)據(jù)長度總是與所分配的儲存空間相匹配,這就為緩沖區(qū)溢出埋下隱患.操作系統(tǒng)所使用的緩沖區(qū)又被稱為"堆棧". 在各個操作進程之間,指令會被臨時儲存在"堆棧"當中,"堆棧"也會出現(xiàn)緩沖區(qū)溢出。

3、Common Gate Interface,簡稱CGI。在物理上是一段程序,運行在服務器上,提供同客戶端 Html頁面的接口。舉個例子:現(xiàn)在的個人主頁上大部分都有一個留言本。留言本的工作是這樣的:先由用戶在客戶端輸入一些信息,如名字之類的東西。接著用戶按一下“留言”(到目前為止工作都在客戶端),瀏覽器把這些信息傳送到服務器的CGI目錄下特定的CGI程序中,于是CGI程序在服務器上按照預定的方法進行處理。在本例中就是把用戶提交的信息存入指定的文件中。然后CGI程序給客戶端發(fā)送一個信息,表示請求的任務已經(jīng)結束。此時用戶在瀏覽器里將看到“留言結束”的字樣。整個過程結束。

“SQL注入”現(xiàn)在已經(jīng)成為互聯(lián)網(wǎng)上最通用的攻擊方式,通過Google、百度等搜索引擎,可以發(fā)現(xiàn)很多相關說明文章和攻擊軟件。這類攻擊的流行,一方面是由于Web應用的迅速普及和Web后臺數(shù)據(jù)價值上升,攻擊者受經(jīng)濟利益驅(qū)使;另一方面,攻擊軟件的泛濫降低了技術門檻,如SQL注入自動化攻擊工具實現(xiàn)了“目標鎖定、發(fā)現(xiàn)注入點及注入攻擊”全過程自動化,尤其是自動完成“發(fā)現(xiàn)注入點”這一關鍵步驟,極大地方便了攻擊者,提高了攻擊成功率。

1、“SQL注入”的定義

很多Web應用程序都使用數(shù)據(jù)庫來存儲信息。SQL命令就是前端Web和后端數(shù)據(jù)庫之間的接口,使得數(shù)據(jù)可以傳遞至Web應用程序。很多Web站點都會利用用戶輸入的參數(shù)動態(tài)地生成SQL查詢要求,攻擊者通過在URL、表單域,或者其他的輸入域中輸入自己的SQL命令,以此改變查詢屬性,騙過應用程序,從而可以對數(shù)據(jù)進行不受限的訪問。

SQL注入漏洞成因在于Web應用程序?qū)τ脩籼峤籆GI參數(shù)數(shù)據(jù)未做充分檢查過濾。用戶提交的數(shù)據(jù)可能會被用來構造訪問后臺數(shù)據(jù)庫的SQL指令,如果這些數(shù)據(jù)過濾不嚴格就有可能被插入惡意的SQL代碼,從而非授權操作后臺的數(shù)據(jù)庫,導致從敏感信息泄露、破壞數(shù)據(jù)庫內(nèi)容和結構、甚至利用數(shù)據(jù)庫本身的擴展功能控制服務器操作系統(tǒng)。利用SQL注入漏洞可以構成對Web服務器的直接攻擊,還可能利用服務器攻擊第三方的瀏覽網(wǎng)站的其他用戶。

2、“SQL注入”的歷史

我們簡單回顧一下SQL注入的相關歷史。

1998年12月, Rain Forest Puppy(RFP) 在Phrack 54上發(fā)表文章“NT Web Technology Vulnerabilities”,首次提到SQL注入;

1999年2月,Allaire發(fā)出警告 “Multiple SQL Statements in Dynamic Queries”;

1999年5月, RFP與Matthew Astley發(fā)出警告 “NT ODBC Remote Compromise”;

2000年2月,RFP發(fā)表文章 “How I hacked Packetstorm – A look at hacking  wwthreads via SQL”,披露如何利用SQL注入攻擊滲透Packetstorm網(wǎng)站;

2000年9月,David Litchfield在Blackhat會議上發(fā)表主題演講“Application Assessments on IIS” ;

2000年10月,Chip Andrews在SQLSecurity.com 上發(fā)表“SQL Injection FAQ ”,首次公開使用“SQL注入”這個術語 ;

2001年4月,David Litchfield 在Blackhat會議上發(fā)表主題演講 “Remote Web Application Disassembly with ODBC Error Messages”;

2002年1月,Chris Anley發(fā)表論文“Advanced SQL Injection in SQL Server”,首次深度探討該類攻擊。

2002年6月,Chris Anley發(fā)表論文 “(more) Advanced SQL” ,補充同年1月發(fā)表的論文缺少的細節(jié)。

2004年Blackhat會議上, 0x90.org發(fā)布了SQL注入工具SQeaL ( Absinthe的前身)。

3、“SQL注入”的演進

SQL注入攻擊技術出現(xiàn)已有10多年歷史,該種攻擊技術被廣為利用。2007年,出現(xiàn)了新型的攻擊方法。之前,SQL注入攻擊針對特定的Web應用程序,攻擊者事先已經(jīng)了解到了底層數(shù)據(jù)庫的架構以及應用程序注入點。而新型攻擊與以往有很大不同。它將可能攻擊任何存在SQL注入漏洞的動態(tài)ASP頁面。

根據(jù)網(wǎng)絡世界(Network World)的報導,2008年5月13日,在中國大陸、香港及臺灣地區(qū)有數(shù)萬個網(wǎng)站遭遇一輪 SQL注入攻擊,并引發(fā)大規(guī)模掛馬。同期,根據(jù)微軟的報導,在4個月時間內(nèi),發(fā)生了3次大規(guī)模攻擊,受害者包括某知名防病毒軟件廠商網(wǎng)站、歐洲某政府網(wǎng)站和某國際機構網(wǎng)站在內(nèi)的多家互聯(lián)網(wǎng)網(wǎng)站,感染頁面數(shù)最多超過10,000頁面/天。

具體攻擊方式,如下圖1所示。黑客首先使用Google搜索引擎定位網(wǎng)頁中包含的動態(tài)ASP腳本,測試腳本是否存在SQL注入漏洞并確定注入點,最終試圖遍歷目標網(wǎng)站后臺SQL Server數(shù)據(jù)庫的所有文本字段,插入指向惡意內(nèi)容(即黑客控制的服務器)的鏈接。攻擊的整個過程完全自動化,一旦攻擊得逞,這些自動插入的數(shù)據(jù)將嚴重破壞后臺數(shù)據(jù)庫所存儲的數(shù)據(jù),動態(tài)腳本在處理數(shù)據(jù)庫中的數(shù)據(jù)時可能出錯,各級頁面不再具有正常的觀感。被攻擊站點也可能成為惡意軟件的分發(fā)點,訪問這些網(wǎng)站的網(wǎng)民可能遭受惡意代碼的侵襲,用戶的系統(tǒng)被植入木馬程序從而完全為攻擊者控制。

 

圖1:SQL注入攻擊示意圖 

圖1:SQL注入攻擊示意圖

 

4、防御“SQL注入”的思路

盡管由于攻擊的泛濫,人們防護SQL注入的安全意識已大為提升,但仍然有眾多的人缺乏系統(tǒng)、具體的防護概念。下面將簡要介紹如何以一種綜合的方法來正確防護SQL注入。如下圖2所示,理想的解決思路是在Web應用生命周期的各個階段做相應的努力。

圖2:基于Web生命周期的SQL注入防護方法

圖2:基于Web生命周期的SQL注入防護方法

1)開發(fā)階段

在編碼階段需要對輸入進行細致的驗證,使用靜態(tài)查詢,如使用參數(shù)化聲明。且遵循“最小權限準則”,即只賦予應用程序完成其功能的最基本權限。以下是關于最小權限的一些建議:

不要使用root權限訪問數(shù)據(jù)庫

為數(shù)據(jù)表設定限制的可讀/可寫權限

慎用數(shù)據(jù)庫存儲過程

2)測試階段

在測試階段采用以下兩種方式確保Web應用程序代碼的安全性:第一,采用源代碼審核方式,從編程者角度審視代碼是否存在漏洞;第二,執(zhí)行滲透測試,從攻擊者角度檢查代碼的安全性。需要注意的是,盡管完成以上兩步,仍不能確保100%的安全,但這兩種方法對于確保應用程序質(zhì)量是必須的。

3)產(chǎn)品化階段

在產(chǎn)品化階段,Web應用程序已經(jīng)正常上線,并對外提供服務。但還是會發(fā)現(xiàn)Web應用存在安全隱患,此時整改代碼對各類組織來說已經(jīng)不現(xiàn)實了,因為需要付出較大代價。這時,可以部署專用的Web應用防火墻(Web Application Firewall,簡稱WAF),以大幅提升Web應用的安全等級。

【編輯推薦】

  1. 心情墻插件SQL注入及XSS漏洞分析和修復
  2. 網(wǎng)站SQL注入防御實戰(zhàn)演示經(jīng)典版!
  3. 如何斬斷SQL注入式攻擊的瘋狂魔掌?
  4. 企業(yè)應當如何應對SQL注入式攻擊
  5. 對利用Linq清除Sql注入式攻擊的深入解剖
責任編輯:佟健 來源: 51CTO.com
相關推薦

2024-06-27 10:55:21

2009-01-16 10:40:50

2011-08-23 09:52:31

CSS

2015-11-18 14:14:11

OPNFVNFV

2014-07-30 10:55:27

2025-02-12 11:25:39

2016-12-29 13:34:04

阿爾法狗圍棋計算機

2016-12-29 18:21:01

2019-06-04 09:00:07

Jenkins X開源開發(fā)人員

2013-05-23 16:23:42

Windows Azu微軟公有云

2014-07-15 10:31:07

asyncawait

2021-06-17 07:08:19

Tapablewebpack JavaScript

2012-05-18 16:54:21

FedoraFedora 17

2014-07-21 12:57:25

諾基亞微軟裁員

2016-11-08 19:19:06

2016-11-03 13:33:31

2013-11-14 16:03:23

Android設計Android Des

2011-05-13 09:43:27

產(chǎn)品經(jīng)理PM

2019-08-05 10:08:25

軟件操作系統(tǒng)程序員

2019-04-28 09:34:06

點贊
收藏

51CTO技術棧公眾號