iT邦幫忙

0

資料庫資料被植入惡意連結

table數個欄位內的資料後面被植入惡意連結,環境:A台是web(IIS6.0) , B台是sql ,都在防火牆內(SQL的port是關的), 區域內無其他pc.
這是那裡出現漏洞? 還有他們是用那些方法植入資料?
謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
48
魯大
iT邦高手 1 級 ‧ 2009-03-10 10:24:13
最佳解答

這是駭客利用「SQL Injection」的手法進行攻擊
這種手法已經很久了,而且也很難防犯
一般都是自行注意自己的程式碼內容
是否出了什麼漏洞,使得他們有洞可鑽

SQL Injection (資料隱碼)– 駭客的 SQL填空遊戲(上)
游擊式的SQL Injection攻擊
SQL資料隱碼攻擊-維基百科

以上提供給你做參考..

30
cheng
iT邦好手 1 級 ‧ 2009-03-10 10:33:48

這部分大部分都是SQL Injection 攻擊
只能說妳查調寫入資料庫的IP就是你A台的IP
所以要快點修補網頁程式,否則會遭植入惡意連結或是木馬喔

28
sheng514
iT邦新手 1 級 ‧ 2009-03-11 09:10:27

首先先利用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攻擊 之外還要確認網路上是否無人中毒或者主機是否有無中毒

20
neil2003
iT邦新手 4 級 ‧ 2009-03-11 13:49:46

這篇可以試試看!!!

http://haloua.cn/article.asp?id=167

player iT邦大師 1 級 ‧ 2009-03-11 14:13:40 檢舉

看過 http://haloua.cn/article.asp?id=167

他是把id傳入的字串
或是限制傳入的字串長度
既是id欄位
就不用傳太長的字串給他
直接接到 SQL的 select 的條件式去用
所以 sql字串在串接時, 用 ";"字元, 隔開不同的SQL命令

所以
還是對所有組SQL命令字串的地方
都撿查一下吧

24
lemonest
iT邦新手 4 級 ‧ 2009-03-11 17:10:28

如同前面所說的, 這是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

player iT邦大師 1 級 ‧ 2009-03-12 19:02:41 檢舉

用字串串接sql命令
也可以啦

只是要對於要組進去的變數
要額外處理過

我有寫了大量資料修復的方法了
需要的請翻上去看

但前題是
漏洞不補
資料修了等於白修
明知為數值的欄位
用先轉成數值後再組字串
或是單引號都取代成連續2個單引號

我要發表回答

立即登入回答