這是駭客利用「SQL Injection」的手法進行攻擊
這種手法已經很久了,而且也很難防犯
一般都是自行注意自己的程式碼內容
是否出了什麼漏洞,使得他們有洞可鑽
SQL Injection (資料隱碼)– 駭客的 SQL填空遊戲(上)
游擊式的SQL Injection攻擊
SQL資料隱碼攻擊-維基百科
以上提供給你做參考..
這部分大部分都是SQL Injection 攻擊
只能說妳查調寫入資料庫的IP就是你A台的IP
所以要快點修補網頁程式,否則會遭植入惡意連結或是木馬喔
首先先利用SQL Query Analyzer 先確認資料庫的欄位資料內是否真有惡意連結
因為我們公司之前發生過類似的事情
Web Server 透過 .NET or ASP 存取 DB Server
做法都跟一般設定相同
但是有一天無論哪一個User 只要開網頁連上 Web Server 的首頁都會出現開新視窗連到駭客網站(下載ActiveX元件與色情圖片)
本來以為是 Web Server 中毒 或者是DB Server 有被植入惡意連結
後還發現是因為Lan 內有NB中毒,該病毒的行為模式是透過廣播方式擷取 Http 封包,然後將內文加上該段開新視窗的語法後再回給 User PC 然後再呈現在IE上
因此除了SQL Injection攻擊 之外還要確認網路上是否無人中毒或者主機是否有無中毒
這篇可以試試看!!!
看過 http://haloua.cn/article.asp?id=167
了
他是把id傳入的字串
或是限制傳入的字串長度
既是id欄位
就不用傳太長的字串給他
直接接到 SQL的 select 的條件式去用
所以 sql字串在串接時, 用 ";"字元, 隔開不同的SQL命令
所以
還是對所有組SQL命令字串的地方
都撿查一下吧
如同前面所說的, 這是sql injection的攻擊所造成的, 建議你可以做下面幾件事
1.找出出問題那幾天的IIS LOG檔, 查查裡面的LOG, 看看攻擊是從哪些IP所發出的,你可以看到許多在URL上直接下SQL指令的,例如:
GET /cc/cc_detail1.asp ccno=0000000697%20AnD%20(sElEcT%20ChAr(94)%2BcAsT(CoUnT(1)%20aS%20VaRcHaR(100))%2bChAr(94)%20fRoM%20[mAsTeR]..
那些IP都有問題, 用你的防火牆把這些IP先擋起來, 如果你有IDS的話, 直接把有這些特徵的SESSION擋掉, 如擋掉url裡有"sElEcT"文字的, 沒有人會這樣KEY英文字的吧!
2.找出你的資料庫, 看看哪些欄位被改, 再查查哪些網頁會用到這個欄位的資料,把這些網頁的程式優先改寫,這些網頁通常是URL後有用?號傳值的, 例如:
http://www.com.tw/ShowData.aspx?id=1234
你網頁裡抓資料的程式寫成如下樣子就有可能被sql injection
"select * from datatable where id=" + Request["id"].ToString()
所以最好的方式是把它改寫成用參數傳值, 不要用字串串接
"select * from datatable where id=@id"
3.如果你被改的地方太多, 一時無法全面改正網頁, 可以把這些網頁sql連線字串的帳號改成權限唯讀以應急, 當然前提是你的網頁本來就只是展示資料不用回存資料
4.如果你做了所有事, 資料庫還是一直被改, 你可以把一直被改的欄位設trigger,一但資料被改就把被改的時間記錄到其它table裡, 再以這個時間點去查IIS LOG裡這個時間點是哪個ip連過來的, 它做了什麼事, 好判斷如何處理.
提醒:
1.資料庫要有備份機制, 不然被改就哭不出來了.
2.寫網頁程式不能偷懶, 不能把sql指令用字串加來加去, 要用參數
3.要常看log