2010-06-09 61 views
1

實際運行SQL命令的SQL注入是一回事。但是,注入實際上不運行有害查詢但可能會告訴您有關數據庫的有價值的數據的那些數據是否被視爲SQL注入?或者它只是用來構建有效的SQL注入?報告錯誤代碼考慮SQL注入?

一個例子可以是

set rs = conn.execute("select headline from pressReleases 
where categoryID = " & cdbl(request("id"))) 

傳遞這種可能不會變成一個數字值的字符串會導致

Microsoft VBScript runtime error '800a000d' 
Type mismatch: 'cdbl' 

它會告訴你,有問題的列只接受數字數據因此可能是整型或類似的類型。

我似乎在很多討論SQL注入的頁面中發現了這一點,但如果這本身被認爲是SQL注入,那麼並沒有真正得到答案。我的問題的原因是我有一個報告SQL注入漏洞的掃描工具,並報告了VBScript運行時錯誤「800a000d」作爲發現的原因。

+1

僅僅因爲你不一定知道如何構建惡意攻擊媒介,並不意味着沒有其他人這樣做。在sql中使用綁定參數來消除任何注入的可能性。 – Cheekysoft 2010-06-09 15:36:50

回答

4

這顯然是一個SQL注入漏洞,需要修復。

有你的場景此有幾個原因:

  • 找出如你描述可能是有用的攻擊者,格外如果他們有其他的攻擊向量的附帶信息。
  • 發現此漏洞的攻擊者將被鼓勵去尋找更多。這裏的Sl may可能意味着其他地方的sl sl。
  • 在安全方面,重要的是不要太聰明。你的攻擊者可能比你知道更多,或者更多的東西。因此,看起來像你所容忍的脆弱性可能是對其他人敞開的大門。

所以是的,你的工具正在做正確的事情。

+0

報告這樣的發現,我可以理解,因爲它公開了一些最喜歡的信息不應該公開的信息。但它是否仍然滿足SQL「注入」攻擊的標準?什麼是官方定義,將這個SQL注入?這就是我試圖找到的;) – inquam 2010-06-09 11:58:53

+0

SQL注入確實被定義爲一個動作,用戶使用特殊格式的輸入來執行sql命令。由於cdbl(),使用SQL可能無法進行注入。但是,正如Phil Wallach所說,用戶可能無法做到這一點 - 所以這是一個可能發生sql注入的地方。因此,這不是一個「sql注入」,但它是一個「sql注入漏洞」。 (想象一下,您有時會移除cdbl--立即可以注射) – 2010-06-09 12:10:37

+0

我不是安全專家,所以我不能給出定義。我相信最好避免所有可能的漏洞,即使它們沒有明確的危險。 – 2010-06-13 15:04:48

2

我會說是!你注入一個SQL字符串並獲取你不應該得到的信息。我認爲這已經「有害」了。