◆馮貴蘭 李正楠
(1.中國民航飛行學院(廣漢)現代教育技術中心 四川 618307;2.中國民航飛行學院(廣漢)航空工程學院 四川 618307)
淺析高校網站安全中SQL注入攻擊與防范方法
◆馮貴蘭1李正楠2
(1.中國民航飛行學院(廣漢)現代教育技術中心 四川 618307;2.中國民航飛行學院(廣漢)航空工程學院 四川 618307)
隨著教育信息化、數字化校園建設的不斷推進,高校校園網中部署了各種web門戶網站。但是SQL注入攻擊可以入侵數據庫、進行網頁掛馬,嚴重威脅了高校網站安全。本文通過SQL map工具講解了SQL注入攻擊原理和詳細操作步驟,高校網絡管理員在明白攻擊原理之后,可以使用對應的防護方法,降低web網站受到注入攻擊的風險,更好地保護高校網站的安全。
網絡安全;web應用;SQL注入
隨著教育信息化、數字化校園建設的不斷推進,高校校園網中部署了各種web門戶網站和應用系統。高校網站和應用系統是對外宣傳的窗口,是教學、管理和科研的重要平臺,在給師生來帶便利的同時也面臨著嚴重的安全問題。一方面,黑客熱衷于攻擊搜索引擎(如谷歌、百度)中前幾頁的教育網站;另一方面,開發高校網站和應用系統的程序員水平層次不齊,部分網站和應用系統由學生進行開發,學生們經驗欠缺,在程序開發時沒有過濾用戶輸入,保證其數據有效性,導致程序存在安全薄弱點,容易引來黑客攻擊,加大了高校網站被掛馬、數據泄露的風險。本文以滲透測試工具SQLmap為媒介闡述了SQL注入攻擊原理、詳細操作步驟和防范方法。
SQL注入攻擊主要是指黑客通過系統開發中存在的漏洞,向系統中注入不合法的SQL查詢語句,以此獲取系統中的敏感數據或服務器控制權。高校網絡安全管理員想要保護學校網站不受SQL注入攻擊,就要了解其入侵原理,本文通過SQLmap這款黑客常用的滲透測試工具來講解入侵原理和詳細操作步驟。
使用SQLMap 進行注入攻擊的步驟是手動檢測判斷注入點,逐步得到web數據庫信息(如數據庫類型、數據庫版本)、數據庫的名稱、當前數據庫中所有表名、列名,然后得到后臺管理員帳號、密碼,找到網站后臺地址并登錄。入侵者能夠使用找到的注入點,執行自己想要的SQL語句,隨意修改web數據庫中的內容(如把所有新聞標題改為入侵者想要的標題和內容),刪除表或數據庫等。
(1)手工檢測判斷注入點。
手工檢測系統是否存在漏洞非常關鍵,方法是打開網站中有參數傳遞的網頁(如通知公告中的/list.asp?id=11)用注入命令來進行測試。通常的做法是在某些網站 URL地址后加上一些特殊構造的字符串,根據返回的結果,以確定這個網站是否可以被注入,常用的判斷手段是單引號測試法和1=2測試法。操作方法是在某個測試url地址后加單引號’來判斷,提示錯誤。替換判斷語句為 and 1=1,返回正常頁面。替換語句為:and 1=2,頁面再次返回錯誤,由此可見,這個url地址有注入點可以被利用。
假如地址:http://www.test.com/Art_Show.php?id=2是注入點。(2)利用SQLMap注入數據庫。
打開滲透測試軟件SQLMap輸入:
Python sqlmap.py -u "http://www.test.com/Art_Show. php?id=2"
對注入點進行檢測,注入成功后,將會顯示數據庫管理系統的類型。
(3)獲取數據庫信息。
在SQLMap中輸入:python sqlmap.py -u "http://www. test.com/Art_Show.php?id=2" --current-db獲取當前數據庫名稱后,繼續輸入:python sqlmap.py -u "http://www.test.com/ Art_Show.php?id=2" -D mys tables
可以得到數據庫表。有了數據庫表名,下一步就是獲取列名,輸入:
python sqlmap.py -u "http://www.test.com/ Art_Show.php?id=2" -D mys -T zzcms_admin --columns
得到管理員表的列名。列名有了,下一步是獲取賬號和密碼,輸入:
python sqlmap.py -u "http://www.test.com/ Art_Show.php?id=2" -D mys -T zzcms_admin -C name, password --dump
得到name和password內的賬戶密碼。
在攻擊者擁有了賬號和密碼之后,登錄網站后臺,然后利用后臺的上傳功能上傳網頁木馬或者webshell,實施對服務器端的控制、添加一個管理員賬號等。
知道SQL注入的原理后,高校網站管理員應當從下面五個方面采取防護措施:
(1)對數據進行有效性檢測。加強對客戶端輸入數據的驗證,限制文本輸入框(如登錄系統、搜索系統)只輸入英文小寫、數字和下劃線,過濾用戶輸入參數中的危險字符、特殊字符,如單引號,分號、括號等。此外,還應限制數據長度,例如限制文本框的輸入長度在10個字符以內,因為一般用于SQL注入攻擊的語句都有一定長度,通過這樣的限制可以增加黑客攻擊的難度。
(2)屏蔽網站錯誤返回頁面。通常入侵者會利用網頁SQL注入點提交攻擊代碼,提交后根據頁面回顯信息得到網站使用的哪種數據庫系統、數據庫版本、網站目錄等關鍵信息。若網站未關閉 aspx錯誤遠程顯示,攻擊者就能獲取網站目錄地址及函數調用堆棧等重要信息。若Web網站目錄未關閉匿名瀏覽權限,攻擊者可作為下一步攻擊的基礎,如攻擊過程中的各種臨時文件放入此目錄,便于觀察和調試。因此,開發人員可以專門做一個簡單的網站訪問錯誤頁面,給予用戶訪問提示,而不包含任何關于服務器或網站的有用信息。
(3)過濾敏感字符。增加過濾器屏蔽特殊字符,例如%,#,@,CR等可能被利用的查詢字符串。對用戶在地址欄的輸入、傳入的參數等進行校驗,通過正則表達式,對單引號、敏感字符串進行判斷和過濾,不讓特殊構造的非法SQL語句執行,阻止非法用戶不經過授權進行登錄。
(4)將數據進行封裝和加密。編程時,通過參數化的語句來傳遞用戶輸入變量,而不是將其直接嵌入到SQL語句中。或者使用session語句傳遞用戶輸入變量,而不是cookie,不要攻擊者采集cookie里的口令信息。另外,對管理員和普通用戶登錄網站的用戶名和口令使用加密方式保存,增加數據的安全性。
(5)定期檢查網站。使用專業的漏洞掃描工具來尋找可能被攻擊的點,每隔一段時間定期掃描網站漏洞,一旦發現存在漏洞,立即修復,提前防范SQL注入攻擊。
隨著高校信息化的發展,學校的網站應用越來越多,一些新型的SQL注入攻擊方法層出不窮,對于高校網站中的SQL注入攻擊的防范也需不斷加強。首先,高校在開發應用時應盡量采用先進的技術,規范編程語句,過濾用戶輸入,提前做好防護措施。其次,在網站開通前進行全方位的安全測試,在后期維護網站時定期使用漏洞掃描工具進行掃描,及時修復網站漏洞。最后,使用web防火墻阻擋網站攻擊,盡可能地降低SQL注入攻擊帶來的網絡安全風險,保證高校web網站的安全。
[1]焦玉華.WEB系統中SQL注入防御方法的研究[J].大眾科技, 2015.
[2]方友志.基于高校Web應用中SQL注入攻擊與防范研究[J].電腦知識與技術, 2016.
[3]范義山.SQL注入防護—從一款注入工具入侵原理入手[J].科技視界, 2016.
[4]林金娜.淺談高校網站安全中 SQL注入問題[J].網絡安全技術與應用,2016.
[5]歐賢,楊世海.SQL注入攻擊原理與防范技術研究[J]. 數字技術與應用,2016.
[6]王云,郭外萍,陳承歡.Web項目中的SQL注入問題研究與防范方法[J].計算機工程與設計,2010.
[7]王湘渝,劉豪.SQL注入攻擊及其防范技術研究[J]. 網絡安全技術與應用,2009.
[8]黃曉兵,彭健,余昌騏.SQL注入攻擊方法及預防措施的研究[J].計算機光盤軟件與應用,2010.
中國民航飛行學院青年基金項目(Q2014-118)。