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