圖文詳解網站SQL注入攻擊解決全過程
【51CTO.com 綜合消息】2009年3月17日上午,冠群金辰公司的工程師小李剛到公司,就接到了用戶的電話:“怎么回事?我們的網站從今天早上開始就不能正常訪問,是不是被黑了?”網站出了問題的用戶顯得格外著急。
小李打開用戶的網站主頁,發現果然無法訪問,頁面一片空白,只是顯示出如圖1的一行英文,果然是受到了黑客攻擊:
![]() |
圖 |
找到問題
小李當即決定趕到用戶現場解決問題,確定網站受到了何種攻擊。趕到現場之后,經過簡單的測試,他判斷用戶主頁是被進行了SQL注入攻擊,因此不能正常訪問。
什么叫做SQL注入?其實就是一種利用一些網站程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷從而使應用程序存在的安全隱患,提交一段數據庫查詢代碼,從而獲得某些非公開數據的黑客攻擊行為。也就是所謂的SQL Injection。
于是小李利用專業的工具,對用戶的網站進行了風險評估。結果不出所料,用戶的網站存在著不少可以被黑客們利用的漏洞。
首先小李使用專業的測試工具,對網站進行了測試評估,評估結果如圖:
![]() |
圖 |
從工具測試來看,此網站共有6個SQL注入點,48個 跨點攻擊點!因此這個網站存在著很大的安全風險,需要立即對代碼的安全加固進行防御,以保證網站的安全。
解決問題
隨后,冠群金辰工程師對用戶網站代碼進行了人工分析,針對SQL的注入點進行查找,通過對數據庫進行分析,發現早在2月份,用戶的數據庫已經被進行了SQL注入,以下是通過分析找到的多個表的注入點,如圖:
![]() |
圖 |
小李很快就將通過SQL注入而被破壞的數據進行了恢復,并且針對檢測出來的漏洞,對用戶網站進行了全面的安全加固,使網站得以正常訪問。而整個過程,從小李來到客戶現場之后到最終解決問題,只不過用了區區1小時!
小李告訴用戶,SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區別,所以目前市面的防火墻都不會對SQL注入發出警報,如果管理員沒查看IIS日志的習慣,可能被入侵很長時間都不會發覺。直到一段時間之后發現網頁不能訪問,才會發現網站早已經被侵入。而在發現網站被進行了SQL注入之后,一定要對網站應用程序進行多方面的測試查找,這樣才能找到注入點,并對網站進行全面加固。
想要避免網站受到SQL注入,冠群金辰工程師有以下安全建議:
1.建議關閉或刪除不必要的交互式提交表單頁面,因為他們是黑客進行SQL注入的途徑,關閉這些交互式頁面可有效的阻止某些XSS跨站腳本的攻擊與注入。而最有效的防治注入及跨站腳本攻擊的方法,是在代碼層就屏蔽掉不安全的script等危險字符。
2.對漏洞注入點相關代碼進行代碼及SQL注入關鍵字的過濾,以規范代碼安全性。
3.不要在服務器端放置備份的文件以免受到感染,或備份的文件含有漏洞,造成切入點,比如index1.asp index2.asp products1.asp等。